For educational use only. You are responsible for ensuring you have the right to access any content.
A clean, modern desktop app to get music in MP3, WAV or FLAC.
No limits. Your music, your way.
-
Download Python 3.10+ ← if you don't have it
During install, check "Add Python to PATH" ✅
-
Download this project and extract the ZIP anywhere
-
Double-click
setup.bat
→ Installs all dependencies + FFmpeg automatically
→ Creates a Desktop shortcut
→ Launches the app
That's it. No manual pip, no manual FFmpeg setup.
# 1. Clone
git clone https://github.com/RRSpot/SpotRR.git
cd SpotRR
# 2. Setup (installs everything + creates shortcut)
bash setup.shLinux prerequisite:
sudo apt install python3 python3-venv(Debian/Ubuntu)
macOS prerequisite:brew install python
# Windows — also launches the app after setup
setup.bat
# Linux / macOS
bash setup.shIf you prefer not to run .bat files, you can set everything up yourself:
1. Create a virtual environment
cd path\to\SpotRR
python -m venv .venv
.venv\Scripts\activate2. Install Python dependencies
pip install -r requirements.txt3. Install FFmpeg
Option A — via spotdl (easiest):
spotdl --download-ffmpegOption B — manually:
- Download FFmpeg from ffmpeg.org/download.html (Windows build)
- Extract the ZIP and copy
ffmpeg.exeinto theSpotRRfolder
— or add it to your system PATH so it's available globally
4. Run the app
.venv\Scripts\pythonw.exe spotrr.py
pythonw.exehides the console window. Usepython.exeinstead if you want to see logs.
| Feature | Details |
|---|---|
| Formats | MP3 · WAV · FLAC |
| Quality | 128 kbps · 192 kbps · 320 kbps |
| Content | Tracks · Albums · Playlists · Artists |
| Queue | Multi-URL queue with reorder support |
| Threads | 2 / 4 ★ / 8 parallel tasks |
| Control | Stop · Pause · Resume |
| FFmpeg | Auto-downloaded on first run |
| UI | Dark themed UI, drag & drop |
Without credentials the app still works, but adding them gives better track labels and avoids shared rate limits.
Get them in 2 minutes:
- Go to developer.spotify.com/dashboard and log in
- Click Create app — any name/description, set Redirect URI to
http://localhost - Open the app → Settings → copy Client ID and Client Secret
Add them in the app:
Click the 🔑 Client ID and 🔑 Client Secret buttons in the toolbar — or edit settings.json directly:
{
"client_id": "your_client_id_here",
"client_secret": "your_client_secret_here"
}- Paste a URL (track, album, playlist or artist) into the SPOTRR URL field
- Choose output folder, format and quality
- Click Add to Queue
- Repeat for as many URLs as you want
- Press ▶ Start (or it starts automatically if the queue was empty)
SpotRR/
├── spotrr.py # Main application (single file)
├── requirements.txt # Python dependencies
├── settings.json # User config (add your credentials here)
├── setup.bat # Windows setup + launcher (one-click)
├── launch.vbs # Silent launcher (no CMD window)
├── setup.sh # Linux / macOS setup + launcher
├── run.sh # Linux / macOS launcher
├── assets/
│ ├── icon.ico # App icon
│ └── logo.png # Logo shown in the app
└── downloads/ # Default output folder (auto-created)
| Key | Description | Default |
|---|---|---|
client_id |
API Client ID | "" |
client_secret |
API Client Secret | "" |
default_output_folder |
Where files are saved | "" (~/Downloads) |
custom_logo_path |
Path to a custom logo image | "" |
preferred_format |
mp3 / wav / flac |
mp3 |
preferred_quality |
128k / 192k / 320k |
320k |
"Python is not installed" → Download from python.org and check Add to PATH during install.
"FFmpeg not found" → Run setup.bat / setup.sh again — it downloads FFmpeg automatically via spotdl.
HTTP 429 errors → Rate limit. Reduce threads to 2 or 4 and try again. The app retries automatically 3 times.
App doesn't open on Windows → Right-click setup.bat → Run as administrator.
| Package | Purpose |
|---|---|
spotdl |
Core engine (wraps yt-dlp + metadata) |
spotipy |
Web API client |
Pillow |
Image / logo rendering |
tkinterdnd2 |
Drag-and-drop support |
mutagen |
Audio metadata tagging |
rapidfuzz |
Fuzzy title matching |
qrcode |
Donation QR codes |
requests |
HTTP client |
All installed automatically by setup.bat / setup.sh.
This software is provided for educational purposes only.
The developer assumes no liability for misuse.
See LICENSE for full terms.

