Looking for Reliable GitHub Repos or Tools to Download Spotify Playlists in High Quality

I’ve been searching for trustworthy GitHub repositories that can help with managing Spotify playlists, especially tools that support playlist exporting, metadata handling, and offline music organization.

My goal is to build a reliable local music setup where I can access my favorite tracks easily, preserve playlist information, and avoid losing track of songs I’ve saved over time. There are many open-source tools available, but it can be difficult to tell which ones are updated, safe, and actually useful.

Some repositories look outdated, while others seem unclear about audio quality, metadata support, or playlist handling. That’s why I’m looking for recommendations from people who have already tested these tools.

If you know any GitHub projects that work well for Spotify playlist management, exporting playlist data, organizing metadata, or helping maintain a local music library, I’d love to hear about them.

It would be helpful to know:

  • Which repository you used

  • Whether it is still maintained

  • How well it handles large playlists

  • Whether it preserves metadata properly

  • Any issues or red flags to watch out for

Open-source, clean, and beginner-friendly tools would be ideal.

Drop your suggestions in the comments. I’d love to know what has worked best for you.

Try this this one!
It has more than 200 stars and not a lot of issues:

Enjoy!

I tried that one and I loved it Sunnify Spotify downloader

Use This. It downloads flac + more type of format.

Listen — your one question is actually four hiding in a trench coat, and the Zotify every guide on Google tells you to install is fucking dead since August '25. Most guides haven’t noticed. Below are the boxes — paste-ready configs, the four working pipelines, the Apple Music backdoor that wants no subscription, the dragons and the exact fixes. Crack 'em open, take what you need.

🎯 The 4 pipelines — pick yours, paste, done

one decision, one tool, one config flag that decides if it works

If you want… Use Quality · Catch
:magic_wand: Easy + offline, don’t care about source Googolplexed0/zotify OGG 320kbps from Spotify · BULK_WAIT_TIME=30 or it 429s you
:high_voltage: Zero install, paste a link @DeezLoad2Bot FLAC from Deezer’s catalog · bot vanishes monthly, follow @DEDSEClulz for the current handle
:bullseye: True lossless FLAC/ALAC nathom/streamrip v2.2.0 24-bit FLAC from Deezer/Qobuz, ALAC from Apple · paid sub OR free with use_deezloader = true
:firecracker: Apple Music ALAC, no Apple sub AppleMusicDecrypt + wm.wol.moe wrapper Up to 24/192 true lossless · wrapper down? flip to wm1.wol.moe

:light_bulb: Free streamrip trick most people miss. Set use_deezloader = true in ~/.config/streamrip/config.toml → free 320kbps Deezer MP3, no ARL token rabbit hole. Sidesteps the whole “where do I get an ARL” supply chain.

🔥 The dead-repo trap — Zotify is a corpse, use this fork or waste a Saturday

15-second read · the August 2025 login change + the one-line install that actually works

The canonical zotify-dev/zotify fell over in August 2025 when Spotify rewrote the login flow. Original = dead. Fork = alive. The fork:

pip install git+https://github.com/Googolplexed0/zotify.git

That’s it. v0.9.0, actively patched, current rate-limit fight is being fought live in issue #135.

:light_bulb: Login note — use your email, not username. Spotify killed terminal-only login in the August 2025 change. The fork handles the browser handshake automatically; just click the link it prints.

Any guide saying pip install zotify without specifying the fork is reading from 2024. Close the tab.

🪤 The 4 dragons + paste-ready fixes

every error you’ll see → one-line fix · click when something breaks

These aren’t failures. They’re the path. Each one has a fix shorter than a tweet.

Error rate limit exceeded 429 (Zotify) → Spotify pushing back. Paste in config:

BULK_WAIT_TIME = 30
DOWNLOAD_RATE_LIMITER = 1

Maintainer’s own recommendation — README troubleshooting.

Error invalid_client OAuth fail (streamrip + Tidal) → Tidal broke their OAuth Oct 2025. Switch to Deezer side, or wait — nathom patches inside a week or two.

Error decryption error (AppleMusicDecrypt) → the v2 README literally says “this problem usually disappears after a few days.” Flip to alternate wrapper:

[instance]
url = "wm1.wol.moe"
secure = true

Wrong recording grabbed (got the live version instead of studio) → ~3% of cross-service ISRC matches slip, usually remasters that legitimately got new ISRCs. Run beets after — its manual-match prompt fixes these one click each.

🧪 My setup — burner account, exact config, the one time it bit me

60-second read · paste my config, skip the trial-and-error

Running Googolplexed0/zotify on a burner Spotify account. The config (~/.config/zotify/config.json highlights):

{
  "BULK_WAIT_TIME": 30,
  "DOWNLOAD_RATE_LIMITER": 1,
  "DOWNLOAD_FORMAT": "ogg",
  "DOWNLOAD_QUALITY": "VERY_HIGH",
  "OUTPUT": "{album_artist}/{album} ({year})/{track_number:02} - {artist} - {title}.{ext}"
}

50-song playlist clears in ~20 minutes. No rate-limit drama. The output template plays nicely with beets if you bolt it on later (see :wrench:).

:drop_of_blood: From the trenches — I copied credentials.json to a second machine once without deleting the old one. Spotify saw two clients on one session and froze the login for two hours. Fix:

