A lightweight and powerful browser-based M3U8/HLS video downloader built using JavaScript.
This project allows users to:
- Parse
.m3u8playlists - Download HLS video streams
- Decrypt AES-128 encrypted segments
- Merge
.tschunks into playable media - Export videos directly from the browser
- Resume interrupted downloads
- Track download progress in real time
Designed as a fully client-side downloader, the application works without requiring a backend server.
- Supports standard HLS
.m3u8playlists - Automatically parses:
- Media playlists
- Variant playlists
- Nested playlists
- Detects available video resolutions and stream qualities
Downloads all .ts video segments from the playlist.
- Parallel chunk downloading
- Retry mechanism for failed segments
- Sequential merge ordering
- Real-time progress tracking
- Pause/resume capability
Supports encrypted HLS streams.
- AES-128 decryption
- Key fetching from remote URLs
- Automatic segment decryption in browser
- Secure processing without external tools
Uses the included:
aes-decryptor.js
for browser-side decryption.
The downloader can merge transport stream files into playable video formats.
.ts.mp4
Uses:
mux-mp4.js
for media remuxing.
Integrated large-file saving support using:
StreamSaver.js
- Saves huge videos directly to disk
- Reduces browser memory usage
- Supports long recordings
- Better handling for large HLS streams
Displays detailed statistics while downloading:
- Current segment
- Download percentage
- Download speed
- Total segments
- Completed segments
- Estimated progress
Robust recovery system for unstable networks.
- Automatic retries on failed downloads
- Resume interrupted sessions
- Chunk validation
- Network error handling
Runs entirely in the browser
| Stream Type | Support |
|---|---|
| Standard HLS | ✅ |
| Variant M3U8 | ✅ |
| AES-128 Encrypted | ✅ |
| Live Streams | Partial |
| DRM Protected Streams | ❌ |
| Browser | Supported |
|---|---|
| Chrome | ✅ |
| Edge | ✅ |
| Firefox | ✅ |
| Brave | ✅ |
| Opera | ✅ |
Everything runs locally in your browser.
- Server uploads
- Cloud processing
- External storage
- User tracking
All video processing happens client-side.
- Download online course videos
- Save livestream archives
- Backup HLS streams
- Offline video viewing
- Educational media archiving
- Testing HLS infrastructure
This downloader does NOT bypass:
- DRM systems
- Widevine protection
- FairPlay encryption
- PlayReady DRM
Only standard HLS streams are supported.
Created by Yaseen
GitHub: https://github.com/myaseenmc
MIT License
Inspired by the HLS streaming ecosystem and browser-based media tooling.
Special thanks to:
- Vue.js
- StreamSaver.js
- mux.js
- Open-source HLS community