βͺ S U N O B A C K U P
Your Suno library, downloaded locally. Every format. Every track. One click.
The only tool on the internet that does it all in one click: π₯ Triggers and downloads native WAV masters (Pro) π¨ Creates high-quality MP3s with embedded cover art ποΈ Organizes everything into a perfect folder structure with a complete CSV library logbook.
You've spent hours β maybe hundreds of hours β creating music on Suno. Prompts perfected, styles refined, hidden gems buried three pages deep in your library.
Suno doesn't have a bulk export button. You do now.
Suno Backup scans your entire library using Suno's own private API, extracts every song ID it can find, and downloads everything to your local machine β organized, labeled, and ready for any DAW, streaming service, or personal archive.
| Format | Details |
|---|---|
| π΅ MP3 | Full-quality stream audio |
| πΌ WAV | Lossless master β triggers Suno's server-side conversion automatically (Pro) |
| π¬ WEBM | Music video with visualizer (Pro) |
| πΌοΈ Cover Art | High-res JPEG thumbnail |
| π Metadata JSON | Full API response β prompts, tags, model, stats |
| π CSV Index | Your entire library in a spreadsheet, with every CDN URL pre-computed |
No terminal experience needed. Just double-click and log in.
There are two launchers per OS: one for the terminal (CLI) backup flow, one for the desktop GUI. Use whichever you prefer.
| You want⦠| Windows | macOS / Linux |
|---|---|---|
| Terminal β run in a console, type Y to download | START_WINDOWS.bat |
bash START_MAC_LINUX.sh |
| GUI β window with Scan / Backup buttons | START_GUI_WINDOWS.bat |
bash START_GUI_MAC_LINUX.sh |
Double-click β START_WINDOWS.bat (CLI)
β START_GUI_WINDOWS.bat (GUI)
bash START_MAC_LINUX.sh # CLI
bash START_GUI_MAC_LINUX.sh # GUIThat's genuinely it. On first run, the tool will:
- π¦ Create a self-contained Python virtual environment
- π₯ Install all dependencies automatically
- π Install a Playwright Chromium browser
- π Open a browser window β log in to Suno as normal
- π Scan your entire library (three-phase: API + DOM + batch enrichment)
- π Export a full CSV index of every song
- β¬οΈ Download everything, skipping files already on disk
If you'd rather run the app without touching Python files or launchers at all, you can build a native .exe or executable for your platform.
Simply run the included build scripts (ensure you have Python installed first):
- Windows: Run
build_windows.bat - macOS / Linux: Run
bash build_mac_linux.sh
This uses PyInstaller to bundle the app. Once finished, check the dist/ folder for your standalone Suno Backup application!
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β βͺ SUNO BACKUP β archive your music library v2.0 β β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ€
β OUTPUT FOLDER β Songs: 312 / 847 64% β
β ~/suno_library [β¦] β ββββββββββββββββββββββββββββ β
β β β
β DOWNLOAD β π΅ MP3 πΌ WAV π¬ WEBM πΌ ART β
β β MP3 audio β 312 298 241 312 β
β β WAV audio PRO β β
β β WEBM video PRO β Activity Log β
β β Cover art β βββββββββββββββββββββββββββββββββ β
β β Metadata JSON β β βͺ Midnight Frequency β β
β β β β WAV (convert + download) β β
β WAV DELAY β β β Cover art (JPEG) β β
β min 4 β max 8 β β β MP3... β β
β β βββββββββββββββββββββββββββββββββ β
β β Scan Library β β
β β‘ Start Backup β β
β βΉ Stop β β
β β Clear Vault β β
ββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββ€
β RUNNING Downloading song 312 of 847 v2.0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Your library lands organized and clean:
suno_library/
βββ suno_library.csv β your full library in a spreadsheet
βββ song_ids.txt β plain list of every discovered ID
β
βββ Midnight_Frequency__43b0804d/
β βββ metadata.json β prompt, tags, model, stats
β βββ image_43b0804d.jpeg β cover art
β βββ Midnight_Frequency.mp3
β βββ Midnight_Frequency.wav
β βββ Midnight_Frequency.webm
β
βββ Desert_Radio__8f2a1c9e/
β βββ ...
Every song gets its own folder named Title__UUID β human-readable and collision-proof.
Most tools stop at the public API. This one doesn't.
Phase 1 β API feed pagination
Walks through /api/feed/v2/ page by page until the list is exhausted. Gets everything Suno officially exposes.
Phase 2 β DOM scraping
Opens your library in a headless browser and scans the raw HTML for UUID patterns: image_{id}.jpeg, {id}.webm, {id}.mp3, /song/{id} hrefs, and embedded JSON blobs. Catches songs the API misses.
Phase 3 β Batch enrichment
Any IDs found only in the DOM β not in the API feed β get sent to /api/get_songs_by_ids in batches of 20 to pull their full metadata.
The result: a CSV with every song you've ever created, including ones buried beyond the API's default pagination.
Your login tokens never leave your machine.
Tokens are encrypted with Fernet (AES-128-CBC + HMAC-SHA256) and stored in a hidden .suno_vault file. The encryption key is derived from your machine's unique hardware fingerprint β hostname, MAC address, machine GUID, and a locally-generated random salt. The vault file is unreadable on any other machine, even if someone copies it.
Tokens auto-refresh before expiry so long backups don't suddenly fail mid-run.
your login β browser session β token captured β AES encrypted β .suno_vault
β
machine fingerprint + random salt
Everything can be set via the GUI, or edited directly in config.py:
# Toggle what gets downloaded
DOWNLOAD_MP3 = True
DOWNLOAD_WAV = True # Pro subscribers
DOWNLOAD_VIDEO = True # Pro subscribers
DOWNLOAD_ART = True
DOWNLOAD_JSON = True
# Human-like request timing (randomised to avoid bot detection)
RATE_LIMIT_WAV_MIN = 4.0 # seconds between WAV conversions
RATE_LIMIT_WAV_MAX = 8.0
RATE_LIMIT_PAGE_MIN = 1.5 # seconds between feed pages
RATE_LIMIT_PAGE_MAX = 3.5# from the project root (inside venv)
python -m pytest tests/ -vCovers: sanitize(), _flatten_song(), _extract_ids_from_html(), vault encryption/decryption, CSV export, and ID deduplication.
| Problem | Fix |
|---|---|
| Python not found | Install Python 3.9+ β check "Add to PATH" on Windows |
| Login window doesn't appear | Run python setup_and_run.py directly from a terminal |
| WAV fails for specific songs | Some songs aren't WAV-eligible; the tool logs it and continues |
| Auth error mid-backup | Re-run β already-downloaded files are automatically skipped |
| Vault decryption error | Delete .suno_vault and .vault_salt, then re-run to re-authenticate |
| CSV is empty | Confirm you're logged into the correct Suno account |
| Rate limited | Increase RATE_LIMIT_*_MIN/MAX values in config.py |
| GUI doesn't open / window closes right away | If the GUI fails to start, the launcher will keep the window open so you can read the error. Run python setup_and_run.py --gui from a terminal to see the full traceback. |
suno_backup_v2/
βββ setup_and_run.py one-click launcher & venv bootstrapper
βββ suno_backup.py download orchestrator
βββ scanner.py 3-phase library scanner + CSV exporter
βββ vault.py AES-encrypted token storage
βββ config.py all constants β single source of truth
βββ gui.py desktop GUI (tkinter, no extra deps)
βββ requirements.txt
β
βββ tests/
β βββ test_core.py unit tests (pytest)
β
βββ START_WINDOWS.bat β CLI mode, Windows
βββ START_MAC_LINUX.sh β CLI mode, macOS/Linux
βββ START_GUI_WINDOWS.bat β GUI mode, Windows
βββ START_GUI_MAC_LINUX.sh β GUI mode, macOS/Linux
Auto-installed on first run. Nothing to do manually.
playwright >= 1.40 browser automation & token capture
requests >= 2.31 HTTP downloads
tqdm >= 4.66 progress bars
cryptography >= 41.0 vault encryption
Made for Suno creators who want to own their music. πΆ
This software is an independent, third-party tool and is not affiliated with, endorsed by, or sponsored by Suno, Inc. "Suno" and all related names, logos, and content are the trademarks and exclusive property of Suno, Inc. Users of this tool are solely responsible for ensuring their use complies with Suno's Terms of Service.
