Capture and download HTTP Live Streams (HLS) straight from your browser.
FreeΒ β’Β OpenΒ SourceΒ β’Β MIT Licensed
- Automatic stream discovery Detects HLS playlists on the page the moment you open it. No DevTools sniffing required.
- Fine-grained quality control Pick any combination of video resolution (240p β 4K) and audio language/bit-rate before you download, so you never waste bandwidth on the wrong track.
- 100% local merge with
ffmpeg.wasmA WebAssembly build of FFmpeg runs right inside your tab, muxing the chosen audio + video into a single MP4. *βNothing is uploaded, keeping your files private. - Works everywhere you browse
Verified on Firefox, Edge, Chrome, Brave, Arc, and other Chromium-based browsers, on Windows, macOS, and Linux.
| Browser | Download / availability |
|---|---|
| Experimental MV3 build available from source (see Development section). | |
| Get it on Firefox Add-ons or use manual installation | |
| Get it from Edge Add-ons | |
| Use manual installation | |
| Use manual installation | |
| Use manual installation |
*For Brave/Arc/etc. download the ZIP from the latest release and follow the manual-install steps below.
Newer versions (β₯ 4.1.2) ship only a ZIP archive.
Older versions can still be installed from the CRX (see the collapsible notes).
Manual install for versions < 4.1.2 (CRX)
- Grab
hls-downloader.crxfrom the corresponding legacy release. - Open
chrome://extensions/, enable Developer mode. - Drag and drop the CRX onto the extensions page.
- Confirm any prompts.
- Download
extension-mv3-chrome.zipfrom the latest release. - Extract the ZIP to a convenient folder.
- Open
chrome://extensions/and enable Developer mode. - Click Load unpacked and select the extracted folder (the one that contains
manifest.json). - Enjoy π
- Download
extension-mv3-chrome.zipfrom the latest release. - Extract the ZIP to a convenient folder.
- Open
brave://extensions/and enable Developer mode. - Click Load unpacked and select the extracted folder (the one that contains
manifest.json). - Enjoy π
- Download
extension-mv3-chrome.zipfrom the latest release. - Extract the ZIP to a convenient folder.
- Open Arc Menu β Extensions β Manage Extensions (or press Command+T or Ctrl+T and type Manage Extensions), then enable Developer mode.
- Click Load unpacked and select the extracted folder (the one that contains
manifest.json). - Enjoy π
- Download
extension-mv3-chrome.zipfrom the latest release. - Extract the ZIP to a convenient folder.
- Open
opera://extensions/and enable Developer mode. - Click Load unpacked and select the extracted folder (the one that contains
manifest.json). - Enjoy π
- Opem
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on... and pick the XPI.
For Dear Testers β concise build/install steps for Firefox & Chromium reviewers.
- Browse to a page that plays an HLS video and start playback.
- Click the HLS Downloader icon β detected playlists appear in the Sniffer tab.
- Choose Select next to a playlist.
- Pick your video & audio streams, then press Download.
- Grab a coffee β β
ffmpeg.wasmmerges everything and your browser prompts you to save the MP4 when done.
Requires Node.js 20+ (includes Corepack) and the zip command.
git clone https://github.com/puemos/hls-downloader.git
cd hls-downloader
# install the pinned pnpm version
corepack enable
corepack prepare [email protected] --activate
pnpm install --frozen-lockfile
pnpm run build # outputs β ./dist/, extension-chrome.zip, extension-firefox.xpi
# verify build artifacts then clean up
pnpm run cleanMV2 vs MV3 builds
The default build targets Manifest V2 (Firefox and legacy Chromium workflows). To produce a Manifest V3 bundle for Chromium-based browsers (Firefox does not fully support MV3 background service workers yet):
MV_TARGET=mv3 pnpm run build # writes manifest v3 + offscreen page to dist/
pnpm run clean # optional: remove artifacts after testingYou can generate both flavors at once with pre-named artifacts:
pnpm run build:all # outputs dist/mv2 + dist/mv3
# zips: extension-mv2-chrome.zip / extension-mv2-firefox.xpi (MV2 contents at archive root)
# extension-mv3-chrome.zip (MV3 contents at archive root; Chromium only)Tip: If pnpm is missing, run
corepack enable && corepack prepare [email protected] --activateto match the locked toolchain.
Run tests & generate coverage badge:
pnpm test # unit tests
pnpm test:coverage # combined coverage + badgepnpm dev # watches & rebuilds into dist/
pnpm storybook # preview popup & design-system componentssrc/
ββ assets/ # extension manifest & icons
ββ background/ # background scripts
ββ core/ # shared logic & Redux store
ββ design-system/ # UI component library
ββ popup/ # React popup UI
We β₯ PRs! See the contributing guide and automation guide.
git checkout -b feature/my-awesome-idea
# ...code...
git commit -am "feat: add awesome idea"
git push origin feature/my-awesome-idea
# open PR πTLDR: Be kind This project follows the Contributor Covenant.
HLS Downloader is available in multiple build variants to accommodate different distribution requirements:
Official store releases include a blocklist that respects copyright holder opt-out requests. This version complies with distribution platform policies and content owner preferences.
Alternative builds are available for advanced users who prefer complete local control. These "experimental" variants contain no blocklist and allow unrestricted operation:
# MV2 without blocklist (Firefox/Edge manual install)
pnpm run build:mv2:no-blocklist
# MV3 without blocklist (Chrome/Brave/Arc manual install)
pnpm run build:mv3:no-blocklist
# Build all variants at once
pnpm run build:all-variantsNon-blocklist builds are named "experimental unstable nightly beta alpha hls-downloader" and are intended for personal use onlyβnot for redistribution on official stores.
This extension is designed for downloading video content that you own or have authorization to access. It is prohibited to use this tool for downloading copyrighted content without permission. Users are solely responsible for their actions, and the developer assumes no liability for user behavior. This tool is provided "as-is" without warranty of any kind.
We respect the intellectual property rights and legitimate interests of all websites and content operators.
If you do not wish this tool to operate on your website, you may submit an opt-out request. We will add verified domains to the project's blocklist in subsequent releases.
- Create a new Issue using the "Opt-Out Request" template
- Use the title format:
[Opt-Out Request] YourDomain.com - Provide the following information for verification:
- Website Domain (e.g.,
example.com) - Contact Email (for identity verification if necessary)
- Website Domain (e.g.,
We commit to honoring legitimate requests and will include verified domains in the blocklist for store-distributed versions. Please note that as an open-source project, update cycles may vary. Thank you for your understanding and cooperation.
MIT License β click to expand
The MIT License (MIT)
Copyright (c) 2025 Shy Alter
More: https://github.com/puemos/hls-downloader/blob/master/LICENSE
Made with β₯ by puemos

