1
0
Fork 0
yt-mp3-ui/README.md
2026-04-01 14:23:38 +08:00

3.4 KiB

yt-dlp Web UI

A beautiful, self-hosted web application for downloading YouTube (and 1000+ other sites) videos — powered by yt-dlp.

yt-dlp Web UI Docker Python


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

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

  1. Paste a URL — Paste any YouTube or supported site link into the input field and click Fetch
  2. Review video info — Thumbnail, title, uploader, duration, views, likes, and upload date are shown
  3. Select a format — Choose from the dropdown (highest quality is pre-selected)
  4. Download — Click the Download button and watch the live progress bar
  5. 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.