Stream HTTP Live Streaming

M3U8 / HLS

Apple invented it, every Apple device plays it, and none of them will save it.

In short

An .m3u8 file is a playlist, not a video: a few kilobytes of text listing thousands of small segments to be fetched in order. That design is why HLS plays flawlessly on every Apple device and why "save this file" produces a text document. Downloading one means fetching every segment and rebuilding a file that never existed.

30 July 2026

Opened without help by

iPhone · iPad Opens
Mac Opens
FoxDL Opens

HLS is Apple's own specification and has first-class support everywhere — Safari, AVPlayer, AirPlay. What is not supported anywhere in the system is turning a live stream into a file on disk. Playing and keeping are entirely different problems.

The facts

Full name HTTP Live Streaming; the playlist is an M3U in UTF-8
Kind Streaming protocol, delivered as a text playlist
Extensions .m3u8 (the playlist), .ts or .m4s (the segments it points at)
Published 2009, Apple; standardised as RFC 8216 in 2017
Typical segment length 2 to 10 seconds each — an hour of video is hundreds to thousands of files
Master vs media playlist A master lists quality levels; each of those points at a media playlist of actual segments
Video inside the segments H.264 or HEVC, occasionally AV1
Live streams The playlist is refetched every few seconds and grows as the broadcast continues

A table of contents, not a book

Open an .m3u8 in a text editor and you will find a few dozen lines: a header, some parameters, and a long list of addresses. That is the whole file. The video lives elsewhere, cut into segments of a few seconds each, sitting on a server as thousands of separate small files.

The player reads the list, fetches the first few segments, starts playing, and keeps fetching ahead of itself. When your connection slows, it switches to a lower-quality variant listed in the master playlist — a different set of segments, at a different bitrate — and does it between segments so you see a quality change rather than a pause. This adaptive switching is the reason the format won.

It also explains something that surprises people: there is no single file to have. The film you are watching does not exist as an object anywhere. It is a thousand pieces and a set of instructions.

Why saving it gives you a text file

Because that is what you saved. The browser asked for the address you gave it, received four kilobytes of playlist, and wrote them to disk. Everything you actually watched arrived through a thousand separate requests that the save operation knew nothing about.

Downloading HLS properly means doing what the player does, but to disk: read the playlist, choose a quality variant, fetch every segment in order, and then stitch them into one container. That final step is called remuxing — the video and audio are not re-encoded, only rewritten into a single MP4 with a proper index so the result can be scrubbed.

Two things make this harder than it sounds. Segment addresses are often relative and change per session, so a list fetched an hour ago may be dead. And streams are frequently encrypted with a key referenced in the playlist, delivered separately, and rotated during playback.

Getting one onto a device

Only ever for streams you have the right to keep — your own recording, your own IPTV subscription, a broadcaster who offers a download. What follows is how the mechanism works, not permission to point it anywhere.

  1. Let a download engine handle the segments

    Fetching a thousand files and remuxing them is exactly the job FoxDL's downloader does with an HLS source: it walks the playlist, pulls the segments in parallel, and writes one MP4 that scrubs like a normal file. What arrives is a file, not a folder of pieces.

  2. Take the direct file when one exists

    Many sites serve both HLS and a plain progressive MP4. The MP4 is one request, one file and no rebuilding — always the better option when it is on offer.

  3. Accept that some cannot be kept

    Streams protected with DRM — FairPlay, Widevine — are encrypted end to end and are not downloadable by design. No tool changes that, and one claiming to is lying about something.

Where HLS downloads go wrong

A file with no seek bar

Segments concatenated without remuxing produce a playable file with no index. It plays from the start and jumps nowhere. Remuxing writes the index that fixes it.

A live stream that never finishes

A live playlist has no end — it keeps growing. Downloading one is recording, and it stops when you stop it, not when the file ends.

A link that worked yesterday

Playlist addresses are usually signed and time-limited. An .m3u8 saved this morning frequently points at nothing by the afternoon.

The long version What a download manager does that a web browser will not Why transfers stop when you switch apps, what resuming really requires, and how streams become files.

Questions about this format

Where these facts come from

Nearby formats

Your library, finally in one place.

Free to download. No account, no sign-up, nothing to hand over.

Download on the App Store