SpotiOver v2.1 · Windows

Open source Spotify overlay

The song, top left, then gone.

A new track starts and a small card slides in over everything else. Six seconds later it leaves. No window to alt-tab to, no browser tab to check.

Windows 10 / 11 · builds to a single .exe
Python 3.11+ with PyQt6 · MIT licensed
Free Spotify accounts work — Premium not required
Halbmond Nordwand

This is the real thing, rebuilt in HTML — same 64 pixels, same easing curves. Press Ctrl + < to call it up, exactly like in the app.

Rebuilt in 2026

The first version was written in 2024 and quietly stopped working: Python moved on, and so did the Spotify API. Here's what changed.

Credentials
Compiled into the .exe, so the file could never be shared
Stored in the Windows Credential Manager. Nothing sensitive ends up in the build, so the .exe can go straight to GitHub.
Sign-in
Died silently once the token went stale
Spotify expires refresh tokens after six months. SpotiOver notices, drops the dead token and asks you to sign in again — once, twice a year.
Redirect
http://localhost:8888/callback
Spotify only accepts the loopback IP now, so it's 127.0.0.1. The sign-in itself uses PKCE, which means no client secret on disk.
Installing
Drag the .exe into the startup folder and hope
It registers itself: autostart, Start menu, and an entry under Installed apps with a working uninstaller.
Settings
Open the .py and edit the constants
A settings window in German or English. Changes apply while the overlay keeps running.
Hotkey
Hard-coded, and broken — the combination never parsed
Click Record, press the keys you want. Special characters are stored by key code, so they survive a keyboard layout change.
The look
Unchanged. That was the point.

What it does

Two things by default. Everything else is optional and switched off until you want it.

Slides in on every track change

Cover, artist, title. Six seconds, then it's gone. It's click-through, so it never gets in the way of what's underneath.

Or whenever you ask

One key combination brings the current track back up. Default is Ctrl + <, and you can record your own.

Progress bar experimental

The bottom three pixels fill up green as the track plays, inside the rounded corners. Nothing else about the card moves.

Animation styles experimental

Five ways in and out, from the original linear slide to a scale-up pop. Try them in the demo above.

Starts with Windows

On by default, off with one checkbox. The background service lives in the tray and survives closing the settings window.

German and English

Asked once on first launch, switchable any time. The window redraws in the new language on the spot.

One window, four tabs

Double-click the .exe, or search for it in the Start menu, and the settings open. The overlay keeps running in the tray either way.

Client ID goes in once, sign-in takes a browser round trip, and the window tells you the date your sign-in expires — so the six-month reminder is never a surprise.

Setting it up

Fifteen minutes, most of it waiting for the build.

Register an app with Spotify

In the Developer Dashboard, create an app, tick Web API, and add this exact redirect URI. The client secret stays empty.

http://127.0.0.1:8888/callback   ← not localhost, no trailing slash

Build the .exe

Double-click build.bat. It sets up a virtual environment, installs the dependencies and runs PyInstaller.

:: or by hand
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt pyinstaller
pyinstaller build.spec --noconfirm   → dist\SpotiOver.exe

Start it once

Pick a language, paste the client ID, sign in. It adds itself to autostart and the Start menu on that first run.

Play something

The card shows up on the next track change. Close the settings window — the overlay stays in the tray, and comes back on its own after a reboot.