How to Download an HLS Stream
Four steps — no software installation required.
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.
Choose Output Format
Select .TS for instant save (plays in VLC/mpv) or .MP4 for a remuxed file that works everywhere.
Analyze & Pick Quality
Paste the URL and click Analyze. Choose your preferred resolution from the quality cards that appear.
Download & Save
Click Start Download. Segments are fetched in parallel, assembled in your browser, then saved to your device.
About This Tool
What makes this HLS downloader different from other tools.
100% Private
✓ No serverParallel Downloads
✓ 6 workersTrue MP4 Output
✓ FFmpeg.wasm v0.12Original Format Save
✓ Raw bytes · no FFmpeg.mp4, .m4a, .flac, etc.). Use ?fmt=fmp4 in the URL to pre-select this mode.ALAC Audio Export
✓ Apple Lossless.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 playlistsError Resilience
✓ Auto-retryFrequently 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.