Comparison · CLI & Open-Source · HLS
Free M3U8 Downloader Tools (CLI & Open-Source) for 2026
Five free command-line and open-source M3U8 downloader tools tested on real HLS streams. ffmpeg, yt-dlp, N_m3u8DL-CLI, Streamlink, VLC. Commands, AES-128 handling, headers, and which tool fits which job. This guide is CLI and OSS only.
Looking for browser extensions instead? See our HLS Downloader Chrome Extension comparison for the Chrome/Edge/Brave route. This page covers terminal-based and open-source tools only.
Quick answer
The 5 best free CLI and open-source M3U8 downloader tools for 2026 are: ffmpeg (the universal video toolkit, infinite control, AES-128 support), yt-dlp (smarter site-aware extraction, 1,000+ platform handlers), N_m3u8DL-CLI (parallel segment download, popular on Windows, AES-128 friendly), Streamlink (live HLS capture, Twitch and live broadcast specialty), and VLC (real-time stream record, last-resort GUI option). All five are 100% free with no usage caps. Trade-off: command-line knowledge required. Pick by job: ffmpeg for general remuxing, yt-dlp for known sites, N_m3u8DL-CLI for Windows parallel, Streamlink for live, VLC for emergency capture.
Searching for a "free m3u8 downloader" returns a chaotic mix: open-source CLIs, freemium browser extensions, sketchy online converters, suspect GUI bundles. This guide deliberately narrows the scope to command-line tools and standalone open-source applications. No browser extensions (covered in our HLS Downloader Chrome Extension guide), no remote-server converters, no closed-source freeware. Just the five CLI and OSS options that genuinely work on real HLS streams.
All five tools here focus on legitimate use cases: saving content you own, archiving courses you purchased, capturing publicly licensed streams. None of them bypass DRM systems like Widevine or FairPlay used by Netflix, Disney+, or Prime Video. If you need background on the format itself, start with our M3U8 and HLS explainer.
1. Scope: why this guide is CLI & open-source only
"Free m3u8 downloader" is a noisy query. To stay useful, this guide draws a hard scope line:
- Included: command-line tools (ffmpeg, yt-dlp, N_m3u8DL-CLI, Streamlink) and standalone open-source desktop applications (VLC). All have publicly auditable source code under permissive or copyleft licenses. None impose download caps, watermarks, or telemetry.
- Excluded - covered elsewhere: Chrome and Edge browser extensions are covered in our HLS Downloader Chrome Extension comparison. They are a fundamentally different workflow (in-browser, session-aware) and worth a dedicated comparison.
- Excluded - structurally unreliable: online "m3u8 to mp4 converters" run on remote servers with no access to your cookies. They fail on authenticated streams, most cannot handle AES-128, and your URLs travel through a third-party server. Not recommended.
- Excluded - bundled risks: GUI freeware that bundles other installers, telemetry, or unsigned executables. Skip these for security hygiene.
The five CLI/OSS tools below cover every legitimate HLS download workflow you will encounter, from a quick remux to live stream capture. The trade-off is that you will spend time in a terminal. If terminal is a non-starter, jump to the Chrome extension comparison instead.
2. Tool 1: ffmpeg (CLI, 100% free, infinite power)
ffmpeg is the reference implementation for video processing on the command line. It is free, open source (LGPL/GPL), and has no usage limits of any kind. For m3u8 downloads, it handles single-quality playlists, master playlists, AES-128 encrypted streams, and streams with separate audio tracks - all in one command.
Basic download command
ffmpeg -i "https://cdn.example.com/playlist.m3u8" -c copy output.mp4
The -c copy flag muxes the existing streams without re-encoding. Output keeps the original bitrate and quality. For a 30-minute 1080p stream, the command finishes in the time needed to download the segments - typically 2 to 4 minutes on a normal connection.
Download with authentication headers
If the stream requires cookies or a Referer header, capture them from browser DevTools and pass them directly:
ffmpeg \
-headers $'Referer: https://source.example.com/\r\nCookie: session=abc123\r\n' \
-i "https://cdn.example.com/playlist.m3u8" \
-c copy \
output.mp4
See our guide on how to find the m3u8 URL of any stream for the exact DevTools steps to capture the URL and headers.
Limits of ffmpeg
- Command line is mandatory. No GUI, no click-through experience.
- Site-specific quirks (JavaScript token generation, signed URL rotation) require manual workarounds.
- You need to find the m3u8 URL yourself via DevTools before the command can run.
- Installation on Windows requires manual PATH configuration.
For a deeper look at the ffmpeg conversion workflow, the convert m3u8 to mp4 detailed guide covers the full set of flags, error handling, and common pitfalls.
3. Tool 2: yt-dlp (CLI, free, smarter extraction)
yt-dlp is a fork of youtube-dl with active maintenance, faster downloads, and site-specific extractors for over 1,000 platforms. Like ffmpeg, it is 100% free and open source with no usage limits. Its advantage over raw ffmpeg is automatic URL and header extraction: paste the page URL, and yt-dlp finds the m3u8, handles auth cookies, and selects the best quality automatically.
Basic usage
# Download best quality from a supported site
yt-dlp https://platform.example.com/video/12345
# Force MP4 output container
yt-dlp --merge-output-format mp4 https://platform.example.com/video/12345
# Pass browser cookies for authenticated streams
yt-dlp --cookies-from-browser chrome https://platform.example.com/video/12345
What yt-dlp does better than raw ffmpeg
- Automatic format selection: downloads the best available quality by default, with
-fflags for manual selection. - Site-specific handlers: Vimeo, Wistia, JW Player, and hundreds of others have dedicated extractors that handle token refresh automatically.
- Cookie import:
--cookies-from-browser chromepulls your live Chrome session into the download without any manual header extraction. - Parallel fragment download: faster than sequential ffmpeg downloads on fast connections.
Limits of yt-dlp
- Still requires command line knowledge, even if less than raw ffmpeg.
- Site support depends on extractor maintenance. Obscure or custom players may not be recognized.
- Windows binary requires occasional manual updates (no auto-update by default).
For streams on platforms without a yt-dlp extractor - custom LMS, corporate training portals, Bunny.net-served content - the tool falls back to generic m3u8 handling, which works but loses the smart cookie injection. That is where a browser extension has an edge.
4. Tool 3: N_m3u8DL-CLI (Windows-friendly, parallel)
N_m3u8DL-CLI is an open-source command-line HLS downloader that has become the default choice for many Windows users. The original C# implementation (nilaoda/N_m3u8DL-CLI) ships as a single .exe with no install step, and its newer Go rewrite (N_m3u8DL-RE) adds DASH/MPD support and a cleaner UX. Source: github.com/nilaoda/N_m3u8DL-CLI and the newer N_m3u8DL-RE.
Basic command
# Classic N_m3u8DL-CLI (C#)
N_m3u8DL-CLI.exe "https://cdn.example.com/playlist.m3u8" --workDir downloads --saveName myvideo
# Newer N_m3u8DL-RE (Go rewrite)
N_m3u8DL-RE "https://cdn.example.com/playlist.m3u8" --save-name myvideo
With headers for authenticated streams
N_m3u8DL-CLI.exe "https://cdn.example.com/playlist.m3u8" \
--headers "Referer:https://source.example.com/|Cookie:session=abc123" \
--workDir downloads --saveName myvideo
Why N_m3u8DL-CLI
- Parallel segment download out of the box (configurable thread count, default 32 threads).
- AES-128 decryption handled automatically when the key URL is reachable with the same headers as the segments.
- Quality selection via interactive prompt when a master playlist is detected, instead of memorizing format strings.
- Single-binary install on Windows: no Python, no compilation, just unzip and run.
Limits of N_m3u8DL-CLI
- Windows-first project: macOS and Linux builds exist for the newer N_m3u8DL-RE but the C# version targets Windows primarily.
- Less polished documentation than ffmpeg or yt-dlp; some flags only documented in the README in Chinese.
- No site-specific handlers like yt-dlp - you must supply the M3U8 URL yourself (use Chrome DevTools or our find m3u8 URL guide).
5. Tool 4: Streamlink (live HLS specialty)
Streamlink is an open-source CLI (Python-based) focused on live stream extraction. Where ffmpeg and yt-dlp shine on VOD, Streamlink shines on Twitch, YouTube Live, and other broadcast platforms. It is built on a plugin system that handles platform-specific quirks (ad-skipping, auth tokens, stream URL resolution) which is exactly where generic tools struggle on live HLS.
Basic command
# Play a Twitch live stream
streamlink https://www.twitch.tv/example best
# Save to file
streamlink --output my_stream.ts https://www.twitch.tv/example best
# Pipe into ffmpeg for direct MP4 muxing
streamlink --stdout https://www.twitch.tv/example best | ffmpeg -i - -c copy live.mp4
Why Streamlink for live
- Twitch, YouTube Live, BBC iPlayer, and 100+ live platforms handled out of the box via plugins.
- No re-encoding: passes the original segments through verbatim.
- Stable on long captures: built to survive hour-long broadcast saves without dropping segments.
- Pipe-friendly: standard output integration with ffmpeg is first-class.
Limits of Streamlink
- VOD support is limited; for archived content, ffmpeg or yt-dlp are better fits.
- Site plugin coverage varies; non-supported platforms fall back to generic HLS handling that loses the smart auth.
- Python install required (pip install streamlink) on most systems.
For more detail on the live capture workflow, see our dedicated live HLS stream download guide.
6. Tool 5: VLC stream record (open-source GUI last resort)
VLC is the most widely installed media player in the world and it can record network streams, including HLS. It is free, open source, and available on every platform. It is also not a dedicated downloader, and that distinction matters.
How to record an m3u8 stream in VLC
- Open VLC. Go to Media > Open Network Stream.
- Paste the m3u8 URL and click Show more options. Check the Stream output box.
- In the stream output dialog, select File as the destination and set the format to MP4.
- Click Stream. VLC plays and records simultaneously in real time.
Alternatively, use the command line interface: vlc https://cdn.example.com/playlist.m3u8 --sout="#file{dst=output.mp4}" vlc://quit
Why VLC is a last resort for m3u8
- Real-time only: VLC captures at playback speed. A 60-minute video takes 60 minutes to save, not 2 to 4 minutes like a parallel segment downloader.
- Inconsistent muxing: VLC does not reliably handle master playlists with separate audio tracks. The output may have no audio or desynchronized audio.
- No AES-128 decryption on write: some VLC versions record the encrypted bytes rather than the decrypted video, producing a broken file.
- No quality selection: VLC picks a rendition automatically and does not expose quality switching in the record workflow.
VLC is useful for a quick one-off capture of a live stream when no other tool is available. For live HLS specifically, the live HLS stream capture guide covers more reliable options. For any pre-recorded stream, ffmpeg or a browser extension is faster and more reliable.
7. Side-by-side comparison table
| Tool | License | Interface | Handles AES-128 | Handles auth / cookies | Live stream | Best for |
|---|---|---|---|---|---|---|
| ffmpeg | LGPL/GPL | CLI | Yes | Yes (manual headers) | Yes | Batch, scripting, full control |
| yt-dlp | Unlicense | CLI | Yes | Yes (auto on 1,000+ sites) | Partial | Supported platforms, smart auth |
| N_m3u8DL-CLI | MIT | CLI | Yes | Yes (--headers flag) | Partial | Windows users, parallel VOD download |
| Streamlink | BSD-2 | CLI | Yes (via plugins) | Yes (plugin-handled) | Yes (specialty) | Twitch, YouTube Live, BBC iPlayer |
| VLC | GPL-2 | GUI | Partial | No | Yes (real-time only) | Quick capture, no other tool available |
For most users who are comfortable with a terminal, yt-dlp is the best general-purpose free tool: smarter than raw ffmpeg, no usage caps, and handles 1,000+ sites automatically. ffmpeg remains the universal backbone for batch and custom workflows. N_m3u8DL-CLI is the easiest single-binary option on Windows. Streamlink wins on live streams. VLC is the fallback when nothing else is installed.
If a CLI is not your style and you prefer point-and-click in your browser, the HLS Downloader Chrome Extension comparison covers that route.
8. Frequently asked questions
Is ffmpeg really free for m3u8 download?
Yes, ffmpeg is fully free and open source under the LGPL/GPL license. There is no download cap, no watermark, and no paid tier. The only cost is time: you need to install it and learn the command syntax. A single ffmpeg command can download, decrypt, and mux an m3u8 into MP4 without any license fee.
What is the catch with free online m3u8 converters?
Three main problems: they run on a remote server with no access to your cookies or session tokens, so they fail on any authenticated or paid stream; most do not handle AES-128 encryption correctly and output static or broken files; and your URL and metadata pass through a server you do not control, which is a privacy concern for private content.
Can I use yt-dlp on Windows easily?
Yes. Download the yt-dlp.exe binary from the official GitHub releases page, place it in a folder on your PATH (or the same folder as your command prompt), and run it from Command Prompt or PowerShell. No Python install is required for the pre-built Windows binary. The command yt-dlp URL handles m3u8 detection automatically for most streaming sites.
What is N_m3u8DL-CLI and when should I use it?
N_m3u8DL-CLI is an open-source command-line HLS downloader popular on Windows. It supports parallel segment download, AES-128 decryption, custom headers, and quality selection via interactive prompt. The newer N_m3u8DL-RE Go rewrite also adds DASH support. Available on GitHub at nilaoda/N_m3u8DL-CLI and nilaoda/N_m3u8DL-RE.
What is Streamlink for?
Streamlink is an open-source CLI focused on live stream extraction. It supports Twitch, YouTube Live, BBC iPlayer, and 100+ live platforms via plugin handlers. For VOD HLS, ffmpeg or yt-dlp are better choices. For live HLS capture, Streamlink piped into ffmpeg is the standard open-source recipe.
Can VLC download an m3u8?
VLC can record a stream while playing it using the Convert/Save dialog or the --sout flag. It is not designed as a dedicated downloader: it captures in real time (60 minutes of video takes 60 minutes to save), cannot reliably mux separate audio and video HLS playlists, and does not expose quality selection. Use ffmpeg or a dedicated tool for anything beyond a quick capture.
Is there a 100% free m3u8 downloader for unlimited use?
All five tools covered here (ffmpeg, yt-dlp, N_m3u8DL-CLI, Streamlink, VLC) are 100% free open-source CLIs/applications with no usage caps. They handle most m3u8 streams including AES-128 encrypted ones. The trade-off is command-line knowledge. If you prefer a Chrome browser extension instead of CLI, see our HLS Downloader Chrome Extension comparison for the browser route.
About the author
RGC Digital LLC builds Vidora, a Pro video downloader Chrome extension for Vimeo, Bunny.net, HLS streams, and MP4. Based in Albuquerque, NM. We write about video tooling, streaming protocols, and Chrome extension engineering.
Related guides
- HLS Downloader Chrome Extension comparison - browser extension counterpart to this CLI guide
- How to convert m3u8 to mp4 (3 methods)
- How to find the m3u8 URL of any stream (DevTools walkthrough)
- How to download encrypted m3u8 with AES-128
- AES-128 HLS Encryption Explained (technical deep-dive)
- DASH MPD downloader - tools for MPEG-DASH streams
- How to capture a live HLS stream
Vidora Engineering
Vidora is built and maintained by RGC Digital LLC, a team of engineers who have been working on browser-based HLS, DASH and MP4 video extraction since 2024. We test every method we publish on real streams from Vimeo, Bunny.net, Wistia, Apple HLS samples and AES-128 encrypted CDNs.