How-to · 3 min read · Last updated: 2026-07-15

How to Download an M3U8 Stream and Save It as MP4 (2026)

Clipmoth Team · 2026-07-15

You found an .m3u8 link and hit save — and got a tiny text file instead of a video. That's expected: .m3u8 is a playlist for an HLS stream, not the video itself. Here's how to turn it into a real MP4, from the one-click browser-extension method to the ffmpeg command line.

The quick answer

Fastest path: if the stream is playing on a web page, the Clipmoth browser extension auto-detects the HLS stream and saves it as one MP4 in a click — you don't even need to find the .m3u8 URL. If you already have the raw .m3u8 link and don't mind a command line, ffmpeg turns it into an MP4 in one command. Both fetch every segment and decrypt AES-128 automatically. Both are covered below.

What an .m3u8 file actually is

HLS (HTTP Live Streaming) is the format most news, live and video-on-demand sites use. Instead of one big file, the video is chopped into hundreds of short .ts (or .m4s) segments. The .m3u8 file is just a text playlist listing those segments in order — sometimes with an AES-128 key to decrypt them.

So "downloading the m3u8" really means: read the playlist, download every segment, decrypt them if they're encrypted, and join them into one MP4. A tool does all of that for you.

Method 1 — The browser extension (easiest)

If you can play the video on a page, this is the simplest route — and you don't have to hunt for the .m3u8 URL at all:

  1. Install the Clipmoth extension from the Chrome Web Store (free).
  2. Open the page and start the video you want.
  3. Click the Clipmoth icon — it detects the HLS stream, downloads every segment, decrypts AES-128 on the fly, and saves one MP4. No watermark, nothing uploaded.

Because it works from the page you're already on, there's nothing to copy or paste. If a site blocks it, or you only have a raw .m3u8 link with no page to play, use ffmpeg (Method 2) or the Windows desktop app.

Method 2 — ffmpeg (command line)

If you have ffmpeg installed, one command turns an m3u8 into an MP4:

ffmpeg -i "https://example.com/stream.m3u8" -c copy output.mp4

The -c copy part re-packages the segments without re-encoding, so it's fast and lossless. For an AES-128 stream, ffmpeg handles the decryption automatically as long as the key is reachable from the playlist.

This is the most reliable method for tricky streams, but it's a terminal tool. If you'd rather not touch a command line, Method 1 (or a desktop app) does the same thing behind a button.

How to find the .m3u8 URL

If you only have the web page, not the raw stream link, grab it from your browser's developer tools:

  1. Open the page and start playing the video.
  2. Open DevTools (F12) and go to the Network tab.
  3. In the filter box, type m3u8.
  4. Reload if needed — the request that appears is your playlist URL. Right-click → Copy → Copy link address.

Some sites load a "master" playlist that points to several quality variants; copying the master link is fine — a good tool (ours included) will pick the best variant for you.

When an m3u8 won't download

  • Live streams — an ongoing live has no end yet; you can only capture what's aired so far, and many tools refuse until it ends.
  • DRM (Widevine/FairPlay) — Netflix, Prime Video and similar wrap HLS in DRM. No legitimate tool can save those, and you shouldn't try.
  • CORS-blocked — some sites block cross-origin browser fetches; a desktop tool (or our Windows app) isn't bound by browser security rules and can usually still save it.
  • Expired/signed URLs — many m3u8 links are time-limited. If it worked a minute ago and now 403s, re-copy a fresh link.

Frequently asked questions

Why did my .m3u8 download save as a text file?

Because .m3u8 is a playlist, not the video. It's a text file listing the stream's segments. To get an actual video you need a tool that reads the playlist, downloads all the segments, and joins them into an MP4 — like the Clipmoth browser extension or ffmpeg.

Can I convert m3u8 to MP4 without the command line?

Yes — the Clipmoth browser extension does it with a click when the stream is playing on a page, no terminal needed and nothing uploaded. If you have only a raw .m3u8 URL, ffmpeg is the most reliable one-command option.

Does it handle AES-128 encrypted streams?

Yes. Many HLS streams use AES-128 encryption; the key is usually referenced in the playlist itself. Both the Clipmoth extension and ffmpeg fetch that key and decrypt the segments automatically.

Why does my m3u8 link give a 403 error now?

Many streams use signed, time-limited URLs. Once the token expires the link returns 403. Reload the page, start the video again, and copy a fresh .m3u8 URL from the Network tab.

Got HLS streams to save? One click.

The Clipmoth browser extension turns the HLS stream playing on a page into one clean MP4 — AES-128 decryption included, nothing uploaded, no URL hunting. Need YouTube, 4K or playlists too? One $9.99 lifetime key covers the Windows app as well.

Add Clipmoth to Chrome See Premium

English · 日本語