YTDrop is a cross-platform Python GUI application for yt-dlp β a powerful command-line tool for downloading videos and audio from YouTube and hundreds of other sites. YTDrop wraps yt-dlp in a clean, themeable desktop interface with drag-and-drop support, a live output console, and per-download log files.
- π¨ 15 built-in themes β dark and light, including Catppuccin, Dracula, Tokyo Night, Nord, and more
- π VSCode theme import β apply any
.jsontheme file from the VS Code Marketplace - π Drag-and-drop URL zone β or paste/type URLs directly
- π Format browser β lists all available formats for any URL via
yt-dlp --list-formats - π Video (mp4) and/or Audio (mp3) download modes β both can run simultaneously
- π Resolution slider β 2160p / 1440p / 1080p (default) / 720p / 480p
- πͺ Cookie file support β for age-restricted or members-only content
- βοΈ Editable default parameters for both video and audio modes
- π Configurable output folder β defaults to
~/Downloads - π Per-download log files β saved alongside your media, named to match the output file
- πΊ Live output console β colour-coded progress, warnings, and errors
- β Instant cancel β stops mid-download or mid-retry immediately
| Requirement | Version | Notes |
|---|---|---|
| Python | 3.8+ | |
| tkinter | bundled | Included with Python on Windows; may need separate install on Linux/macOS |
| yt-dlp | latest | |
| ffmpeg | any recent | Required for audio extraction and video+audio merging |
| tkinterdnd2 | any | Optional β enables native drag-and-drop |
Download from python.org β tkinter is included on Windows and most Linux distributions.
macOS: The system Python lacks tkinter. Install via Homebrew:
brew install python python-tkLinux:
# Ubuntu / Debian
sudo apt install python3 python3-tk
# Fedora
sudo dnf install python3 python3-tkinter
# Arch
sudo pacman -S python tkpip install yt-dlpOr download the standalone binary from yt-dlp releases.
| Platform | Command |
|---|---|
| macOS | brew install ffmpeg |
| Ubuntu/Debian | sudo apt install ffmpeg |
| Fedora | sudo dnf install ffmpeg |
| Windows | Download from ffmpeg.org and add to PATH |
# Clone or download this repository
git clone https://github.com/yourname/ytdrop.git
cd ytdrop
# Optional: native drag-and-drop support
pip install tkinterdnd2
# Run
python ytdrop.pychmod +x launch.sh launch_mac.sh| Platform | Method |
|---|---|
| Windows | Double-click launch.bat |
| Linux | ./launch.sh |
| macOS | ./launch_mac.sh |
| Any platform | python ytdrop.py |
Each launcher checks for Python, tkinter, yt-dlp, and ffmpeg, auto-installs yt-dlp if missing, then starts the app detached from the terminal.
- Type or paste URLs into the text area (one per line)
- Click the drop zone to paste from clipboard
- Drag URLs from a browser into the drop zone (requires
tkinterdnd2)
- Enter one or more URLs in the URL box
- Choose Video (mp4), Audio (mp3), or both using the checkboxes
- Set the maximum resolution with the slider (video only)
- Check Use cookie file if needed
- Click β¬ FETCH
Each download produces a matching log file in the output folder (e.g. My Video Title.video.log).
Click π List Formats to run yt-dlp --list-formats on every URL in the list. Results appear in the Output window showing all available quality levels and format codes.
Click β Cancel at any time to stop immediately. The cancel is effective between every output line β it won't wait for a full retry loop (such as ten HTTP 404 fragment retries) to complete before stopping.
Open β Settings to configure:
Appearance β choose from 15 built-in themes or import a VSCode theme (see Themes below).
Cookie file β path to a cookies.txt file for authenticated downloads.
Default parameters β the yt-dlp flags used for each mode. These are editable text fields so you can add any yt-dlp option.
Default video parameters:
-f 'bestvideo[ext=mp4][height<={res}]+bestaudio[ext=m4a]/best[ext=mp4][height<={res}]/best' -o "%(title)s.%(ext)s"
Default audio parameters:
--extract-audio --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s"
{res} is automatically substituted with the value from the resolution slider.
Click π Output Folder in the toolbar to choose where files are saved. The current folder name is shown next to the button. Defaults to ~/Downloads.
YTDrop ships with 15 themes in dark and light variants:
Dark
| Theme | Style |
|---|---|
| Catppuccin Mocha (default) | Soft purple-blue pastels |
| One Dark Pro | Atom-inspired cool greys and blues |
| Tokyo Night | Deep navy with violet accents |
| Dracula | Classic purple and pink |
| Nord | Arctic blue-greys |
| GitHub Dark | GitHub's official dark UI |
| Gruvbox Dark | Warm retro browns and oranges |
| Monokai | High-contrast neons on near-black |
| Solarized Dark | Precision-designed low-contrast dark |
| Material Dark | Google Material deep grey |
Light
| Theme | Style |
|---|---|
| Catppuccin Latte | Warm cream and lavender |
| GitHub Light | GitHub's official light UI |
| Solarized Light | Precision-designed low-contrast light |
| Gruvbox Light | Warm parchment and earth tones |
| One Light | Atom-inspired warm off-white |
Click any theme row in Settings to preview and apply it instantly. The dialog re-skins itself live, including live colour swatches on every row.
Any VS Code .json or .jsonc theme file can be imported:
- Open β Settings
- Click β¬ Import VSCode Theme (.json)β¦
- Select the theme file
The importer handles:
- Standard JSON
- JSONC with
//line comments and/* */block comments - Trailing commas
$schemafields containingvscode://URIs (which a naΓ―ve comment stripper would break)
Imported themes appear in the list marked with β¦ and can be removed with the β button. They are saved in ~/.ytdrop_config.json and persist between sessions.
From GitHub β most themes are open source. Find a theme on the VS Code Marketplace, follow the repository link, navigate into the themes/ folder, and save the .json file.
| Theme | Repository |
|---|---|
| One Dark Pro | github.com/Binaryify/OneDark-Pro |
| Dracula | github.com/dracula/visual-studio-code |
| Tokyo Night | github.com/enkia/tokyo-night-vscode-theme |
| Catppuccin | github.com/catppuccin/vscode |
| Nord | github.com/nordtheme/visual-studio-code |
| Night Owl | github.com/sdras/night-owl-vscode-theme |
| Ayu | github.com/ayu-theme/vscode-ayu |
| Material Theme | github.com/material-theme/vsc-material-theme |
| Monokai Pro | github.com/Monokai/monokai-pro-vscode |
From your VS Code installation β if you already have VS Code installed, every theme is already on disk:
| Platform | Path |
|---|---|
| macOS / Linux | ~/.vscode/extensions/<theme-name>/themes/*.json |
| Windows | %USERPROFILE%\.vscode\extensions\<theme-name>\themes\*.json |
Every fetch and list-formats operation produces a .log file in the output folder. The filename mirrors the downloaded media file:
My Awesome Video.video.log
My Awesome Video.audio.log
https___www.youtube.com_watch_v=....list-formats.log
Each log contains the full command that was run and the complete yt-dlp output, useful for diagnosing failures after the fact.
Some content requires authentication β age-restricted videos, channel memberships, or region-locked uploads. Export cookies from your browser and supply them to YTDrop:
- Install a browser extension such as "Get cookies.txt LOCALLY" (Chrome/Edge) or "cookies.txt" (Firefox)
- Visit the site (e.g. youtube.com) while logged in
- Export cookies as
cookies.txt - In YTDrop β Settings β Cookie File β Browseβ¦ and select the file
- Check "Use cookie file" in the Options panel before fetching
ytdrop/
βββ ytdrop.py # Main application (single file, no extra GUI dependencies)
βββ launch.bat # Windows launcher β checks deps, runs pythonw (no console window)
βββ launch.sh # Linux launcher β checks deps, detaches from terminal
βββ launch_mac.sh # macOS launcher β prefers pythonw / Homebrew Python
βββ requirements.txt # pip dependencies
βββ README.md # This file
# Created automatically at runtime:
~/.ytdrop_config.json # Saved preferences
<output_folder>/<title>.log # Per-download log files
~/.ytdrop_config.json stores:
| Key | Description |
|---|---|
theme_name |
Active theme name |
theme_custom |
Imported VSCode themes (stored as colour dicts) |
cookie_file |
Path to cookies.txt |
video_params |
yt-dlp flags for video downloads |
audio_params |
yt-dlp flags for audio downloads |
download_dir |
Output folder path |
Old config files using the legacy "theme": "dark" / "theme": "light" format are automatically migrated on first launch.
| Problem | Solution |
|---|---|
yt-dlp not found |
Run pip install yt-dlp or ensure the binary is on your PATH |
| No audio track in downloaded video | Install ffmpeg |
| Download fails immediately | Click List Formats first β the URL may be geo-blocked or require login |
| Age-restricted content fails | Set up and enable a cookie file |
| Drag-and-drop not working | Run pip install tkinterdnd2 |
| Theme import fails | Ensure the file is a VS Code colour theme JSON, not a settings or keybindings file |
| Files saved to wrong folder | Check the Output Folder button in the toolbar shows the expected path |
| Swatches disappear after switching theme | Update to the latest ytdrop.py β this was a known bug, now fixed |
Apache 2 License β free to use, modify, and distribute.
- yt-dlp β the engine powering all downloads
- Python tkinter β GUI framework
- Built-in colour palettes from Catppuccin, Dracula, Nord, Tokyo Night, and others
