The smartest YouTube โ MP3 downloader
Auto-tags with MusicBrainz ยท Embeds album art ยท Fetches lyrics ยท Upgrades quality via Soulseek ยท Normalizes loudness ยท Smart renaming
One command. Perfect MP3.
pip install youtune
youtune "https://youtube.com/watch?v=dQw4w9WgXcQ" โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ youtune v1.0.0 โ
โ The smartest YouTube โ MP3 downloader โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
๐ต Rick Astley โ Never Gonna Give You Up (confidence: 90%)
โ
Metadata found via MusicBrainz
๐ Album: Whenever You Need Somebody
๐
Year: 1987
#๏ธโฃ Track: 1
๐ Lyrics found (36 lines)
๐ผ๏ธ Cover art embedded
๐ Renamed โ Rick Astley - Never Gonna Give You Up.mp3
โจ Done!
yt-dlp -x --audio-format mp3 "https://youtube.com/watch?v=..." gives you:
- โ Filename:
Rick Astley - Never Gonna Give You Up (Official Music Video) [HD Remaster].mp3 - โ No artist, album, year, or track number
- โ No album art
- โ No lyrics
- โ 128kbps YouTube audio, no loudness normalization
- โ Messy filenames with junk like "(Official Video)", "[HD]", etc.
youtune fixes all of that โ automatically.
| Feature | What it does | |
|---|---|---|
| ๐ง | Smart title parsing | Strips "Official Music Video [HD Remaster]" โ extracts clean artist + song |
| ๐ท๏ธ | MusicBrainz tagging | Looks up the real recording โ writes ID3v2 tags (artist, album, year, track #, genre) |
| ๐ผ๏ธ | Album art | Fetches cover from Cover Art Archive โ embeds in MP3 |
| ๐ | Lyrics | Fetches synced/plaintext lyrics from lrclib โ embeds in file |
| ๐ฅ | Soulseek upgrade | Searches Soulseek for FLAC/320kbps โ replaces YouTube download |
| ๐ | Loudness normalization | EBU R128 normalization โ no more quiet/blasting tracks |
| ๐ | Playlists | Download + tag entire playlists in one shot |
| โ๏ธ | Smart renaming | Rick Astley - Never Gonna Give You Up.mp3 not vevo_aU_official(1).mp3 |
| ๐ | Dry-run search | youtune search "Artist - Song" โ preview metadata without downloading |
| ๐ | Thousands of sites | Works with any site yt-dlp supports โ not just YouTube |
pip install youtunePrerequisites: yt-dlp and ffmpeg must be on your PATH:
# macOS
brew install yt-dlp ffmpeg
# Ubuntu / Debian
sudo apt install ffmpeg && pip install yt-dlp
# Windows (winget)
winget install yt-dlp.yt-dlp Gyan.FFmpeg
# Arch
sudo pacman -S yt-dlp ffmpegpip install youtune[soulseek]youtune "https://youtube.com/watch?v=dQw4w9WgXcQ"youtune "https://youtube.com/watch?v=..." --lyrics --normalizeyoutune "https://youtube.com/playlist?list=PL..." -o ~/Music/Playlistyoutune "https://youtube.com/watch?v=..." \
--soulseek \
--soulseek-user myusername \
--soulseek-pass mypasswordDownloads from YouTube first, then searches Soulseek for FLAC or 320kbps. If found, replaces the YouTube file.
youtune search "Radiohead - Everything In Its Right Place"youtune "https://youtube.com/watch?v=..." --no-tag --no-art --no-rename YouTube URL
โ
โผ
โโโโโโโโโโโโโโ
โ yt-dlp โ Extract audio โ MP3
โโโโโโโฌโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโ
โ Parse โ "Rick Astley - Never Gonna Give You Up (Official Video) [HD]"
โ title โ โ artist: "Rick Astley", song: "Never Gonna Give You Up"
โโโโโโโฌโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโ
โ MusicBrainz โ Lookup recording โ album, year, track #, MBIDs
โโโโโโโฌโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโ
โ Cover Art โ Fetch from Cover Art Archive โ embed in MP3
โ Archive โ
โโโโโโโฌโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโ
โ lrclib โ Fetch synced lyrics โ embed in MP3
โโโโโโโฌโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโ
โ mutagen โ Write ID3v2 tags + APIC art + USLT lyrics
โโโโโโโฌโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโ
โ Soulseek โ (optional) Search for FLAC/320 โ replace YouTube file
โโโโโโโฌโโโโโโโ
โ
โผ
Artist - Title.mp3 โจ
(clean, tagged, art, lyrics)
usage: youtune download [-h] [-o OUTPUT] [-q QUALITY] [--normalize] [--lyrics]
[--no-tag] [--no-art] [--no-rename] [--soulseek]
[--soulseek-user USER] [--soulseek-pass PASS]
[--prefer-flac] [--min-bitrate N] [--keep-youtube]
URL
-o, --output Output directory (default: .)
-q, --quality Audio quality 0 (best) โ 9 (worst)
--normalize Apply EBU R128 loudness normalization
--lyrics Fetch & embed lyrics
--no-tag Skip MusicBrainz tagging
--no-art Skip cover art
--no-rename Keep original filename
--soulseek Search Soulseek for better quality
--soulseek-user Soulseek username
--soulseek-pass Soulseek password
--prefer-flac Prefer FLAC from Soulseek (default: true)
--min-bitrate Minimum Soulseek bitrate (default: 256)
--keep-youtube Keep YouTube file when Soulseek upgrades
Does it work with Spotify / SoundCloud / Bandcamp?
Yes! youtune works with any URL that yt-dlp supports โ that's thousands of sites.
What if MusicBrainz doesn't have the track?
youtune falls back to the parsed YouTube title. You'll still get a clean filename and basic ID3 tags from whatever was parsed.
What's the Soulseek upgrade?
YouTube audio is typically 128kbps AAC. Soulseek is a P2P network where people share FLAC and 320kbps MP3s. If you enable --soulseek, youtune will search for and download a higher-quality version to replace the YouTube rip. Requires a free Soulseek account.
Can I use it in scripts / CI?
Yes โ exit code 0 on success, non-zero on failure. Use -v for debug logging. No interactive prompts.
Why not just use beets?
beets is great for library management, but it's a heavy setup. youtune is zero-config โ one command and you're done. You can pipe youtune output into beets if you want both.
Contributions welcome! See CONTRIBUTING.md.
- yt-dlp โ the download engine that makes this possible
- MusicBrainz โ open music encyclopedia
- Cover Art Archive โ free cover art API
- lrclib โ open-source lyrics database
- mutagen โ Python audio metadata library
- beets โ the music organizer for obsessives
- slsk-batchdl โ Soulseek batch downloader