Spotify Lyrics Pop-Out
An interactive Chrome extension that puts the lyrics for the song playing in
Spotify Web into a movable, always-on-top Picture-in-Picture window.
Install Spotify Lyrics Pop-Out from the Chrome Web Store
Support · Privacy · Delete your data · Critical issues: listenr.help@gmail.com
What works
- Detects the current song, artist, album art, playback time, and play state in
any open Spotify Web tab.
- Fetches time-coded lyrics from LRCLIB.
- Highlights and automatically centers the current line as the song plays.
- Opens a native Document Picture-in-Picture window that stays above other
windows and can be moved or resized.
- Includes a compact Edge mode; Pull Out restores the full view without
reopening the window at a default corner.
- Saves the selected mode, each mode’s dimensions locally
as they change, so restoration does not depend on a clean close.
- Uses Chrome’s remembered PiP position when reopening.
- Offers one Follow toggle: selected centers the current lyric; deselected
lets you scroll. Every new window starts with Follow selected. Manual scrolling
deselects Follow for that session. Click any lyric to seek,
scrub the timeline, and use previous/play-pause/next controls.
- Falls back to evenly estimated line timing when only plain lyrics are
available.
Install locally
For normal use, install the published extension from the Chrome Web Store link
above. To test the source checkout instead:
- Download or clone this repository.
- Open
chrome://extensions in Chrome.
- Turn on Developer mode.
- Click Load unpacked and select this folder.
- Open Spotify Web and play a song.
- Click the green Lyrics Pop-Out pill inside Spotify to launch the lyric
window. You can also click the extension icon to reveal the launcher.
The second click is intentional: Chrome requires the page itself to receive a
user gesture before it can create a Document Picture-in-Picture window.
How it works
Spotify Lyrics Pop-Out reads playback metadata and the active audio element from
Spotify Web. It uses the song metadata to request synced LRC lyrics from LRCLIB,
then matches each timestamp against Spotify’s current playback time. The PiP is
owned by the Spotify tab, so keep that tab open while using it.
Permissions
open.spotify.com: read current playback metadata and control the Spotify
player.
lrclib.net: retrieve synced or plain lyrics.
tabs: find an open Spotify tab when the extension icon is clicked elsewhere.
storage: save window mode, dimensions, your data-sharing choice and Data ID
on this device.
No Spotify password, cookies or browsing history is ever collected. Song
metadata is sent to LRCLIB to find lyrics, and to our server to look up
community timing fixes (no ID attached). Anonymous listening data is sent only
if you choose Allow, and can be deleted any time from the extension’s
Privacy & data page or the
privacy policy page.
Current limitations
- Chrome 130 or newer is required; Document Picture-in-Picture is not available
in every browser.
- Chrome keeps Document PiP always on top, but Chrome and macOS—not the
extension—control whether it follows browser or app windows across true
full-screen Spaces. A Chrome extension cannot force that cross-Space
behavior.
- Chrome controls PiP screen coordinates and may clamp dimensions to fit the
display. The extension requests reuse of Chrome’s remembered placement, but
cannot guarantee exact coordinates after a browser crash, browser restart,
or display change. Preferences already saved locally survive abrupt closes;
a process crash can still interrupt an in-flight storage write.
- Availability and timing quality depend on LRCLIB’s community-maintained data.
- Spotify can change its Web Player structure. The extension uses Media Session
data first and DOM selectors as a fallback.
- Spotify podcasts, local files, ads, and some restricted tracks may not have
synced lyrics.
- Lyrics remain the property of their respective rights holders. This project
does not bundle or redistribute a lyrics catalogue.
Development
There is no build step and no runtime package dependency.
After editing, reload the extension from chrome://extensions.
License
MIT