Synced lyrics overlay for YouTube Music on every tab.

Overview

Lyriq is a Chrome extension that puts synced lyrics in a glass widget on any tab while YouTube Music plays. Keep music.youtube.com open in the background, browse elsewhere, and the previous / current / next lines stay in time with the track.

Lyrics come from lrclib.net. There is no Lyriq account, analytics, or first-party server — only song title, artist, and duration leave the browser for the lookup.

What it does

  • Synced three-line overlay on every open tab
  • Draggable glass widget with optional minimize
  • Optional playback controls (seek, skip, play/pause) without switching tabs
  • Toolbar popup for overlay, widget visibility, and controls
  • Shrinks for instrumentals or missing lyrics until the next track with lines

How the syncing works

  1. Read the player — on YouTube Music, Lyriq reads song, artist, artwork, and position (about every 250ms, plus on play / pause / seek)
  2. Find the lyrics — title, artist, and length go to lrclib.net/api/get
  3. Share across tabs — the background service worker pushes the current song and position to open tabs
  4. Keep time locally — each widget interpolates from the last known position and picks the active line

What I built

  • Manifest V3 extension with background, YouTube Music content script, and page overlay
  • Cross-tab state sync for position, settings, and widget placement
  • Glass mini-player UI with drag, minimize, and optional controls
  • Marketing site at aayush-lyriq.vercel.app with an interactive demo widget

Stack

TypeScript, Chrome Extension APIs (MV3), esbuild, and lrclib.net for timed lyrics.

What's next

Chrome Web Store packaging, tighter lyric timing when the community data is off, and optional per-site overlay rules.