# yt-dlp Web Downloader A minimal self-hosted web UI for downloading videos and audio via [yt-dlp](https://github.com/yt-dlp/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 ```bash # 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 1. Paste a URL into the input box 2. Click **Preview** to see the video title & thumbnail (optional) 3. Choose **Format** (Video or Audio) and **Quality** 4. Click **Download** — a progress card appears below 5. 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`: ```yaml ports: - "9090:8080" # → opens on port 9090 instead ``` ## Updating yt-dlp yt-dlp releases frequently. Rebuild the image to get the latest version: ```bash docker compose build --no-cache && docker compose up -d ``` Or, to update inside a running container without rebuilding: ```bash 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 `/downloads` inside 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.