Jellyfin Synced Lyrics: How to Add LRC Files That Scroll - Comprehensive guide to Enhanced LRC files with word-level timing

Jellyfin Synced Lyrics: How to Add LRC Files That Scroll

•
6 min read

Quick Answer

Jellyfin synced lyrics come from a .lrc file saved next to the song with the same file name, or from lyrics embedded in the audio tags. You need Jellyfin 10.9 or newer.

Drop Song.lrc beside Song.mp3 and scan the library. A lyrics button shows up in the player. If lyrics show but don't scroll, the file has no timestamps. And if nothing shows at all it's almost always the file name or a scan you haven't run.

Jellyfin Lyrics Support by Version

Lyrics arrived in Jellyfin 10.9. Before that the server ignored .lrc files completely. Here's what each release added, going by the official release posts.

VersionWhat it added
10.9Scans local lyrics, embedded or in external files. The web client gets a lyrics button.
10.10Lyric provider plugins. You choose per library which plugins can supply lyrics. The web client gets auto scrolling lyrics and a lyrics editor.
10.11The lyrics API gained cues for individual words. Finamp uses this for word by word highlighting.

The official docs list three sidecar formats: .lrc, .elrc and .txt. A .txt file gives you static lyrics that don't scroll, so for synced display you want .lrc. Metadata tags inside the file like [ar:] and [ti:] are allowed. Clients just don't display them.

Embedded lyrics are messier. Jellyfin reads tags with TagLib and forum reports say it picks up USLT and SYLT frames in MP3. Custom tags like lyrics-eng weren't read. Given the choice I'd go with a sidecar file.

Ready to try it with your own file?

Upload audio, review the timing, and export the format you need.

Which Clients Show Synced Lyrics

The server stores the lyrics. How they get drawn is up to the client.

ClientSynced lyrics
Jellyfin webYes. A lyrics button (a speech bubble with a music note) appears in the playback bar once a track with lyrics starts. It stays hidden when a track has none. Auto scrolling since 10.10.
Jellyfin Media Player (desktop)Users on the Jellyfin forum report lyrics working here since 10.9.
Finamp (Android, iOS)Yes. Its lyrics support was built for the 10.9 API. Word level highlighting arrived in the 0.9.19 beta and needs server 10.11.
Symfonium (Android)Yes. Version 10.1.5 (from Beta 1) fixed lyrics for the 10.9 endpoint.
Jellyfin Android TVLyrics arrived in 0.18 and need server 10.10 or newer.
Feishin (desktop)Lists synchronized and unsynchronized lyrics as a feature.

Client not in the table? Play the song in the web client first. If lyrics show there then the app is what's broken.

How to Add Jellyfin Synced Lyrics With .lrc Files

  1. Get an .lrc file for the song. Download one from LRCLIB or make one (more on that below).
  2. Name it exactly like the audio file. 01 Blue Train.flac gets 01 Blue Train.lrc and only the extension changes. Jellyfin does tolerate an extra dotted suffix like 01 Blue Train.en.lrc, but keep it simple.
  3. Put it in the same folder as the audio file. Jellyfin doesn't check a Lyrics subfolder.
  4. Scan the library. Open the album in the web client, pick Refresh metadata and run Scan for new and updated files. Or run a full library scan from the Dashboard.
  5. Play the song and click the lyrics button at the bottom right of the playback bar.

