Skip to content

puemos/hls-downloader

HLS Downloader

Capture and download HTTP Live Streams (HLS) straight from your browser.
Free • Open Source • MIT Licensed

Test Coverage

Extension promo tile

Popup screenshot


✨ Features

  • 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.wasm A 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.

📦 Get It

Browser Download / availability
Google Chrome logo  Google Chrome Not supported because it only allows Manifest V3. I'm working on a solution.
Firefox logo  Firefox Get it on Firefox Add-ons or use manual installation
Microsoft Edge logo  Microsoft Edge Get it from Edge Add-ons
Brave logo  Brave Use manual installation
Arc logo  Arc Use manual installation
Opera logo  Opera Use manual installation

*For Brave/Arc/etc. download the ZIP from the latest release and follow the manual-install steps below.


🛠️ Installation

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)
  1. Grab hls-downloader.crx from the corresponding legacy release.
  2. Open chrome://extensions/, enable Developer mode.
  3. Drag and drop the CRX onto the extensions page.
  4. Confirm any prompts.

Google Chrome logo Chrome

Currently not supported

Brave logo Brave

  1. Download extension-chrome.zip from the latest release.
  2. Extract the ZIP to a convenient folder.
  3. Open brave://extensions/ and enable Developer mode.
  4. Click Load unpacked and select the extracted folder (the one that contains manifest.json).
  5. Enjoy 🎉

Arc logo Arc

  1. Download extension-chrome.zip from the latest release.
  2. Extract the ZIP to a convenient folder.
  3. Open Arc Menu → Extensions → Manage Extensions (or press Command+T or Ctrl+T and type Manage Extensions), then enable Developer mode.
  4. Click Load unpacked and select the extracted folder (the one that contains manifest.json).
  5. Enjoy 🎉

Opera logo Opera

  1. Download extension-chrome.zip from the latest release.
  2. Extract the ZIP to a convenient folder.
  3. Open opera://extensions/ and enable Developer mode.
  4. Click Load unpacked and select the extracted folder (the one that contains manifest.json).
  5. Enjoy 🎉

Firefox logo Firefox

  1. Opem about:debugging#/runtime/this-firefox.
  2. Click Load Temporary Add-on... and pick the XPI.

🎬 Usage

  1. Browse to a page that plays an HLS video and start playback.
  2. Click the HLS Downloader icon – detected playlists appear in the Sniffer tab.
  3. Choose Select next to a playlist.
  4. Pick your video & audio streams, then press Download.
  5. Grab a coffee ☕ – ffmpeg.wasm merges everything and your browser prompts you to save the MP4 when done.

🧑‍💻 Development

Clone & Build

git clone https://github.com/puemos/hls-downloader.git
cd hls-downloader
pnpm install
pnpm build        # output → ./dist/
# - Bundled archives: `extension-chrome.zip`, `extension-firefox.zip`
# - Run tests & generate coverage badge:
pnpm test          # unit tests
pnpm test:coverage # combined coverage + badge

Live Development

pnpm dev        # watches & rebuilds into dist/
pnpm storybook  # preview popup & design-system components

Project Structure

src/
├─ assets/          # extension manifest & icons
├─ background/      # background scripts
├─ core/            # shared logic & Redux store
├─ design-system/   # UI component library
└─ popup/           # React popup UI

🤝 Contributing

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 🎉

📜 Code of Conduct

TLDR: Be kind This project follows the Contributor Covenant.


📝 License

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