Ozan Güven

Lyricoverlay

Lyric overlay, built around Spotify

An always-on-top macOS lyrics overlay for Spotify, offering broader lyric availability, improved synchronisation and visual customisation.

Category
for fun
Year
2025–2026
Tools
Electron, AppleScript, HTML, JavaScript
Status
Finished

Overview

I made this as a macOS desktop application designed to replace my use of Spotify’s native lyrics experience. The initial motivation was the lack of an always-on-top lyrics display, which made it difficult to follow lyrics while working in full-screen applications or using screen space for other tasks. But I had also noticed other limitations like the lack of lyrics for certain popular songs and limited options

Approach

The application was built using Electron, HTML, and JavaScript. This allowed me to develop a native desktop app but stay with web technologies I was already familiar with. Though, I do see the limitations of using Electron because of how heavy it makes an otherwise lightweight application.

I used AppleScript to communicate directly with the Spotify desktop application, periodically retrieving the currently playing track, the artist name, and the playback position. This information was then used to query LRCLIB, an external provider of timestamped lyrics, retrieve the corresponding lyrics, and synchronise their display with the Spotify playback.

Lyricoverlay settings panel
Opacity, font and background color, as well as text color, spacing and size, are all adjustable.
Compact overlay next to the expanded view with album artwork

Outcome

The result is an always-on-top overlay that can remain visible while working in other applications, without taking up any inordinate amount of screen real estate, or interrupting existing workflows. It also has a broader lyrics library, often better synchronisation, and a degree of visual options that is not present in Spotify.

If I were to do this over, I would absolutely do it in Swift instead. It would be much more lightweight and have better performance. But, I'm still happy with the result and I still regularly use it.