Skip to contentlyrisync

SRT vs LRC: which format for your lyric video

The short answer

Video editor: SRT. Music player or karaoke app: LRC. Animating the text yourself: probably neither, and JSON saves a conversion step. The table below has the detail.

What SRT actually is

SRT is a subtitle format. It is a numbered list of cues, and every cue carries a start time, an end time and some text:

1
00:00:00,668 --> 00:00:03,838
When I returned I could barely sleep at night.

The important detail is that every cue has an explicit end time. A subtitle appears, then it disappears, and the format says exactly when both happen. That is why editors like it: the cue maps directly onto a clip on a timeline.

Two things catch people out. The decimal separator is a comma, not a full stop, and a surprising number of hand written parsers get that wrong. And SRT has no concept of a word: for word by word highlighting you produce either one cue per word, or one cue per word that repeats the whole line with the current word marked up. Both are valid SRT and look very different on a timeline.

What LRC actually is

LRC came from music players, not video. It is a plain text file where each line is stamped with the time it starts:

[00:00.67]When I returned I could barely sleep at night.

LRC has no end time. A line runs until the next line begins, which is fine for lyrics scrolling beside a track and no use if a line has to disappear during a long pause. Some players treat a blank stamped line as a way to clear the display; support is inconsistent.

There is also an extended form, usually called Enhanced LRC, which adds word level stamps inside the line:

[00:00.67]<00:00.67>When<00:00.81> <00:00.88>I<00:01.05> <00:01.09>returned<00:01.96> <00:02.06>I<00:02.17> <00:02.24>could<00:02.34> <00:02.41>barely<00:02.93> <00:02.97>sleep<00:03.25> <00:03.32>at<00:03.42> <00:03.49>night.<00:03.84>

Karaoke apps use it for the moving highlight. A word tag runs until the next tag appears, so the only way to end a word early is to open another stamp, which is what the extra stamps after When and after the last word do. Without them a word stays lit until the next one starts, which is very visible across a gap in the vocal. We write them wherever there is a real gap and at the end of every line. Support is patchy: some players ignore word tags or show them as text, so test the file in your target app. For karaoke video, ASS is often a better fit because it carries an explicit duration for every word.

Compare three formats using the same demo excerpt

The same 48.5-second Isla excerpt from the LyriSync demo, with its word timings, in three formats. Listen, then try a file in your target app.

Picking between them

The conversion that loses information

You can convert SRT to LRC easily, because you are throwing information away: keep the start time, drop the end. Going the other direction means inventing end times that were never in the file, and whatever you invent will be wrong wherever the song has a gap. If you need both, export both from the source rather than converting one into the other.

Align a song

Align any whole song up to 10 minutes and open it in the editor: play it, check every word and fix timings. The private preview is available for 5 days. You pay per song, when you export.

Next guide: What are synced lyrics, and how do you make them?