A Chrome extension for unattended live stream recording and VOD downloading from any HLS/DASH-based streaming platform that permits downloads.
- Unattended live recording — add broadcaster URLs to the Watch List and liveDownload polls them automatically. When a stream goes live, recording starts without any user interaction.
- Resilient recording — survives network interruptions, CDN hiccups, and broadcaster restarts. Recovery mode detects stream resumption and continues recording into a new file automatically.
- VOD downloading — download single or batch HLS/DASH VOD streams to a folder you choose.
- Auto-translate titles — optionally translates Korean/Japanese stream titles to English before saving (uses Google Translate, opt-in, off by default).
- Rust/WASM segment fetcher — the core segment fetch pipeline (retry logic, timeout management, error classification) runs as compiled Rust/WASM, not plain JavaScript.
- RDP/headless server support — designed to run on unattended media servers managed via Remote Desktop.
- Download the latest release zip from the Releases page
- Unzip to a local folder - if live updates to extension are needed
- Open Chrome and navigate to
chrome://extensions - Enable Developer mode (top right)
- Drag & Drop liveDownload.zip OR do Step 6.
- Click Load unpacked and select the folder you unzipped in Step 2.
- The liveDownload icon appears in the toolbar
- Navigate to a live stream page (e.g.
play.livebroadcast.com/broadcaster) - Click the liveDownload icon — the recorder window opens
- Detected streams appear under Available Streams
- Select a stream and click Download Selected
- Click the liveDownload icon to open the recorder window
- Expand the Wait for Recording URLs section
- Paste broadcaster URLs and click + Add
- liveDownload polls each URL every 15 minutes (configurable). When a stream goes live, recording starts automatically.
By default, recordings go to your browser's Downloads folder. To save to a specific folder:
- Click ⚙️ Settings in the header
- Under Root Download Directory, click Choose Folder
- Select your folder and click Save Settings
The folder selection may survives browser restarts. Chrome's behavipr has been inconsistent. Only sure way to ensure all recordings go to a folder of your choice is to set that folder as the download directory of the browser.
The WRU system is the heart of unattended recording.
| Button | Action |
|---|---|
| + Add | Add a single broadcaster URL |
| 📤 Export | Save the current list to a JSON file |
| 📥 Import | Load a list from a JSON file |
| 🔄 Poll Now | Immediately check all active URLs |
| ⏸️ Suspend | Pause automatic polling |
| Resume automatic polling |
liveDownload skips URLs that are already recording — no duplicate recordings.
Once recording starts, the dashboard shows:
| Stat | Description |
|---|---|
| ⏱️ Duration | Elapsed recording time |
| 📦 Downloaded | Total data written to disk |
| 📁 Segments | Segments successfully downloaded |
| Failed / total segments and fail rate | |
| 📋 Queue | Segments waiting to be downloaded |
If the stream is interrupted (authentication expiry, broadcaster restart, network failure), liveDownload enters Recovery Mode:
- The current file is finalized and saved
- A background tab opens the broadcaster's page
- When the stream reappears, recording resumes into a new file automatically
- Recovery times out after 10 minutes if no stream is found
For pre-recorded content, liveDownload detects m3u8/mpd playlist URLs on the page and lists them under Available Streams.
- Single download — select one stream and click Download Selected
- Batch download — select multiple streams, click Download Selected, choose a folder — each stream saves as a separate file
| Setting | Default | Description |
|---|---|---|
| Root Download Directory | — | Folder where recordings are saved |
| Resilient Mode | ON | Keep recording through errors; never auto-stop |
| Max Manifest Errors | 10 | Stop after this many consecutive errors (Resilient Mode OFF only) |
| Recovery Poll Interval | 5 min | How often to check for stream restart during recovery |
| Errors Before Recovery | 100 | Consecutive errors (~5 min) before entering recovery |
| Auto-Translate Titles | OFF | Translate titles to English via Google Translate before saving |
| Check Interval | 15 min | How often WRU polls broadcaster URLs |
| Monitor Window Timeout | 45 s | How long to wait per URL before moving to the next |
| Auto Close When Done | OFF | Close the recorder window after download completes |
| Detect Streams in XHR | OFF | Intercept XHR responses for broader stream detection |
Live recordings are saved as .ts (MPEG-TS) files.
Filename format: [Title]-[Mon]-[DD]-[YYYY]-[H]-[MM]-[SS][AM/PM].ts
Example: BroadcasterName-Apr-04-2026-10-33-05PM.ts
Recovery files from the same session share the same base name with a new timestamp, making them easy to identify and concatenate.
ffmpeg -i recording.ts -c copy output.mp4Note: ffmpeg may show "Packet corrupt" warnings when converting some recordings. This is cosmetic — the DTS values from recording's session clock are high but valid. Output quality is unaffected.
| Platform | Live Recording | VOD Download |
|---|---|---|
| SOOP (sooplive.com) | ✅ Full support | ✅ |
| Twitch | ✅ AES-128 + fMP4 | |
| HLS (m3u8) | ✅ | ✅ |
| DASH (mpd) | ✅ | ✅ |
- No telemetry. liveDownload does not collect, transmit, or store any usage data.
- No ads. No advertising of any kind.
- Google Translate is used only if you enable Auto-Translate Titles in Settings (off by default). When enabled, stream titles are sent to Google Translate. This feature is off by default. Use at your own choosing. This is the only feature where you data leaves your environment.
- Autoplay assistance. To start stream playback on monitored pages, liveDownload injects mouse click events into the player area. This can be disabled in Settings.
- Sound permission. To ensure autoplay works on monitored sites, liveDownload sets Chrome's sound permission to "Allow" for those origins. This setting is applied only to URLs you have added to the Watch List.
| Permission | Why it's needed |
|---|---|
host_permissions: *://*/* |
Detect media streams on any page the user browses |
webRequest |
Intercept network responses to identify m3u8/mpd streams |
scripting |
Inject player-start clicks into monitored pages |
contentSettings |
Allow autoplay/sound on broadcaster pages |
system.display |
Position monitoring windows on-screen correctly (RDP support) |
storage |
Save settings and WRU list |
alarms |
Schedule polling at configured intervals |
- Service worker (
worker.js) — watches network responses, manages WRU polling, registers recording windows - Recorder window (
recorder/) — live recording engine, VOD downloader, settings UI - WASM module (
wasm/) — Rust-compiled segment fetch pipeline - you stream does not leave your environment - Live system (
live/) — polling manager, window manager, recording registry, WRU manager
This project was inspired by: Chandler Stimson's https://github.com/chandler-stimson/live-stream-downloader
AGPL 3.0 — see LICENSE for details.
The Rust/WASM module (livedownload_core) is original work and distributed only in compiled binary form.
If liveDownload has been useful to you, consider donating to Save the Children.
liveDownload is not affiliated with Save the Children. The donate button opens their official donation page.