🎬 Free Browser Tool

HLS / M3U8 Stream Downloader

Paste any .m3u8 URL and download as .ts or .mp4 — right in your browser, no install needed.

⚙️ MP4 / Original / ALAC mode uses FFmpeg.wasm v0.12 — single-threaded, ~10 MB one-time download. MP4 remux is lossless. Original mode auto-detects format (saves FLAC as .flac, etc.). ALAC re-encodes audio to Apple Lossless (.m4a).
🧩 fMP4 stream detected — This playlist uses Fragmented MP4 segments (#EXT-X-MAP). The init segment will be prepended automatically. Use Original mode to auto-detect and save in the correct format (FLAC, MP4, etc.).
Download Progress
Initializing… 0 / 0
0
Segments
0 MB
Size
Speed
ETA
Preparing FFmpeg…
⚠ CORS: The stream server must allow cross-origin requests. Paywalled and DRM-protected streams will not work.
ℹ TS vs MP4 vs Original vs ALAC: .ts saves instantly (plays in VLC/mpv). .mp4 remuxes via FFmpeg.wasm (lossless). Original saves the raw bytes as-is (init segment + fragments, no FFmpeg) — works for fMP4, FLAC, and any format; file extension is auto-detected. .alac extracts and re-encodes audio to Apple Lossless, saved as .m4a.
Guide

How to Download an HLS Stream

Four steps — no software installation required.

1

Find the M3U8 URL

Open DevTools (F12), go to the Network tab, filter by "m3u8", then play the video. Right-click the request and copy the URL.

2

Choose Output Format

Select .TS for instant save (plays in VLC/mpv) or .MP4 for a remuxed file that works everywhere.

3

Analyze & Pick Quality

Paste the URL and click Analyze. Choose your preferred resolution from the quality cards that appear.

4

Download & Save

Click Start Download. Segments are fetched in parallel, assembled in your browser, then saved to your device.

Features

About This Tool

What makes this HLS downloader different from other tools.

🔒

100% Private

✓ No server
Everything runs inside your browser using JavaScript and WebAssembly. Your M3U8 URL, the downloaded video segments, and the output file never touch our servers — not even for logging.

Parallel Downloads

✓ 6 workers
Six concurrent fetch workers download segments simultaneously, saturating your available bandwidth. Live speed and ETA stats update in real time as the download progresses.
🎞️

True MP4 Output

✓ FFmpeg.wasm v0.12
Uses FFmpeg compiled to WebAssembly for a lossless, in-browser container remux. Single-threaded build — no SharedArrayBuffer required. Works in Chrome, Firefox, Edge, and Safari from a local file.
🧩

Original Format Save

✓ Raw bytes · no FFmpeg
Saves the stream exactly as received — init segment prepended, all fragments concatenated — with no re-encoding or remuxing. File extension is auto-detected from segment URLs (.mp4, .m4a, .flac, etc.). Use ?fmt=fmp4 in the URL to pre-select this mode.
🎵

ALAC Audio Export

✓ Apple Lossless
Extract and convert the audio track to Apple Lossless Audio Codec (ALAC) in a .m4a container — fully in-browser via FFmpeg.wasm. Perfect for music streams and archiving. Works with both TS and fMP4 source streams.
📺

Multi-Quality Streams

✓ Master playlists
Automatically detects master playlists and presents all available resolutions and bitrates as selectable quality cards. Works with both master and direct media playlists.
🛠️

Error Resilience

✓ Auto-retry
Failed segments are flagged individually without stopping the download. The final file is still saved, skipping only the segments that errored — useful for streams with occasional connectivity issues.
FAQ

Frequently Asked Questions

Common questions about HLS downloading.

.ts (MPEG Transport Stream) is the native HLS container — segments are concatenated directly, so it saves instantly. .mp4 is remuxed using FFmpeg.wasm in your browser, making it compatible with all players. .fMP4 handles modern HLS streams using the #EXT-X-MAP tag — the init segment is automatically fetched and prepended before remuxing. .alac extracts the audio track and re-encodes it to Apple Lossless, saving as .m4a. MP4/fMP4 are lossless remuxes; ALAC is a lossless audio re-encode.

Open DevTools with F12, click the Network tab, and type m3u8 in the filter box. Then play or seek the video on the page. A request ending in .m3u8 will appear — right-click it and copy the URL.

CORS is a browser security policy that blocks cross-origin requests unless the server explicitly allows them. Many public CDN streams allow CORS; private, paywalled, or authenticated streams typically don't. There is no browser-level workaround — use a native tool like yt-dlp or ffmpeg for those streams.

No. DRM systems like Widevine (Netflix, YouTube Premium) and FairPlay (Apple TV+) encrypt video at the hardware level. Even if segments download, they are unplayable without the decryption key — which is never exposed to web applications by design. No browser-based tool can bypass this.

No. This is a fully client-side tool. All downloading, processing, and file assembly happens inside your browser. Your M3U8 URL, segment data, and output file never leave your device. Verify anytime by watching DevTools → Network while using the tool.

Yes, but all segments are held in RAM before saving. A 1-hour HD stream can use 1–3 GB of memory. FFmpeg.wasm needs additional memory for MP4 remuxing. For streams over 2 hours, a native tool is more reliable: ffmpeg -i playlist.m3u8 -c copy out.mp4

Chrome 90+, Firefox 79+, Edge 90+, and Safari 15+ are all supported. MP4 mode uses the single-threaded FFmpeg.wasm build and does not require SharedArrayBuffer — it works in all these browsers from a local HTML file.

Original saves the raw stream bytes exactly as downloaded — no FFmpeg, no re-encoding. If the playlist uses #EXT-X-MAP (fMP4 streams), the init segment is fetched and prepended automatically. The output file extension is auto-detected from the segment URLs (.mp4, .m4a, .flac, etc.). Use this when you want the file untouched, or when FFmpeg remuxing fails. You can also pre-select it via URL: ?url=...&fmt=fmp4.

ALAC (Apple Lossless Audio Codec) is a lossless audio format natively supported by Apple devices, iTunes, and most modern players. Selecting .ALAC mode strips the video track, re-encodes the audio to ALAC at 44.1 kHz, and saves it as a .m4a file — entirely inside your browser via FFmpeg.wasm. It works with both .ts and fMP4 source streams. Since ALAC is lossless, there is no quality degradation from the original audio.