Early 10.9 builds had a bug where embedded lyrics needed two metadata refreshes before they showed. 10.9.7 fixed that. Lyrics not updating after you edit a file is still an open issue (#12148), so if a change doesn't show, run the metadata refresh again.

The LrcLib Plugin for Lyrics You Do Not Have

Jellyfin 10.10 added lyric providers. There's one official plugin, LrcLib. It pulls from lrclib.net, a free community database of synced lyrics.

  1. Update to 10.10 or newer. The plugin targets 10.10 and won't appear in the catalog on 10.9.
  2. Go to Dashboard > Plugins > Catalog and install LrcLib. Restart the server.
  3. The plugin's own page only has search options (strict search, prefer synced lyrics, exclude artist or album). The Save lyrics into media folders checkbox lives in the library's settings instead, under Dashboard > Libraries > your music library > Manage Library. By default the downloaded .lrc files go into the Jellyfin data folder under metadata instead of next to your music. Turn it on if you want the files where other players can read them.
  4. Run the scheduled task Download missing lyrics.
  5. Run a library scan so the new lyrics attach to the tracks.

Both tasks also run on their own schedule, so running them by hand just gets you lyrics sooner. How many songs you get depends on what LRCLIB has.

What a Working .lrc Looks Like

Each lyric line starts with a timestamp in [mm:ss.xx] form. Save the file as UTF-8.

[ar:Sharon Jones]
[ti:100 Days, 100 Nights]
[00:12.40]100 days, 100 nights
[00:16.10]To know a man's heart
[00:20.75]And a little more

You can skip the header lines. Jellyfin reads them but doesn't show them. It's the timestamps that make lines clickable and scrolling.

.elrc is the enhanced version with a timestamp on every word. Jellyfin accepts it as a sidecar. Since 10.11 it also passes the word cues through to clients that can use them, Finamp being one.

The LRC format guide has the full breakdown of the format.

Jellyfin Lyrics Not Showing

No lyrics button at all. Compare the file name to the audio file name character by character. Check the folder. Then scan again. The button only appears for tracks the server has flagged as having lyrics.

Button missing after upgrading to 10.9 or 10.10. Your browser is probably serving the old web client from cache. Hard reload or clear site data for your Jellyfin address.

Lyrics show but don't scroll. The file has no timestamps. It's either a .txt file or an .lrc someone saved as plain text. Open it in a text editor and look for [00: at the start of lines.

Embedded lyrics are ignored. Run Search for missing metadata on the album, because a plain scan for new files isn't enough for tags. An external .lrc in the folder also takes priority and the embedded text gets skipped. Raw Opus files have had tag reading problems too. Remuxing to .ogg fixed it for one user on the forum.

Works in the web client but not in an app. The app is behind. Check the table above and update the client.

Garbled characters. Re-save the .lrc as UTF-8.

LrcLib plugin isn't in the catalog. You're on 10.9 and it needs 10.10.

Plugin downloaded lyrics but the player shows nothing. Run a library scan. The download task writes the files and the scan is what attaches them.

Songs With No Lyrics Online

LRCLIB covers a lot. Not everything though.

For a whole library there's LRCGET, the desktop app from the LRCLIB maintainer. Point it at your music folder, let it fetch what it can, then use its export to write a matching .lrc beside each file (since 2.0 it doesn't write sidecars on its own). It runs on Windows, Linux or macOS. Scan Jellyfin afterwards and every song it matched is sorted.

Then there are the ones it couldn't match. Live recordings, bootlegs, a friend's band, your own tracks. There's no file to download for those so you have to make one from the audio. We built EasyLRC for exactly this. Upload the song, wait about 10 to 20 seconds and download an .lrc with line timestamps. It handles 99+ languages. The free plan gives you 5 minutes of audio a month with no card and no watermark. Paid plans from $5 a month add Enhanced LRC export with word timestamps, which you'd want for the 10.11 word cues in Finamp.

Rename the downloaded file to match the audio, drop it in the folder and scan. Timing early or late across the whole song is an offset problem and it's easy to fix. See fixing lyrics time drift.

Frequently Asked Questions

Which Jellyfin version supports synced lyrics

Jellyfin 10.9 added lyrics from .lrc sidecar files and embedded tags. 10.10 added lyric provider plugins and a lyrics editor, plus auto scrolling in the web client. 10.11 added word level cues to the lyrics API.

Does Jellyfin download lyrics automatically

Yes on 10.10 or newer, if the official LrcLib plugin is installed. The Download missing lyrics scheduled task fetches them from lrclib.net and a library scan attaches them. Without the plugin there's no built in downloader.

Why do my Jellyfin lyrics show but not scroll

The file has no timestamps. A .txt sidecar or an .lrc without [mm:ss.xx] prefixes shows up as static text. Replace it with a real synced .lrc and scan again.

Does Jellyfin read embedded lyrics in MP3 and FLAC

Yes. It needs a Search for missing metadata scan to pick them up though, and for MP3s forum reports say only the standard USLT and SYLT frames get read. If there's an external .lrc in the folder it wins and the embedded text is ignored.

Where does the LrcLib plugin save .lrc files

By default they go in the Jellyfin data folder under metadata. If you want the .lrc files next to the audio so other players can use them, turn on Save lyrics into media folders in the library's settings (Dashboard > Libraries > Manage Library), not the plugin page.

Can I edit lyric timing inside Jellyfin

Jellyfin 10.10 added a lyrics editor in the web client. For bigger fixes it's quicker to edit the .lrc in a text editor or regenerate it from the audio. Then scan the library again.

Ready to Create Your Own Enhanced LRC Files?

Try EasyLRC free—5 minutes of AI-powered word-level synchronization included.

JellyfinLRCSynced LyricsSelf Hosted