414750bfd8bfa859eeff1b54b40b17fc4207e901
yt-dlp Web Downloader
A minimal self-hosted web UI for downloading videos and audio via yt-dlp.
Features
- Download videos as MP4 at any quality (best / 1080p / 720p / 480p / 360p)
- Download audio as MP3 (192kbps, extracted via ffmpeg)
- Live progress bar with speed & ETA
- Direct in-browser file download button
- Works with YouTube, SoundCloud, Twitter/X, Twitch, and 1000+ other sites
Quick Start
# Clone / copy this directory, then:
docker compose up -d --build
Open http://localhost:8080 in your browser.
Downloaded files are saved to ./downloads/ on the host.
Usage
- Paste a URL into the input box
- Click Preview to see the video title & thumbnail (optional)
- Choose Format (Video or Audio) and Quality
- Click Download — a progress card appears below
- When done, click ⬇ Download File to save it locally
Configuration
| Variable | Default | Description |
|---|---|---|
TZ |
Europe/Berlin |
Container timezone |
To change the host port, edit docker-compose.yml:
ports:
- "9090:8080" # → opens on port 9090 instead
Updating yt-dlp
yt-dlp releases frequently. Rebuild the image to get the latest version:
docker compose build --no-cache && docker compose up -d
Or, to update inside a running container without rebuilding:
docker exec ytdlp-web pip install --upgrade yt-dlp
Notes
- Files are prefixed with a random job ID internally; the download button strips the prefix for a clean filename.
- Downloads are kept in
/downloadsinside the container. Mount a host path to persist them across container restarts. - No authentication is included by default. If exposed to the internet, put it behind a reverse proxy (e.g. nginx or Caddy) with basic auth.
Description
Languages
HTML
67.1%
Python
30%
Dockerfile
2.9%