Lyric Veil

Spotify lyrics, painted on your wallpaper.

A transparent, click-through overlay that follows whatever you’re playing.

Version 1.0.0 · Windows 10 (1809+) and 11 · MIT licensed · portable no telemetry

running on the desktop
Free and MIT-licensed 75 MB portable .exe Your own Spotify client ID, set up in-app Read-only Spotify scopes Lyrics from LRCLIB

One word at a time, not a sweep.

The word being sung is at full strength; everything else is the same colour held back. It is a discrete step, so it reads as this word rather than a gradient crawling across the line. Both colours and the dim level are yours to set.

Where the source only knows when each line starts — which is most of the time — word timings are estimated by splitting the line across its words by character weight. Switch to Line mode and the whole line lights instead: the mode that is exactly true to the data.

Word mode
One word lit, estimated from line timing
Line mode
The whole current line lit, exactly on the source’s timing
Sync offset
±3000 ms, by hotkey or slider, remembered per install

Never in the way.

Click-through by default, so every click lands on whatever is underneath. It never takes focus, it survives Win + D, and one hotkey turns it into a real window when you want to move or configure it.

Settings open in their own window docked beside the overlay — not on top of it — so you can see every change land on the lyrics as you make it.

  • Above everything, or sitting behind the windows you are using.
  • Taskbar entry while it runs, like any other app.
  • Tray menu for show/hide, launch at login and quit.
  • Background colour, opacity or your own image, if you want one.

Controls

Global hotkeys — they work whatever has focus.

Ctrl Alt L
Interactive mode — opens settings, lets you drag and resize
Ctrl Alt H
Show or hide the overlay
Ctrl Alt [
Nudge the sync 100 ms earlier
Ctrl Alt ]
Nudge the sync 100 ms later
Ctrl Alt 0
Reset the sync offset

Why it stays in time.

Spotify reports the playback position about once a second, and that number jitters by 100–200 ms each time. Following it directly makes the highlight visibly speed up and slow down. So each poll is treated as an anchor, the overlay runs its own clock at frame rate between anchors, and only the median of the last five readings — past a 90 ms deadband — is allowed to correct it. A seek or a pause snaps immediately.

How the clock stays smooth between polls Spotify · 1 poll per second, jittery Lyric Veil · own clock, corrected by median

Setting up takes two minutes

On first run the settings window opens and asks for your own Spotify client ID. It is free, and there is no client secret — authentication is PKCE against a loopback redirect, with read-only scopes.

  1. Create a free app on the Spotify dashboard.
  2. Add http://127.0.0.1:8888/callback as a redirect URI, and tick Web API.
  3. Paste the Client ID into Lyric Veil and press Save and connect.

Worth knowing first

  • You bring your own Spotify client ID. Lyric Veil asks for one on first run and walks you through it — the settings window opens by itself with the field, the redirect URI ready to copy and a button to the dashboard. Free, about two minutes. It works this way because a client ID baked into a public download belongs to whoever built it, and Spotify only lets accounts on that app’s allowlist sign in.
  • Word timing is usually estimated. LRCLIB carries line-level timing; the per-word split is inferred. Line mode is the honest one.
  • Windows only. The transparent, click-through, always-on-top behaviour is built on Windows window management.
  • Unsigned. SmartScreen warns on first launch — More info, then Run anyway. Signing needs a certificate this project does not have.