🎬 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 mode uses FFmpeg.wasm v0.12 — single-threaded, no SharedArrayBuffer needed. ~10 MB one-time download per session. Remux is lossless, no re-encoding.
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: .ts saves instantly (plays in VLC/mpv). .mp4 loads FFmpeg.wasm v0.12 (~10 MB, no SharedArrayBuffer) and remuxes in-browser — lossless, no re-encoding.
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.
📺

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 and devices. Both contain identical video and audio; only the container wrapper differs. No re-encoding happens either way.

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.