1
0
Fork 0
Web UI to download music with yt-dlp
  • Python 99.6%
  • Makefile 0.1%
Find a file
2026-04-08 10:45:10 +08:00
bundle [build] Harden build/release workflows (#16358) 2026-03-28 00:10:58 +00:00
devscripts [devscripts] Handle ejs updates for requirements files (#16374) 2026-03-29 16:37:15 +00:00
web Update to include able resume download activity 2026-04-08 10:45:10 +08:00
yt_dlp [ie/bandcamp:weekly] Fix extractor (#16373) 2026-03-29 16:47:19 +00:00
.dockerignore initial commit 2026-04-01 12:29:04 +08:00
.editorconfig
.gitattributes [docs] Minor improvements (#3309, #3343) 2022-04-08 14:09:10 +05:30
.gitignore initial commit 2026-04-01 12:29:04 +08:00
.pre-commit-config.yaml [misc] Add hatch, ruff, pre-commit and improve dev docs (#7409) 2024-05-26 21:27:21 +02:00
.pre-commit-hatch.yaml [misc] Add hatch, ruff, pre-commit and improve dev docs (#7409) 2024-05-26 21:27:21 +02:00
Changelog.md Release 2026.03.17 2026-03-17 23:25:11 +00:00
CONTRIBUTING.md [build] Harden build/release workflows (#16358) 2026-03-28 00:10:58 +00:00
CONTRIBUTORS Release 2026.03.13 2026-03-13 08:45:00 +00:00
Dockerfile update and fix some files 2026-04-01 17:07:23 +08:00
LICENSE
Maintainers.md [cleanup] Misc (#15430) 2026-01-29 16:22:35 +00:00
Makefile [ie/youtube] Update ejs to 0.8.0 (#16269) 2026-03-17 23:17:34 +00:00
public.key [build] Sign SHA files and release public key 2023-03-03 22:55:10 +05:30
pyproject.toml Fix default extra for ios platforms (#16376) 2026-03-29 16:41:33 +00:00
README.md fix readme content 2026-04-01 14:23:38 +08:00
requirements.txt update and fix some files 2026-04-01 17:07:23 +08:00
SECURITY.md Create SECURITY.md for security policy 2026-04-02 09:27:04 +08:00
supportedsites.md Release 2026.03.03 2026-03-03 16:36:58 +00:00
THIRD_PARTY_LICENSES.txt [ie/youtube] Implement external n/sig solver (#14157) 2025-10-31 23:13:04 +01:00
yt-dlp.cmd [cleanup] Misc (#8598) 2023-12-30 22:27:36 +01:00
yt-dlp.sh [cleanup] Misc (#8598) 2023-12-30 22:27:36 +01:00

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.