Convert any playlist CSV into a local ZIP of MP3 files with album art and metadata (title, artist, album, year, genre). Everything runs locally on your machine.
Tired of streaming algorithms deciding what you should listen to?
Tired of losing playlists, rising subscription prices, or limited offline access?
ZipifyTunes lets you take back control; your music, your files, your way.
- Takes a playlist CSV (Spotify, Apple Music, YouTube Music, custom, etc.)
- For each row, it:
- Reads title, artist, album, year, genre (from many possible column names)
- Searches the track on YouTube
- Downloads the audio as MP3 using
youtube-dl-exec/yt-dlp - Fetches square album art from the iTunes Search API
- Writes ID3 tags (title, artist, album, year, genre) and embeds the cover
- Zips everything into
songs.zipfor you to download from the browser
- Upload: The CSV you upload is stored briefly in
/uploads/bymulterand removed when the process finishes - Search:
yt-searchfinds the best matching YouTube video for each track - Download:
youtube-dl-exec(yt-dlp) downloads and converts audio to MP3 (saved temporarily inside an auto-generated folder likemp3s_123456789/) - Covers: iTunes Search API provides square artwork, saved temporarily then embedded
- Tagging:
ffmpegwrites ID3 tags: title, artist, album, year, genre + embedded cover - Packaging:
archiverbuilds a ZIP of all generated MP3s and streams it back to your browser
Make sure you have Node.js installed: 👉 https://nodejs.org
FFmpeg handles audio processing, including embedding album art, writing MP3 metadata (ID3 tags), and packaging the final audio stream without re-encoding. It’s required because yt-dlp only downloads audio. FFmpeg does the tagging, cover embedding, and final MP3 formatting.
macOS (Homebrew):
brew install ffmpegUbuntu / Debian Linux:
sudo apt update
sudo apt install ffmpegWindows:
winget install Gyan.FFmpegManual install: https://www.gyan.dev/ffmpeg/builds/
# clone your repo
git clone https://github.com/yourname/zipify-tunes.git
cd zipify-tunes
# install dependencies
npm install
# start the local server
npm start
# then open
http://localhost:3000-
Export your playlist as a CSV
- You can use tools like https://www.chosic.com/spotify-playlist-exporter/
- Or any other service that gives you a CSV with track info
-
Open
http://localhost:3000 -
Choose your CSV file
-
Pick your MP3 quality (128 / 192 / 256 / 320 kbps or “Best”)
-
Click Download MP3s
-
Wait for the progress bar to reach 100%
-
Your browser will download
songs.zipcontaining:- MP3s with:
- Clean file names
- Embedded album cover
- Title / Artist / Album / Year / Genre tags
- MP3s with:
If you want to access your music from anywhere, you can use the PeerSky Browser and upload the generated ZIP from ZipifyTunes to IPFS or Hypercore. Then you can stream or download your MP3s through public HTTP gateways directly on your phone.
This tool is intended only for personal, local use:
- Do not use this project to infringe copyright, redistribute music, or share copyrighted material without permission.
- You are solely responsible for how you use this code and for complying with your local laws and the terms of service of any platforms you access.

