A modern, fast, and feature-rich desktop GUI for yt-dlp, built with Python and CustomTkinter.
The application provides an intuitive graphical interface for downloading videos, playlists, channels, and audio from 1000+ supported websites with live progress tracking, download speed, ETA, queue management, and advanced post-processing.
-
🌙 Modern Dark Mode Interface built with CustomTkinter
-
⚡ Multi-threaded downloads (UI never freezes)
-
📥 Batch download queue with multiple URLs
-
📊 Live progress bars, download speed & ETA
-
🎥 Video quality selection
- Best Available
- 2K
- 1080p
- 720p
- 480p
-
🎵 Audio extraction
- MP3
- M4A
- WAV
- FLAC
-
📦 Output container selection
- MP4
- MKV
- WEBM
-
📝 Real-time download logs
-
🔁 Retry failed downloads
-
🖼 Embed thumbnails as cover art
-
🏷 Embed metadata
-
💬 Download & embed subtitles
-
📁 Browse output folder
-
🧹 Automatic temporary file cleanup
-
❌ Safe download cancellation
-
🚀 Responsive and lightweight interface
| Feature | yt-dlp CLI | yt-dlp GUI |
|---|---|---|
| Graphical Interface | ❌ | ✅ |
| Batch Downloads | ✅ | |
| Progress Bar | Terminal | Beautiful GUI |
| Download Queue | Manual | Built-in |
| Speed & ETA | Terminal | Live UI |
| Folder Browser | ❌ | ✅ |
| Retry Failed Downloads | Manual | ✅ |
| Metadata Options | Command Flags | Checkboxes |
| Responsive UI | N/A | ✅ |
- ✅ Windows 10 / 11
- ✅ Ubuntu
- ✅ Debian
- ✅ Linux Mint
- ✅ Fedora
- ✅ Arch Linux
- ✅ EndeavourOS
- ✅ Manjaro
- ✅ openSUSE
- ✅ macOS (Intel & Apple Silicon)
Before running the application, install:
- Python 3.10+
- yt-dlp
- FFmpeg
- Git (optional)
sudo apt update
sudo apt install yt-dlpsudo dnf install yt-dlpsudo pacman -S yt-dlpsudo zypper install yt-dlpsudo apk add yt-dlppip install -U yt-dlpsudo apt install ffmpegsudo dnf install ffmpegFedora users may need to enable the RPM Fusion repositories before installing FFmpeg.
sudo pacman -S ffmpegsudo zypper install ffmpegsudo apk add ffmpegDownload FFmpeg from the official website and add the bin folder to your system PATH.
Clone the repository:
git clone https://github.com/Nebula953/YT-DLP-GUI.git
cd YT-DLP-GUICreate a virtual environment:
python3 -m venv venvActivate it:
source venv/bin/activatevenv\Scripts\activateInstall dependencies:
pip install -r requirements.txtRun the application:
python main.pyor
./venv/bin/python main.pyYT-DLP-GUI/
├── main.py
├── requirements.txt
├── README.md
├── .gitignore
├── assets/
├── screenshots/
└── ytdlp_gui/
├── __init__.py
├── config.py
├── downloader.py
├── ui.py
└── utils.py
- Paste one or more URLs.
- Select Video or Audio mode.
- Choose quality and output format.
- Configure metadata and subtitle options.
- Click Start Download.
- Downloads run in background worker threads.
- The GUI updates progress bars, ETA, speed, and logs in real time.
- Clicking Stop safely cancels downloads using yt-dlp progress hooks.
Since this application uses yt-dlp, it supports downloading from 1000+ websites, including:
- YouTube
- Vimeo
- Dailymotion
- Twitch
- X (Twitter)
- TikTok
- SoundCloud
- Bilibili
- And many more...
For the complete list, visit the official yt-dlp Supported Sites page.
- Python
- CustomTkinter
- yt-dlp
- FFmpeg
- Threading
- Queue
Contributions, bug reports, and feature requests are welcome.
Feel free to fork the repository, open an issue, or submit a pull request.
If you find this project useful, please consider giving it a ⭐ on GitHub. It helps others discover the project and supports future development.