🎵 YouTube Music Downloader TUI
A cross-platform Terminal User Interface (TUI) application for macOS, Windows, and Linux designed to download YouTube Music playlists and tracks with the highest possible audio quality, supporting browser-based authentication, cookie extraction, and audio re-encoding.
✨ Features
- Cross-Platform: Runs natively in macOS (Terminal, iTerm2), Linux (Alacritty, Kitty, GNOME Terminal), and Windows (Windows Terminal, PowerShell, CMD).
- Highest Audio Quality:
- Automatically queries and extracts the best available audio streams (
bestaudio/best), unlocking 256 kbps Opus/AAC when authenticated with YouTube Music Premium. - Option to retain original bitstream (zero quality loss) or re-encode with FFmpeg.
- Automatically queries and extracts the best available audio streams (
- Flexible Audio Re-Encoding:
- MP3: Up to 320 kbps CBR or VBR 0.
- M4A / AAC: High quality 256 kbps AAC.
- FLAC: Lossless compression container.
- OPUS: High-efficiency modern codec.
- Embedded Cover Art & Metadata:
- Automatically downloads high-resolution artwork and embeds it into MP3 ID3 tags, M4A mp4-atoms, or Opus tags.
- Automatically tags Track Title, Artist, Album, Track Number, and Release Year.
- Interactive Browser Authentication & Cookie Grabber:
- Method 1 (Recommended): Opens YouTube Music in an isolated browser window (Chrome, Brave, Edge, Chromium) with DevTools remote debugging. Sign in to your Google Account, and the app automatically captures and saves session cookies into Netscape
cookies.txtformat. - Method 2 (1-Click Sync): Direct 1-click cookie sync from already-installed browsers (Google Chrome, Mozilla Firefox, Microsoft Edge, Brave, Opera).
- Method 3 (Manual Import): Import any existing Netscape
cookies.txtfile.
- Method 1 (Recommended): Opens YouTube Music in an isolated browser window (Chrome, Brave, Edge, Chromium) with DevTools remote debugging. Sign in to your Google Account, and the app automatically captures and saves session cookies into Netscape
- Dark & Light Terminal Background Compatibility:
- Built-in theme switching (
textual-dark,textual-light,nord,solarized-light,solarized-dark,dracula, etc.). - Press
torF2at any time to toggle between Dark and Light mode.
- Built-in theme switching (
- Comprehensive Dual Progress Indicators:
- Current Track Progress Bar: Live percentage, downloaded/total bytes, download speed (e.g.
3.4 MB/s), and ETA countdown. - Overall Playlist Progress Bar: Overall progress, completed track counter (e.g.
12 / 20 tracks), and percentage. - Live Tracklist Queue: Interactive data table showing track number, title, artist, duration, and real-time status badges (
⏳ Pending,⬇ Downloading,🔄 Transcoding,✓ Done,✗ Error). - Activity Log: Dedicated log console displaying real-time download and FFmpeg transcoding output.
- Current Track Progress Bar: Live percentage, downloaded/total bytes, download speed (e.g.
- Automatic Dependency Verification:
- Automatically verifies system dependencies (FFmpeg, FFprobe, and system browsers) on startup.
- Warns proactively with exact OS-tailored install commands before broken downloads occur.
- Dedicated CLI diagnostics command (
yt-music-dl --check-deps) and Desktop GUI 🛠 Dependencies viewer.
🚀 Installation & Prerequisites
Prerequisites
- Python 3.10+
- FFmpeg: Required for audio extraction, transcoding, and artwork embedding.
- macOS:
brew install ffmpeg - Linux (Ubuntu/Debian):
sudo apt install ffmpeg - Linux (Arch):
sudo pacman -S ffmpeg - Windows:
winget install Gyan.FFmpegorchoco install ffmpeg
- macOS:
Install via pipx (Recommended)
pipx runs the app in an isolated environment and adds yt-music-dl and yt-music-gui to your PATH:
pipx install yt-music-downloader
# Or install directly from GitHub:
pipx install git+https://github.com/tekk/yt-music-downloader.git
Install via uv
uv tool install yt-music-downloader
# Or directly from GitHub:
uv tool install git+https://github.com/tekk/yt-music-downloader.git
Standalone Precompiled Binaries
Check the Latest Releases for:
- Windows x64 / ARM64:
.zipwith portable.exe - Linux: Standalone
.AppImage(runs on any modern distro) - Debian / Ubuntu: Native
.debpackage
Install from Source
git clone https://github.com/tekk/yt-music-downloader.git
cd yt-music-downloader
# Using uv (recommended)
uv venv && uv pip install -e .
# Or using standard venv + pip
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
💻 Usage
Run the application:
yt-music-dl
Or run directly with main.py:
python main.py
CLI Arguments
You can pre-load a playlist URL and settings directly from the terminal:
# Open directly with a playlist URL
yt-music-dl "https://music.youtube.com/playlist?list=PLxxxxxxxxxxxxxxx"
# Set default format and quality
yt-music-dl -f mp3 -q 320
# Specify download directory and custom theme
yt-music-dl -o ~/Music/Albums -t textual-light
# Check system dependencies (FFmpeg, FFprobe, browsers)
yt-music-dl --check-deps
# Show full help
yt-music-dl --help
⌨ Keyboard Shortcuts
| Key | Action |
|---|---|
t / F2 |
Toggle Dark / Light Theme |
i |
Inspect URL (fetches and displays playlist tracks) |
d |
Start Download |
c |
Cancel Download |
l |
Open Login & Cookie Manager |
s |
Open Settings |
q / Ctrl+Q |
Quit |
🔐 Logging In & Premium Audio
YouTube Music delivers higher bitrate streams (e.g. 256kbps AAC / Opus) and unlocks private playlists ("Liked Music") when authenticated:
- Press
lor click the 🔓 Login badge in the header. - Click 🚀 Open Browser & Login.
- Sign into your Google account in the opened window.
- The application automatically detects the login event, grabs session cookies, saves them securely to the application config directory, and updates the header badge to 🔒 Logged In.
- Alternatively, use the 📥 Sync from Browser dropdown if you are already signed into YouTube Music in your daily browser (Chrome, Firefox, Edge, etc.).
📁 Storage & Configuration Paths
Settings and cookies are stored across OSes in standard user directories via platformdirs:
- Linux:
~/.config/yt-music-downloader/ - macOS:
~/Library/Application Support/yt-music-downloader/ - Windows:
%APPDATA%\yt-music-downloader\
Downloaded music defaults to:
~/Music/YT-Music/(or%USERPROFILE%\Music\YT-Music\on Windows).- Each playlist is automatically organized into its own named subfolder with numbered tracks (
01 - Track Name.mp3).
🧪 Running Tests
Run the test suite with pytest:
pytest -v
📄 License
MIT License.
Metadata
Release files for yt-music-downloader 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| yt_music_downloader-0.0.5.tar.gz | 2.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| yt_music_downloader-0.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.1 MB
Release files / yt_music_downloader-0.0.5.tar.gz
| Download URL | yt_music_downloader-0.0.5.tar.gz |
|---|---|
| Size | 2.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3b967a96e97761e91b1b7a53f940fe5f77ae6590da95ffeb601ac98355db289
|
|
BLAKE2b-256 checksum How to use checksums |
067ae98607da16dc37713441eb8f231ff2e1f17441afa2d33f908d17bd4afbe5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency logRelease files / yt_music_downloader-0.0.5-py3-none-any.whl
| Download URL | yt_music_downloader-0.0.5-py3-none-any.whl |
|---|---|
| Size | 2.6 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6a0d0d4a0d874d4ae00982e3848a3e6bbcbe89e265cfe72dcacc10a1656e49c4
|
|
BLAKE2b-256 checksum How to use checksums |
2107b856640451a7e90db6c3c66651f377c487f4e2b51c4e44f784e321e261d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency log