Web UI to download music with yt-dlp
- Python 99.6%
- Makefile 0.1%
Added a security policy document outlining supported versions and vulnerability reporting. |
||
|---|---|---|
| bundle | ||
| devscripts | ||
| web | ||
| yt_dlp | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .pre-commit-hatch.yaml | ||
| Changelog.md | ||
| CONTRIBUTING.md | ||
| CONTRIBUTORS | ||
| Dockerfile | ||
| LICENSE | ||
| Maintainers.md | ||
| Makefile | ||
| public.key | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| SECURITY.md | ||
| supportedsites.md | ||
| THIRD_PARTY_LICENSES.txt | ||
| yt-dlp.cmd | ||
| yt-dlp.sh | ||
yt-dlp Web UI
A beautiful, self-hosted web application for downloading YouTube (and 1000+ other sites) videos — powered by yt-dlp.
Features
- Paste any YouTube (or supported site) URL and fetch video info instantly
- View thumbnail, title, uploader, duration, views, likes, and upload date
- Select from all available formats grouped by quality (Video+Audio, Video only, Audio only)
- Highest quality format pre-selected automatically
- Live download progress with percentage, speed, and ETA
- Cancel download at any time
- Clean dark UI with animated progress bar
Quick Start with Docker
Pull and run from Docker Hub
docker pull samive/yt-dlp-web:latest
docker run -d -p 8000:8000 --name yt-dlp-web samive/yt-dlp-web:latest
Then open http://localhost:8000 in your browser.
Persist downloads to your machine
docker run -d \
-p 8000:8000 \
-v $(pwd)/downloads:/app/web/backend/downloads \
--name yt-dlp-web \
samive/yt-dlp-web:latest
Stop / remove the container
docker stop yt-dlp-web
docker rm yt-dlp-web
Build from Source
Prerequisites
- Docker installed
Build the image
git clone https://github.com/samive/yt-dlp-web.git
cd yt-dlp-web
docker build -t yt-dlp-web .
Run the image
docker run -d -p 8000:8000 --name yt-dlp-web yt-dlp-web
Open http://localhost:8000.
Run without Docker (Development)
Prerequisites
- Python 3.10+
- ffmpeg installed and on PATH (download)
Setup
# Install dependencies
pip install yt-dlp fastapi "uvicorn[standard]" httpx
# Start the server
python -m uvicorn web.backend.main:app --reload --port 8000
Open http://localhost:8000.
Usage Guide
- Paste a URL — Paste any YouTube or supported site link into the input field and click Fetch
- Review video info — Thumbnail, title, uploader, duration, views, likes, and upload date are shown
- Select a format — Choose from the dropdown (highest quality is pre-selected)
- Download — Click the Download button and watch the live progress bar
- Cancel — Click Cancel at any time to stop the download
YouTube authentication (optional)
Some videos require sign-in. Export your cookies using the Get cookies.txt LOCALLY browser extension and mount them:
docker run -d \
-p 8000:8000 \
-v $(pwd)/cookies.txt:/app/web/backend/cookies.txt:ro \
--name yt-dlp-web \
samive/yt-dlp-web:latest
Note: Using cookies with Chrome on Windows may cause issues due to DPAPI encryption. Firefox or Edge cookies work more reliably.
Tech Stack
- Backend — Python, FastAPI, yt-dlp
- Frontend — Vanilla HTML/CSS/JS (no framework)
- Container — Docker with ffmpeg
License
This project uses yt-dlp which is licensed under The Unlicense.