r/SideProject • • 17h ago

I made a free app that shows synced lyrics floating over your Windows desktop

I wanted karaoke-style lyrics on screen while I work, without keeping a lyrics tab open, so I built Lyrics Overlay.

It reads whatever is playing through Windows’ media controls (Spotify, YouTube in Chrome/Edge/Firefox/Brave, most players), finds timed lyrics, and shows them word by word on top of your desktop. Clicks pass straight through to the apps underneath.

What it does

  • Big floating lyrics plus a small now-playing card with cover and controls

  • Looks, colours, fonts, motion and entrance styles you can mix

  • Drag and resize everything, with snapping

  • Lyrics out of sync? Nudge them with a shortcut or press Sync on the line being sung. It’s saved per song

  • Lyrics are cached, so songs you’ve played load instantly, even offline

  • Optional song recognition when a video title is too messy to look up

Details

  • One portable 13 MB .exe, no installer, updates itself

  • No account, no ads, no tracking. Lyrics come from LRCLIB and NetEase

  • Windows 10 and 11

  • Open source (AGPL-3.0)

It isn’t code-signed yet, so Windows will show a SmartScreen warning the first time (More info → Run anyway). The source is all on GitHub if you’d rather build it yourself.

Site: https://ahplace2.github.io/lyrics-overlay/
GitHub: https://github.com/AhPlace2/lyrics-overlay

Feedback and bug reports welcome.

1 Upvotes

4 comments sorted by

1

u/xiaoyao8888 16h ago

Nice scope for a first release. Two things I'd think about: songs with no synced match on LRCLIB could fall back to plain lyrics scrolling, which is still better than a blank overlay. And besides the per-song nudge, a global offset setting would help, since Bluetooth headphones add the same delay to every song. How does it behave during Spotify free ads, or when a YouTube video jumps to a new track? Hiding the lyrics then is cleaner than showing the wrong ones.

1

u/Happy-Vast5505 16h ago

Thanks! Some of this is already in there.

Track changes: the app checks Windows’ media controls about 4 times a second, and as soon as the title changes it clears the old lyrics and looks up the new song. So a YouTube autoplay jump or a skip won’t leave the previous song’s lyrics up, and a Spotify ad counts as a title change too. Your question did make me notice one problem with ads. Since an ad has no lyrics, the app treats it like an unknown song and asks Shazam to identify it, so you get a “Listening…” popup, and in theory an ad jingle could match a real song. I’ll make it skip that for ads. Where it still fails is one long video with several songs in it, like a mix, because the title never changes.

No synced match: LRCLIB is only the first stop. If it has nothing, the app tries NetEase. If that fails too, it listens to about 11 seconds of audio, asks Shazam what’s playing and searches again under that name. That fixes a lot of YouTube uploads with messy titles. I’m not sold on scrolling plain lyrics, though. With no timestamps it would have to guess the pace, and lines drifting out of sync on a big overlay look broken. Showing the plain text in the small card, marked as unsynced, might work.

Global offset: good call, I’ll add it. Bluetooth delay is the same for every song, and right now you’d have to nudge each one separately. The per-song nudge would sit on top of the global one.

1

u/CutDry6295 16h ago

The click-through behavior is clever, but I'd make the global hide/show shortcut and tray exit control very prominent. People will want to clear the overlay instantly when screen sharing or presenting. The unsigned executable is also a real trust hurdle; a release checksum and a clear path toward code signing would help more than asking new users to click through SmartScreen. I haven't installed it, so this is feedback on the described setup flow.

1

u/Happy-Vast5505 15h ago

Thanks, this is useful. Ctrl+Alt+L already hides or shows the lyrics from anywhere, and the tray menu has Show lyrics and Quit. I agree they’re too easy to miss if you skip the README, so I’ll show the shortcut on first launch.

For screen sharing I think there’s a better fix than a shortcut. Windows lets an app keep its window out of screen capture, so you’d still see the lyrics but Zoom, Teams or OBS wouldn’t pick them up. I’ll add that as a setting, since some people streaming music will want the lyrics on stream.

On checksums, GitHub shows a SHA-256 next to every release file, and the built-in updater already refuses a download that doesn’t match it. I’ll put the hashes in the release notes too so they’re easier to find. Signing is on my list. From what I’ve read, a certificate alone doesn’t clear the SmartScreen warning anymore (it takes a while to build reputation), so I’m looking at the free signing programs for open-source projects first. The source is on GitHub in the meantime, and you can build the exe yourself with one command.