A user-friendly GUI application to download Spotify playlists as MP3 files and rename them in playlist order.
This project is not affiliated with, endorsed by, or connected to Spotify AB or any of its affiliates or subsidiaries. This is an independent tool created for educational and personal use purposes only. All trademarks, service marks, trade names, product names, and logos are the property of their respective owners.
Important Notes:
- This tool is for personal use only
- Respect artists and copyright laws
- Consider supporting artists by purchasing their music or subscribing to streaming services
- Use of this tool is at your own risk
- We do not condone piracy or copyright infringement
- Download entire Spotify playlists as MP3 files
- Rename downloaded files to match playlist order
- Auto-rename option after download
- Configurable Spotify API credentials
- Optional YouTube cookies support for better download success
- Progress tracking and detailed logging
- Automatic duplicate detection
- FFmpeg bundled - no external installation needed!
-
uv package manager installed
- Install: https://docs.astral.sh/uv/getting-started/installation/
- Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
-
Spotify API Credentials (free)
- Get from: https://developer.spotify.com/dashboard
-
Log in with your Spotify account
-
Click "Create an App"
-
Fill in app name and description
-
Copy your Client ID and Client Secret
-
Paste them in the Settings tab of the application
-
Run the application directly with uv:
uv run --with spotipy --with yt-dlp main.pyOr simply double-click
run.bat -
uv will automatically download and manage dependencies in an isolated environment
To create a standalone .exe file:
build.bat
The executable will be created in the release folder.
- Configure your Spotify API credentials in the Settings tab
- Paste a Spotify playlist URL
- Select download folder
- Click "Start Download"
- Select the folder containing downloaded MP3 files
- Click "Rename Files"
- If multiple playlists are cached, select the one to use
- Files will be renamed with playlist order numbers (001, 002, etc.)
- Client ID: Your Spotify API client ID
- Client Secret: Your Spotify API client secret
- Cookies File: (Optional) YouTube cookies file for better download success
For better download success rates, you can export your YouTube cookies:
- Install browser extension to export cookies (e.g., "Get cookies.txt")
- Export cookies from youtube.com
- Save as
youtube_cookies.txt - Configure the path in Settings tab
spotify-dl-gui/
├── main_ctk.py # Main GUI application (CustomTkinter)
├── rename_utils.py # File renaming utilities
├── pyproject.toml # Project dependencies (uv)
├── run.bat # Quick run script
├── build.bat # Build executable script
├── installer.iss # Inno Setup installer script
├── version_info.txt # Windows exe version info
├── LICENSE # MIT License
├── SETUP_GUIDE.md # User setup instructions
└── README.md # This file
-
Run the build script:
build.bat
-
The executable will be in
release/SpotifyDownloader.exe -
Test the exe before distributing
-
Install Inno Setup: https://jrsoftware.org/isdl.php
-
Open
installer.issin Inno Setup -
Click "Compile" to create the installer
-
Installer will be in
installer_output/SpotifyDownloader_Setup_v1.0.0.exe
Option 1: Standalone EXE
- Just distribute
SpotifyDownloader.exe - Include
SETUP_GUIDE.mdfor users
Option 2: Installer
- Distribute the installer exe
- It includes the app + setup guide
- Checks for FFmpeg during installation
See SETUP_GUIDE.md for detailed setup instructions including:
- Installing FFmpeg
- Getting Spotify API credentials
- Optional YouTube cookies setup
- "uv not found": Install uv from https://docs.astral.sh/uv/
- "FFmpeg not found": Install FFmpeg and add to PATH
- Download failures: Try adding YouTube cookies file
- "Invalid credentials": Check your Spotify API credentials in Settings
- Downloaded files are cached for 24 hours to speed up subsequent operations
- Playlist order is preserved when renaming files
- Duplicate files are automatically skipped
- Failed downloads are logged for retry
- Uses
uvfor fast, reliable dependency management
This project is not affiliated with, endorsed by, or connected to Spotify AB or any of its affiliates.
- This tool is intended for personal use only
- Users are responsible for complying with Spotify's Terms of Service
- Users are responsible for complying with copyright laws in their jurisdiction
- The developers of this tool do not condone piracy or copyright infringement
- Please support artists by purchasing their music or subscribing to streaming services
- Use of this tool is at your own risk
All trademarks, service marks, trade names, product names, and logos are the property of their respective owners.
MIT License - See LICENSE file for details
For issues or questions, create an issue on the GitHub repository.