Convert playlists and albums from music links or CSV exports into fully tagged audio files.
CSVMusic accepts playlist and album links from supported music services, or a playlist exported as CSV from TuneMyMusic, and automatically:
- Finds the best match on YouTube Music
- Downloads the audio
- Adds metadata such as artist, album, and artwork
- Outputs ready-to-use M4A or MP3 files, with optional native Opus output
- Optionally creates
.m3u/.m3u8playlists
Go here: https://github.com/angall1/CSVMusic/releases/tag/v1.6.6
Download one of the following based on your OS:
https://github.com/angall1/CSVMusic/releases/download/v1.6.6/CSVMusic-windows.zip
https://github.com/angall1/CSVMusic/releases/download/v1.6.6/CSVMusic-macos-arm64.zip
https://github.com/angall1/CSVMusic/releases/download/v1.6.6/CSVMusic-macos-intel.zip
https://github.com/angall1/CSVMusic/releases/download/v1.6.6/CSVMusic-linux.zip
Extract the ZIP before running the app. If your desktop does not launch the files directly, open a terminal in the extracted folder and run:
chmod +x CSVMusic yt-dlp
./CSVMusicIf launch fails, copy the terminal output along with uname -m and the contents of /etc/os-release when reporting the problem.
Install the wheel with python -m pip install CSVMusic-*.whl, or install a source checkout with python -m pip install -e ..
Then launch CSVMusic with either:
csvmusic
python -m csvmusic
Python installations still require a supported graphical desktop environment for the Qt interface. Android, Andronix, and other phone-hosted Linux environments are not currently supported or tested.
- Added a lightweight startup update check that prompts when a newer stable CSVMusic release is available, with options to download, be reminded later, or skip that version.
- Fixed intermittent MP3 failures when YouTube exposes only a combined audio/video stream. CSVMusic still prefers audio-only downloads and now safely falls back to extracting audio from the best available combined stream.
- Fixed preflight incorrectly reporting the bundled yt-dlp as too old when antivirus scanning or slower storage made its version probe take more than three seconds.
- Added yt-dlp's automatic YouTube client selection as an early fallback, allowing current upstream clients such as
visionosto recover when a forced client temporarily exposes no playable formats. - Updated and pinned yt-dlp to
2026.08.19, fixing widespread HTTP 403 failures with current YouTubeweb_embeddeddownloads and preventing release builds from silently changing downloader versions. - Fixed current YouTube player-challenge failures by packaging Deno and
yt-dlp-ejs, passing the runtime explicitly, and validating both before downloads begin. - Updated YouTube client fallbacks and diagnostics for current yt-dlp behavior, including clearer HTTP 403, throttling, and JavaScript-runtime messages.
- Added adaptive pacing when YouTube starts throttling or blocking a playlist download.
- Improved force-download handling for low-confidence matches and added candidate fallbacks.
- Added first-class Exportify CSV support for
Track URI,Album Name,Artist Name(s), release dates, and CSVs without a playlist column. - Renamed Load Playlist to Resume Playlist and replaced its folder/file fork with one chooser that accepts a folder or
.m3u/.m3u8file. - Added a compact Paste URL… action to Alternatives for downloading a specific YouTube or YouTube Music video.
- Improved playlist accounting so existing files, queued tracks, duplicate entries, skipped matches, and failures reconcile with the requested track total.
- Shortened exceptionally long track filenames with a stable uniqueness suffix, preventing Windows output-path failures from being misreported as YouTube throttling.
- Added optional native Opus output under Settings. Opus streams are remuxed without lossy re-encoding and support metadata and artwork.
- Prevented FFmpeg failures caused by selecting Apple Music or iTunes auto-import folders.
- Fixed Windows release builds by accepting Deno's PowerShell-formatted SHA256 metadata while retaining archive integrity verification on every platform.
- Forced UTF-8 for packaged downloader and FFmpeg subprocesses so Unicode song titles and sanitized punctuation work reliably on Windows.
- Open the app. First launch may take a few seconds.
- Click Choose... next to Source.
- Paste a supported playlist or album link, then load it.
- Choose an output folder.
- Click Start.
CSV import is still available when a service link is unsupported, private, incomplete, or when CSVMusic warns that a URL import may not contain every track:
- Click Choose... next to Source.
- Select CSV File.
- Use the TuneMyMusic link in that window if you need to create a CSV:
- Choose the original music service as the source.
- Paste the same playlist link, or connect the service if TuneMyMusic asks.
- Export to file as a CSV file.
- Load the CSV, choose an output folder, and click Start.
If a song cannot be matched confidently:
- It will show up highlighted in yellow.
- Click Alternatives to pick a better result.
- Use Listen to preview a candidate in your browser.
- Audio files with:
- Correct artist/title
- Album info
- Embedded artwork
- Optional playlist files:
.m3u.m3u8
Everything is ready to drop into iTunes, a phone, an MP3 player, or a local music library.
- Keep all files in the extracted folder together.
- The packaged app includes:
ffmpegyt-dlpyt-dlp-ejs- Deno
- Some antivirus software may flag bundled download/processing tools. These are usually false positives.
- Your CSV stays local. Direct links are fetched only to read public playlist or album metadata.
- YouTube Music / YouTube is contacted to search and download audio.
- Cookies are optional, but may help with age-restricted or sign-in-only videos.
- Current YouTube extraction requires a supported JavaScript runtime. Packaged releases include Deno and the needed
yt-dlpextras; source installs should usepip install -e .and provide Deno 2.3+ or Node 22+. - Private playlists or pages that hide track data may not import directly. If that happens, export a CSV from TuneMyMusic and load that instead.
- Large Spotify playlist links can be capped at 100 tracks by Spotify's public page data. If CSVMusic warns about this, open Choose... > TuneMyMusic, choose Spotify as the source, paste the same playlist link, export as CSV, then load that CSV through Choose... > CSV File.
Direct link import supports public playlist or album pages from:
- Spotify
- Apple Music
- YouTube Music
- YouTube playlists
- SoundCloud sets
- Deezer
- Amazon Music, when the page exposes public track data
CSV import supports any service TuneMyMusic can export, including most other music platforms.