SongTyping
← All articles

Why Synced Lyrics Drift, and What It Takes to Fix Them

SongTyping Team·September 21, 2026·7 min read

When a lyrics typing game works, you do not think about it. The line you are typing is the line being sung, the video keeps pace with your hands, and the whole thing feels like it could not have been built any other way.

When it does not work, it is maddening in a very specific way: the words are right, but they are early. Or late. Or they were fine for the first verse and then slid four seconds out somewhere around the bridge. You are not typing to the music any more, you are fighting it.

That gap between the two experiences is almost entirely about where the timing data came from. Across our 1,165 songs there are two real sources, and they are not close to equal.

What a timing actually is

A song here needs two things: the lyric text, and a list of timed segments saying when each line is sung. The text is the easy half. The timings are the product.

Those timings come from one of two places.

LRC files are the community-curated kind, from a shared database called LRClib. Somebody sat with the track and marked where each line starts. They are made by people who care whether the timing is right, usually for karaoke, and they are aligned to a specific recording.

YouTube captions come with the video. Some are written by a human, most are generated by speech recognition, and the speech recogniser was built for speech.

Music breaks speech recognition in a way talking does not

A speech recogniser expects one voice, roughly conversational, over a quiet background. A song is a voice deliberately stretched over pitch and time, mixed with instruments occupying the same frequencies, often doubled or harmonised, and frequently with another voice singing something else underneath.

What comes out is recognisable as failure once you have seen enough of it. The transcript stalls on a held note and emits the same word four times. It gives up during an instrumental and inserts a [Music] marker, or a row of ♪ symbols, which are not lyrics and must not be typed. Occasionally it hallucinates confidently, and you get a line from a different song entirely - we once had a track come back with lyrics belonging to another artist because the recogniser filled a gap with the nearest thing in its vocabulary.

We reject caption tracks where half or more of the segments carry a ♪, on the grounds that a transcript mostly made of music markers is not a transcript. We also throw away tracks that turn out to be sound effects or dialogue rather than singing, which is what you get when the video attached to a song is a film clip.

The numbers

Every playable song gets a sync quality score: how well the lyric text and the timed segments line up, token by token. 1.00 means every lyric word was found in the caption stream in order. Low scores mean the two documents are describing different things.

source songs median score share scoring 0.90+
LRC files 885 0.99 88%
YouTube captions 111 0.83 35%

That is the whole argument in one table. Community-made timings are nearly always excellent. Automatic captions are usable a third of the time.

The catalogue reflects that preference:

timing source songs
LRC file 891
YouTube captions 117
none yet 157

Three quarters of the catalogue runs on timings a person made. We prefer a human-written caption track when one exists, fall back to LRC, and only accept automatic captions when there is nothing else - and even then we hold them to the checks above.

There are 36 songs where YouTube reports no caption track at all. Those are playable without the video sync, and that is the honest outcome: you can still type the lyrics, the words just do not chase you.

The other problem: the same song, a different recording

Suppose the timings are perfect. They can still be wrong for you.

An LRC file is aligned to a particular recording - usually the album cut. The video we play is a YouTube upload, which might be the official video with a four-second label ident on the front, or a live version, or a remaster with a longer intro. The lyrics are correct, the relative timing is correct, and everything is displaced by a constant.

A constant offset is the most frustrating kind of wrong, because it never gets better. You adjust, you fall behind, you adjust again.

So we measure it. When we have both a set of LRC timings and a YouTube caption track for the same song, we align the two and calculate the offset between them, then shift the LRC timings to match the video actually being played. 562 of our 1,165 songs have been through that calibration.

It is worth saying plainly why that number is not higher. Calibration needs a reference to calibrate against, and for a long time we only fetched captions for songs that had no timings at all - which meant a song that got its timings from LRC on the first visit could never be corrected afterwards. The reference was gone and nothing went looking for it again. 847 songs sat on uncalibrated timings for months, which is why "the words start too early" was never a one-song problem. It is now done lazily, when somebody opens the song, so the cost is one caption fetch per song anyone actually plays.

What to do when you hit a bad one

Two things help immediately.

Slow the video down. The speed control goes to 0.5x. A song that is thirty words per minute past your ceiling becomes a song you can type, and the sync stays honest because the timings scale with it.

Turn off "keep video in sync" if the auto-pause is fighting you rather than helping. Without it the video plays through and you type at your own pace.

And then please tell us which song. The contact form takes about ten seconds and a song title. Sync problems are close to invisible from our side - a song with bad timings looks exactly like a song nobody has played yet - so a report naming the track is the main way they get found and fixed. Several of the checks described above exist because somebody sent us one song that felt wrong.

Ready to put this into practice?

Start typing to a song →