How to download an m3u8 video — save any HLS stream as MP4
Updated 28 October 2026 · 5-minute read
You opened developer tools, found a link ending in .m3u8, pasted it into a new tab — and got a wall of text instead of a video. That's normal. An m3u8 link isn't a video file; it's a playlist that tells a player where the video's pieces live. This guide covers what that means and three working ways to turn it into one MP4 you can keep.
First, what you're actually looking at
An .m3u8 file is the index of an HLS stream. It lists the stream's qualities (1080p, 720p…) and, for each one, the addresses of hundreds of short video segments — a few seconds each. The player fetches them in order and stitches the playback together live. So "downloading the m3u8" gets you a text file; what you want is a tool that fetches every segment, decrypts them if needed, and joins them into one file. (Full explainer: how HLS streaming works.)
Option 1 — a browser extension (easiest)
The least-friction path is an extension that watches the page and does the whole pipeline for you. With Vidtuck it looks like this:
- Play the video on the page, so the stream starts loading.
- Click the Vidtuck icon in your toolbar — the stream appears in the list, marked HLS, with its duration and quality menu.
- Pick a quality and capture. Vidtuck fetches all segments in parallel, retries drops, decrypts AES-128 where the stream uses it, and assembles the result on disk — then the finished file lands in your Downloads.
No copying URLs, no command line, and it works even when the m3u8 address is buried in the player's network traffic. Everything runs locally in your browser.
Option 2 — VLC (no install beyond VLC)
VLC can open a network stream and record it: Media → Open Network Stream, paste the m3u8 URL, then convert/save. It works for simple streams, with caveats — VLC records at playback speed (a 1-hour video takes an hour), quality selection is awkward, and streams that need the page's cookies or headers will refuse to open outside the browser. It's a fine fallback when you already have a clean, public m3u8 URL.
Option 3 — ffmpeg (most control, most friction)
If you're comfortable in a terminal, ffmpeg handles HLS natively:
ffmpeg -i "https://example.com/video/master.m3u8" -c copy output.mp4
-c copy joins segments without re-encoding, so it's fast and lossless. The friction is the same as VLC's, squared: you must extract the exact URL from devtools yourself, and any stream that checks cookies, referer headers or session tokens will 403 outside the browser — which is precisely the problem an in-browser extension doesn't have, since it downloads from inside the same session as the player.
When none of these will work
If the stream carries real DRM — Widevine, FairPlay, PlayReady, the kind used by Netflix, Prime Video and most paid studio platforms — the segments are encrypted with keys your browser never receives in the open, and no legitimate tool can save them. Anything claiming otherwise is either lying or breaking the law. We wrote up the mechanics here: why DRM videos can't be downloaded.
A note on rights
The same rule applies whichever tool you use: save streams you have the right to keep — your own uploads, openly licensed material, or content your access terms let you retain, like course lectures and webinar replays.