A modern desktop GUI for yt-dlp — download video and audio in any format
Project description
YT-DLPx
A premium, modern desktop application for downloading media from YouTube and 1000+ other sites, and converting local media files between formats. Powered by yt-dlp and ffmpeg, with a beautiful, custom Slate/Indigo user interface built on CustomTkinter.
Current Version: 0.3.0
Key Features
- Sleek Sidebar Navigation: Modern left-hand vertical sidebar for seamless switching between panels (Download, Convert, and Settings).
- Video & Audio Downloader:
- Download video formats (MP4, MKV, WEBM) and audio-only formats (MP3, AAC, FLAC, WAV, OGG) with customizable quality levels.
- Paste multiple URLs at once for batch/playlist queueing.
- Clipboard Helper: A one-click "📋 Paste" button to instantly retrieve and append links.
- Card-style queue rows with Tailwind-inspired colored status badges, real-time speed, ETA, and progress bar feedback.
- Local Media Converter:
- Batch select local video/audio files.
- Convert to 15+ formats (MP4 H.264/H.265, WEBM, MKV, GIF, MP3, AAC, FLAC, and more) with multi-threaded ffmpeg conversion.
- Real-time conversion progress bar and thread-level cancellation.
- Centralized Settings Panel:
- Theme Switcher: Instantly toggle between System, Dark, and Light modes.
- Custom Destinations: Configure and browse default save locations for downloads and conversions.
- Concurrency Sliders: Move concurrent download/conversion limits to the settings view to keep the workspace clean.
- Settings are saved automatically at
~/.config/ytdlpx/settings.json.
Prerequisites
Before installing yt-dlpx, make sure you have the following system dependencies installed on your system path.
1. FFmpeg
Used for merging downloaded video/audio streams and performing conversions.
# macOS
brew install ffmpeg
# Linux (Debian/Ubuntu)
sudo apt install ffmpeg
2. Python with Tcl/Tk support
The GUI requires Tkinter, which requires a Python interpreter compiled with Tcl/Tk. Standard builds downloaded by some managers (like default uv or pyenv) may omit Tcl/Tk on macOS. It is recommended to use Homebrew's Python.
# macOS (Python 3.11 - 3.13)
brew install python@3.13
brew install python-tk@3.13
Installation
There are two recommended ways to install yt-dlpx directly from PyPI (pip).
Method 1: Using pipx (Recommended for desktop use)
pipx installs yt-dlpx in an isolated environment and exposes the yt-dlpx command globally.
# 1. Install pipx (if needed)
brew install pipx
pipx ensurepath # Restart your terminal after this
# 2. Install ytdlpx-gui (pointing to Homebrew's Python to ensure Tkinter support)
pipx install ytdlpx-gui --python $(brew --prefix python@3.13)/bin/python3.13
Method 2: Using uv (Fastest tool runner)
uv can install tools globally, or run them instantly on-the-fly.
-
Run on-the-fly (without installing):
uvx --from ytdlpx-gui --python $(brew --prefix python@3.13)/bin/python3.13 yt-dlpx
-
Install globally:
uv tool install ytdlpx-gui --python $(brew --prefix python@3.13)/bin/python3.13
Launch
Once installed, simply run:
yt-dlpx
Development Setup
If you want to run the project locally or contribute to development:
- Clone or navigate to the repository directory.
- Initialize and sync the virtual environment using
uv(pointing to Homebrew's Python):uv sync --python $(brew --prefix python@3.13)/bin/python3.13
- Run the application:
uv run python src/ytdlpx/app.py
Troubleshooting
ModuleNotFoundError: No module named '_tkinter'
Your Python interpreter lacks Tcl/Tk. Ensure you installed python-tk from Homebrew and force a reinstall pointing explicitly to that Python version:
pipx install ytdlpx-gui --python $(brew --prefix python@3.13)/bin/python3.13 --force
ffmpeg not found warning on launch
The application will launch, but video/audio merging and local file conversions will fail. Install ffmpeg using Homebrew or your Linux package manager.
License
This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for the full license text.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ytdlpx_gui-0.3.0.tar.gz.
File metadata
- Download URL: ytdlpx_gui-0.3.0.tar.gz
- Upload date:
- Size: 40.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad7b730adbd8eb02859f27a6e177457292ee98a3938fcff6fe41afdedb50eefe
|
|
| MD5 |
cd69b1c28a3de1aeb0a97a3660667935
|
|
| BLAKE2b-256 |
ff1f13419918ac2881b399977f0d2e604873edf0c0f2fbaa9eaedf0e00ff1918
|
File details
Details for the file ytdlpx_gui-0.3.0-py3-none-any.whl.
File metadata
- Download URL: ytdlpx_gui-0.3.0-py3-none-any.whl
- Upload date:
- Size: 39.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd3ec6ff7126ab61a3542fa601b96338611e60f7565fbfa359d085da16414b38
|
|
| MD5 |
886bbab4e35d3d651beb8ab615e66366
|
|
| BLAKE2b-256 |
a5d08582a26f3cc755d3ce706619ee04ddb5688f526ecf01cac5f9c641ab9144
|