A web interface for yt-dlp. Downloads videos onto server.
- HTML 42.7%
- TypeScript 35.4%
- CSS 18.9%
- Dockerfile 2.8%
- Shell 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| screenshots | ||
| .dockerignore | ||
| .gitignore | ||
| deno.json | ||
| deno.lock | ||
| Dockerfile | ||
| index.html | ||
| LICENSE | ||
| main.ts | ||
| README.md | ||
| run-local.sh | ||
| sanitize_files.ts | ||
| style.css | ||
yt-dlp-web-ui
A web UI for yt-dlp, built with Deno.
NOTE ON AI USE: While I do use AI to write code I decide on the architecture, design of the software, design of the website, how it works and what it should do. I also decide which dependencies and tools to use.
Features
- Paste a YouTube URL and download with a max-quality selector (480p–4K)
- Live download progress bar
- Video library with thumbnails, resolution badges and channel info
- Built-in player with English subtitles when available
- In-app status for active and failed downloads
Todo
- Support downloading subtitles in additional languages (currently English only)
- Unify the project description across the repository, this README and the UI subtitle
- Add a one-click "retry without subtitles" button to the failed-download state, instead of telling users to switch the subtitle option manually
- Add a per-video info popup with additional details such as the description and the original URL
- Play video while downloading
Requirements
Getting started
git clone https://code.reboot.li/rebootl/yt-dlp-wui.git
cd yt-dlp-wui
./run-local.sh
Then open http://localhost:9092.
Docker
docker build -t yt-dlp-wui .
docker run -p 9092:9092 -v /path/to/your/videos:/app/downloads yt-dlp-wui
Configuration
| Environment variable | Default | Description |
|---|---|---|
PORT |
9092 |
Server port |
DOWNLOAD_DIR |
./downloads |
Where videos are saved |
Project structure
main.ts Deno/Oak backend: REST API + static file serving
index.html Alpine.js frontend (single file)
style.css Styles