rm ~/.local/share/zotify/credentials.json

Then log in again with your email (not username — August 2025 change).

🔧 The library layer — the part you said you wanted but didn't know to name

downloader picks bytes · this layer turns them into a library that survives three years

You said in the OP: “preserve playlist info” + “avoid losing track of songs I’ve saved.” That’s not a downloader job. Different layer entirely.

The stack:

  • beets — the heavy hitter. Runs after your downloader. Pulls metadata from MusicBrainz, embeds cover art, normalizes filenames, dedups.

    pip install beets
    beet config -e   # opens the YAML
    

    Enable the Spotify plugin → stores spotify_album_id + ISRC permanently. Your library remembers which Spotify playlist a track came from, forever.

  • MusicBrainz Picard — GUI if YAML scares you. Drag folder → Lookup → tagged.

  • Lidarr — Sonarr but for music. Track an artist, Lidarr grabs new releases on release day.

  • Wicklowwolf’s Docker stack — production setup. Glues Lidarr + LidaTube + Lidify + Syncify (the last one auto-syncs Spotify playlists via yt-dlp on a schedule). One docker compose up and the whole thing runs.

Any pipeline from chapter :bullseye: + beets = the reliable local music setup you described in the OP.

🧨 Deeper underground — Apple ALAC free, PlayPlay post-DMCA, Spotube alive

click only if you want to see the mechanism behind the curtain

:light_bulb: Apple Music ALAC without paying Apple a cent. AppleMusicDecrypt v2 supports public decryption-wrapper instances. Paste in config.toml:

[instance]
url = "wm.wol.moe"
secure = true

Wrapper does the DRM-decryption on someone else’s server (40 MB/s per instance). True lossless 16/44.1 → 24/192. Backup instance: wm1.wol.moe. Biggest “wait what” finding in this entire topic.

:light_bulb: Spotify Lossless cannot be downloaded by any third-party tool, period. Spotify launched Lossless for Premium Sept 10, 2025 — but Spotify Connect (the protocol librespot speaks) doesn’t deliver FLAC. The librespot maintainer has scaffolded FLAC support in code; Spotify just won’t serve it. Anyone claiming “Spotify Lossless download” is selling air unless they’re running PlayPlay decryption against a paid Premium account.

:light_bulb: Spotify’s audio DRM isn’t Widevine — it’s called PlayPlay. Widevine is for video podcasts only. PlayPlay = the lock on audio. cycyrild got DMCA’d in April 2025 for shipping a PlayPlay bypass — same dev reframed the work as a research project. The code lives at cycyrild/spotify-dl-cli (runner) + cycyrild/another-unplayplay (key generator). Not for beginners, but the mechanism is on full display.

:light_bulb: Spotube isn’t dead either. Spotify cease-and-desisted Spotube in early 2025; project pivoted to a plugin architecture. Install Spotube v5.1.1 → add spotube-plugin-spotify separately → Spotify integration restored. Most “Spotube is dead” reviews from mid-2025 missed the pivot.

📋 Your 7 concerns mapped — so you know I read every word

proof of listening · 7 things asked, 7 places they get handled

You wrote Lives in
Maintained, not abandoned :fire: The dead-repo trap + every pipeline link verified May 2026
Won’t smuggle malware :bullseye: All four pipelines = open-source GitHub, code is readable
Audio quality Pipeline 1 → 320kbps · Pipelines 3-4 → true lossless
Metadata handling Downloader = tags · beets = library (different layer, see :wrench:)
Playlist info preserved beets stores spotify_album_id + ISRC forever
Big playlists All tools handle hundreds — set rate-limiter (see :mouse_trap:)
Beginner-friendly Pipeline 1 (one binary) or Pipeline 2 (Telegram, zero install)
⚡ One-liner cheat sheet — every command in one place, pin this

the whole post in 12 commands · paste, run, done

Install the alive Zotify fork:

pip install git+https://github.com/Googolplexed0/zotify.git

Install streamrip (any quality, any service):

pip install streamrip
rip config -o   # opens config.toml — set use_deezloader=true for free 320k

Install AppleMusicDecrypt + use the free wrapper:

git clone https://github.com/WorldObservationLog/AppleMusicDecrypt.git
cd AppleMusicDecrypt && bash ./tools/install-deps.sh && poetry install
cp config.example.toml config.toml
# In config.toml set: url = "wm.wol.moe", secure = true
poetry run python main.py

Install beets + Spotify plugin (the library layer):

pip install beets
beet config -e   # add 'spotify' to plugins list
beet import ~/Music

Telegram path (zero install): drop a Spotify link to @DeezLoad2Bot. Done.

streamrip free 320kbps Deezer (no ARL): in ~/.config/streamrip/config.toml[deezer] use_deezloader = true.

Reset Zotify login if Spotify freezes it:

rm ~/.local/share/zotify/credentials.json

The simple-pimple: original Zotify = dust. The fork is the loot. Apple Music ALAC = free via wm.wol.moe. Library = beets, always beets. Most guides will still send you to the corpse next week — you’ll know better. Three configs, twenty minutes, real music library. Now go raid.

I use Stash. It downloads in FLAC online and offline https://github.com/rawnaldclark/Stash