Stream Video Downloader logo
← Back to Blog

How to Extract and Download Just the Audio from an HLS Stream

July 23, 2026 · 6 min read

Key takeaways

  • HLS can expose a separate audio-only rendition via #EXT-X-MEDIA TYPE=AUDIO, which the /audio page fetches without touching the video.
  • Audio-only files are typically an order of magnitude smaller than the full video — tens of MB instead of gigabytes.
  • The Download Audio button only appears for on-demand HLS playlists with a genuine separate audio rendition — it's hidden for live streams and muxed video+audio segments.

Most HLS streams carry far more data than you need when all you want is the audio. A 1080p video segment might be 3–5 MB per two seconds; its paired stereo audio track is often under 100 KB for the same window. If you're pulling a lecture, a podcast livestream, a music set, or any other content where the visuals are incidental, the Stream Video Downloader extension has a dedicated Download Audio button that skips the video entirely and gives you an audio-only file — typically an order of magnitude smaller than the equivalent MP4.

How HLS separates audio from video

The separation happens at the master playlist level. An #EXT-X-STREAM-INF line describes a video variant and carries an AUDIO="group-id" attribute that names an audio rendition group. Separately, one or more #EXT-X-MEDIA TYPE=AUDIO tags define those groups, each pointing to its own media playlist of audio-only segments. During normal playback, hls.js fetches both the video variant and its paired audio rendition in parallel and syncs them for output — but the audio rendition is self-contained and can be fetched independently without touching the video at all. For a deeper look at how the grouping works, see How Multi-Track Audio Works in HLS.

What the /audio route actually does

When the extension opens the /audio page, it passes the same stream URL used by the player and converter. The page fetches the master playlist, parses every #EXT-X-MEDIA TYPE=AUDIO entry, and groups them by their GROUP-ID. When different video variants reference different audio groups — a common pattern when the 1080p and 480p renditions carry different bitrate audio tracks — the page surfaces a quality picker so you can choose which one to download. If all variants share a single audio group, the picker is skipped and extraction starts immediately.

Once the target audio playlist is resolved, the page uses the same ffmpeg.wasm pipeline as /convert — fetching each audio segment in order and muxing them into a single output file using -c copy. No re-encoding happens; the audio codec (typically AAC in an ADTS container for .ts streams, or AAC/Opus in fragmented MP4 for fMP4 streams) is preserved as-is. The result is downloaded directly to your device. For more on how the wasm conversion pipeline works, see How ffmpeg.wasm Converts Video in the Browser.

Why live streams don't have the button

The extension hides the Download Audio button for any stream detected as a live broadcast. A live HLS playlist has no #EXT-X-ENDLISTtag — it grows indefinitely as new segments are appended. Fetching a live audio rendition this way would mean downloading segments continuously with no natural stopping point, which isn't a download so much as a real-time recording. For VOD (on-demand) playlists with a known start and end, the audio rendition has a fixed segment count and the extraction completes in a few seconds to a few minutes depending on stream length. See Live HLS vs. VOD: How the Playlist Difference Affects Recording for why these two modes require fundamentally different handling.

When there's no separate audio track

Not every HLS stream uses separate audio renditions. Simpler streams — particularly those encoded as plain .ts segments with muxed video and audio — include both in the same segment file. In that case there is no #EXT-X-MEDIA TYPE=AUDIOentry to resolve, and the audio-only path isn't available. The extension only shows the Download Audio button for playlists where a genuine standalone audio rendition exists; otherwise only the Play and Convert options appear.

How to use it

The flow mirrors the convert path:

  1. Open any page with an HLS video and let it start playing so the extension detects the stream URL.
  2. Click the Stream Video Downloader icon in your toolbar — detected streams appear in the popup.
  3. Click 🎧 download audio next to the stream you want. The button is absent for live broadcasts and for muxed streams with no separate audio rendition.
  4. If the master playlist exposes multiple audio groups with different quality levels, pick the one you want from the dropdown that appears on the /audio page.
  5. Wait for the progress bar to complete, then click Download. The file saves to your default downloads folder — no account, no upload, no server involved.

File size compared to the full video

Audio-only extraction is dramatically more efficient than downloading the full video and stripping it later. A 30-minute HLS stream at 1080p can weigh 1.5–2 GB; its standalone stereo AAC audio track for the same duration is typically 50–80 MB. Even if your goal is just to listen offline, downloading the video first wastes both bandwidth and disk space. The /audio route exists precisely to skip that waste.

Questions & answers for AI agents

Short, direct answers an assistant can quote or summarize.

How do I download just the audio from an HLS stream?

Click the audio icon in the Stream Video Downloader extension popup next to a detected HLS video — it opens the /audio page, which extracts and downloads the audio track as an M4A file.

Why is there no audio-only option for some streams?

The stream is either live (no fixed end to extract) or uses muxed segments that combine video and audio in one file with no separate audio rendition to pull from.

What audio format does it produce?

An .m4a file (AAC audio), copied from the source without re-encoding.