5.1 KiB
5.1 KiB
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
<<<<<<< HEAD
docker pull samive/yt-dlp-web:latest
docker run -d -p 8000:8000 --name yt-dlp-web samive/yt-dlp-web:latest
=======
docker pull YOUR_DOCKERHUB_USERNAME/yt-dlp-web:latest
docker run -d -p 8000:8000 --name yt-dlp-web YOUR_DOCKERHUB_USERNAME/yt-dlp-web:latest
>>>>>>> 831b5f7dab502c2631355cc9a518dcd5d832690b
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 \
<<<<<<< HEAD
samive/yt-dlp-web:latest
=======
YOUR_DOCKERHUB_USERNAME/yt-dlp-web:latest
>>>>>>> 831b5f7dab502c2631355cc9a518dcd5d832690b
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/YOUR_GITHUB_USERNAME/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 yt-dlp from source
pip install -e ".[default]"
# Install backend dependencies
pip install 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 \
<<<<<<< HEAD
samive/yt-dlp-web:latest
=======
YOUR_DOCKERHUB_USERNAME/yt-dlp-web:latest
>>>>>>> 831b5f7dab502c2631355cc9a518dcd5d832690b
Note: Using cookies with Chrome on Windows may cause issues due to DPAPI encryption. Firefox or Edge cookies work more reliably.
Publish to Docker Hub
1. Create a Docker Hub account
Sign up at hub.docker.com and create a public repository named yt-dlp-web.
2. Log in from terminal
docker login
3. Build and tag the image
<<<<<<< HEAD
docker build -t samive/yt-dlp-web:latest .
=======
docker build -t YOUR_DOCKERHUB_USERNAME/yt-dlp-web:latest .
>>>>>>> 831b5f7dab502c2631355cc9a518dcd5d832690b
4. Push to Docker Hub
<<<<<<< HEAD
docker push samive/yt-dlp-web:latest
=======
docker push YOUR_DOCKERHUB_USERNAME/yt-dlp-web:latest
>>>>>>> 831b5f7dab502c2631355cc9a518dcd5d832690b
5. (Optional) Tag a version
<<<<<<< HEAD
docker tag samive/yt-dlp-web:latest samive/yt-dlp-web:1.0.0
docker push samive/yt-dlp-web:1.0.0
=======
docker tag YOUR_DOCKERHUB_USERNAME/yt-dlp-web:latest YOUR_DOCKERHUB_USERNAME/yt-dlp-web:1.0.0
docker push YOUR_DOCKERHUB_USERNAME/yt-dlp-web:1.0.0
>>>>>>> 831b5f7dab502c2631355cc9a518dcd5d832690b
Anyone can now pull and run your image with:
<<<<<<< HEAD
docker pull samive/yt-dlp-web:latest
=======
docker pull YOUR_DOCKERHUB_USERNAME/yt-dlp-web:latest
>>>>>>> 831b5f7dab502c2631355cc9a518dcd5d832690b
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.