Is there an existing feature request for this?
Problem or Motivation
I listen to music through YouTube playlists that aren't available in YouTube
Music, so I rely on YouTube mode. I only want the audio — I don't need the
video surface at all.
Today, even when the video isn't visible (window closed, or popped out and
hidden), YouTube mode still loads and decodes the full video stream via
movie_player. Per docs/youtube.md, playback runs through
YouTubeWatchWebView loading the real watch page. Multiple users have
reported the app running hot / draining battery during YouTube playback,
which this explains. There's no way to just listen.
Proposed Solution
Add a setting (Settings → YouTube) such as "Always play audio-only" that
plays regular YouTube content as audio-only, avoiding video decode.
- Prefer requesting an audio-only stream (e.g. itag 140) through the
existing player path.
- Keep audio playing with the window closed, matching current Background
Audio behavior.
- In audio-only mode, the YouTube player bar still shows
title/channel/progress + transport, but hides video-only affordances
(PiP, quality, fullscreen).
Benefits: lower bandwidth, less CPU/GPU load and heat, better battery on
laptops.
Alternatives Considered
- Popping out the video and hiding the window: works for hiding the picture,
but the video stream is still decoded, so it doesn't fix the heat/battery
cost.
- Using YouTube Music mode instead: not viable, since the tracks I want
aren't all available in YTM — that's why I'm in YouTube mode.
Feature Area
Playback / Audio
How important is this feature to you?
Would improve my experience
Mockups or Examples
Metrolist has the same well-received request:
MetrolistGroup/Metrolist#948
("Force audio-only mode (prevent video loading entirely)")
Additional Context
Per the AI-Assisted Contributions guidance in CONTRIBUTING.md, here's a
prompt describing the intended implementation (sharing intent before code):
Prompt: In the Kaset macOS app, add a "true audio-only" mode for YouTube
playback (YouTube source, not YouTube Music).
Context from docs/youtube.md: playback runs through YouTubePlayerService
- a singleton
YouTubeWatchWebView loading www.youtube.com/watch?v={id};
an extraction user script reveals #movie_player video via a
.kaset-visible ancestor chain; surfaceLocation is .inline/.floating/.none.
Goal:
- Add a
youtubeAudioOnly boolean to SettingsManager, surfaced in
Settings → YouTube as "Always play audio-only."
- When enabled, avoid presenting/decoding the video surface; keep audio
playing with the window closed (like existing Background Audio). Prefer
an audio-only stream (itag 140) if feasible; if a pure audio stream isn't
practical in the WKWebView, fall back to keeping the video element hidden
and paused-visually while still routing audio, and document the limitation.
- YouTube player bar keeps title/channel/progress + transport, hides
video-only affordances (PiP, quality, fullscreen) in audio-only mode.
- Don't change the YouTube Music side or shared
PlayerBar music behavior.
- Respect the
PlaybackArbiter "one audio source at a time" rule.
Add/extend tests with MockYouTubeClient and the injectable
YouTubeWatchPlaybackControlling. Update docs/youtube.md.
Non-goals: ad blocking, YouTube Music, Shorts.
Is there an existing feature request for this?
Problem or Motivation
I listen to music through YouTube playlists that aren't available in YouTube
Music, so I rely on YouTube mode. I only want the audio — I don't need the
video surface at all.
Today, even when the video isn't visible (window closed, or popped out and
hidden), YouTube mode still loads and decodes the full video stream via
movie_player. Per docs/youtube.md, playback runs throughYouTubeWatchWebViewloading the real watch page. Multiple users havereported the app running hot / draining battery during YouTube playback,
which this explains. There's no way to just listen.
Proposed Solution
Add a setting (Settings → YouTube) such as "Always play audio-only" that
plays regular YouTube content as audio-only, avoiding video decode.
existing player path.
Audio behavior.
title/channel/progress + transport, but hides video-only affordances
(PiP, quality, fullscreen).
Benefits: lower bandwidth, less CPU/GPU load and heat, better battery on
laptops.
Alternatives Considered
but the video stream is still decoded, so it doesn't fix the heat/battery
cost.
aren't all available in YTM — that's why I'm in YouTube mode.
Feature Area
Playback / Audio
How important is this feature to you?
Would improve my experience
Mockups or Examples
Metrolist has the same well-received request:
MetrolistGroup/Metrolist#948
("Force audio-only mode (prevent video loading entirely)")
Additional Context
Per the AI-Assisted Contributions guidance in CONTRIBUTING.md, here's a
prompt describing the intended implementation (sharing intent before code):
Prompt: In the Kaset macOS app, add a "true audio-only" mode for YouTube
playback (YouTube source, not YouTube Music).
Context from docs/youtube.md: playback runs through
YouTubePlayerServiceYouTubeWatchWebViewloadingwww.youtube.com/watch?v={id};an extraction user script reveals
#movie_player videovia a.kaset-visibleancestor chain;surfaceLocationis.inline/.floating/.none.Goal:
youtubeAudioOnlyboolean toSettingsManager, surfaced inSettings → YouTube as "Always play audio-only."
playing with the window closed (like existing Background Audio). Prefer
an audio-only stream (itag 140) if feasible; if a pure audio stream isn't
practical in the WKWebView, fall back to keeping the video element hidden
and paused-visually while still routing audio, and document the limitation.
video-only affordances (PiP, quality, fullscreen) in audio-only mode.
PlayerBarmusic behavior.PlaybackArbiter"one audio source at a time" rule.Add/extend tests with
MockYouTubeClientand the injectableYouTubeWatchPlaybackControlling. Update docs/youtube.md.Non-goals: ad blocking, YouTube Music, Shorts.