A other Web UI for yt-dlp ! But with greater transparency about what is happening in the background, the ability to analyze the video to choose the format, and convert the output to obtain a compatible format.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Raynoxis a4bef47106 clean 10 months ago
docs/screenshots clean 10 months ago
static/img language selector 10 months ago
templates language selector 10 months ago
.dockerignore initial commit 10 months ago
.env.example Fix permissions issue for WSL2 and rootless containers 10 months ago
.gitignore Fix permissions issue for WSL2 and rootless containers 10 months ago
Dockerfile Fix Podman rootless permissions and improve setup 10 months ago
LICENSE initial commit 10 months ago
README.md clean 10 months ago
app.py Add real-time download progress bar with SSE 10 months ago
docker-compose.yml clean 10 months ago

README.md

🎬 yt-dlp Web Interface

Modern, hardened web UI for downloading YouTube videos with conversion options and detailed status. Built on the excellent yt-dlp and fully containerized with Docker/Podman. Coded with my friend: Claude AI

License Docker Python Security

Highlights

  • 🎯 Choose exact video/audio formats with custom containers and codecs
  • 📈 Real-time progress via SSE; shows speed, ETA, and the yt-dlp command used
  • 🛡️ Hardened: strict URL validation, path traversal protection, non-root container, full logging
  • Concurrent, non-blocking downloads with automatic cleanup after 1h
  • 🐳 Ready-to-run images for Docker and Podman

🚀 Deploy

Docker

docker pull raynoxis/yt-dlp-web-interface:latest
docker run -d -p 5000:5000 --name ytdlp-web raynoxis/yt-dlp-web-interface:latest
git clone https://github.com/Raynoxis/yt-dlp-Web-Interface.git
cd yt-dlp-Web-Interface

docker-compose up -d

Access the UI: http://localhost:5001 (Compose) or http://localhost:5000 (direct run).

Persist downloads:

docker run -d -p 5000:5000 \
  -v ./downloads:/app/downloads \
  --name ytdlp-web \
  raynoxis/yt-dlp-web-interface:latest

Build from source (optional):

git clone https://github.com/Raynoxis/yt-dlp-Web-Interface.git
cd yt-dlp-Web-Interface
docker build -t raynoxis/yt-dlp-web-interface .
docker run -d -p 5000:5000 --name ytdlp-web raynoxis/yt-dlp-web-interface

📸 Screenshots

Step 1 - Analysis

Step 1

Step 2 - Format selection

Step 2

Step 3 - Download with progress

Step 3

🎯 How it works

  1. Paste a YouTube URL and click Analyze video to list available streams.
  2. Pick video and audio formats; choose container, codec, and bitrate.
  3. Click Download and follow live progress (speed, ETA, executed yt-dlp command).
  4. Download the generated file when it completes.

API (if you automate)

POST /api/analyze
{ "url": "https://www.youtube.com/watch?v=VIDEO_ID" }

POST /api/download
{
  "url": "https://www.youtube.com/watch?v=VIDEO_ID",
  "video_format": "299",
  "audio_format": "140",
  "output_container": "mp4",
  "audio_codec": "aac",
  "audio_bitrate": "192k",
  "audio_only": false
}

GET  /api/progress/<session_id>
GET  /api/download-file/<session_id>/<filename>
POST /api/cleanup/<session_id>
POST /api/cleanup-all

Permissions tips

  • Keep the container non-root (default). Do not set user: root.
  • If downloads/ was created by root, recreate it or chown it to your user.
  • On Podman rootless, run ./fix-permissions.sh (or podman unshare chown 1000:1000 downloads/) if you hit permission errors.

🤝 Contributing

Contributions are welcome! Feel free to:

  1. Fork the project
  2. Create a branch (git checkout -b feature/improvement)
  3. Commit your changes (git commit -am 'Add new feature')
  4. Push the branch (git push origin feature/improvement)
  5. Open a Pull Request

📝 License

This project is under the MIT License. See LICENSE for details.

🙏 Credits

  • yt-dlp - The best video download tool
  • Flask - Python web framework
  • FFmpeg - Audio/video processing
  • Claude AI - Development assistant

⚠️ Disclaimer

This tool is for personal and educational use. Respect YouTube's terms of service and your local copyright laws.

📧 Contact

Raynoxis - GitHub

Project link: https://github.com/Raynoxis/yt-dlp-Web-Interface

Docker Hub link: https://hub.docker.com/r/raynoxis/yt-dlp-web-interface