Skip to content

Why subtitle timings drift

Timings drift for physical reasons, not because the tool is lazy. What moves a cue, why re-transcribing compounds it, and how forced alignment removes it.

3 min read

Also in简体中文日本語한국어

If you have ever finished a subtitle file only to find it half a second early by the end of the clip, you have met drift. It is the most common complaint about subtitle tools, and almost every explanation of it is wrong in the same way: it describes the symptom as a bug rather than as arithmetic.

Drift is a measurement problem, not a quality problem

A subtitle file makes one claim per cue: these words were spoken between this timestamp and that one. Producing it means measuring where speech starts and stops.

Two things make that measurement hard.

Speech has no gaps by default. In continuous narration, sentence boundaries are marked by intonation, not silence. A recogniser that segments on silence will put a boundary in the middle of a clause — or run two sentences into one cue.

The words you want on screen are not the sounds in the file. People say “twenty sixteen” for 2016, “Mister” for Mr., and a name they have never said aloud before. A system that only hears audio has to guess the spelling, and every guess that lands differently from your script shifts text relative to timing.

The drift is usually small per cue. It is the accumulation that ruins a file: a 40-millisecond error every twelve seconds is nine seconds of lag at the end of a twenty-minute video.

Why re-transcription compounds it

The default pipeline is: run a speech recogniser, get words with timestamps, format them into SRT, then hand the file to a human who fixes the text.

That last step is where drift gets its reputation. You correct a misheard name from Alignesert to AlignSRT — a longer string, in a different place on the line. The platform re-wraps the cue. The new wrap changes how many characters fit on screen for the same duration, and the next cue was budgeted against the old one. Correct one word at minute three and you have moved a boundary at minute three; do it forty times and the file is visibly out of sync by the end.

The text fix and the timing fix are the same edit, and the pipeline treats them as separate passes.

What forced alignment does instead

Forced alignment inverts the problem. You do not ask what words were spoken. You already know — you have the script. You ask: given this exact text and this audio, where does each word sit?

The aligner builds a phoneme sequence from your text, then searches the audio for the path that best matches that sequence. Because the word sequence is fixed by your script, there is no spelling guess to make and no text to correct afterwards. The words on screen are the words you wrote, character for character, and the timings are derived from them.

Three consequences that matter in practice:

  • Names, brands and jargon are correct by construction. They were never heard; they were given.
  • There is nothing to re-wrap. Correcting text cannot move a boundary, because text is the input, not an output to be fixed.
  • Uncertainty is local and visible. A good aligner reports per-line confidence, so you review the five lines it doubts instead of spot-checking four hundred.

The one case where drift is still your fault

Forced alignment assumes the audio and the script say the same thing. If the voiceover was re-recorded, if a line was cut in the edit, if the speaker improvised — the alignment has to reconcile a script that does not match the audio, and it will either place that region with low confidence or mark it.

That is a real limitation, and it is worth knowing before you upload: the aligner’s accuracy is bounded by how closely the recording follows the text. What it will not do is silently invent plausible words to cover the gap.

Checking a file in thirty seconds

Before you ship, look at the two places drift shows up first:

  1. The last cue of the longest continuous passage. If it is late there, something accumulated.
  2. Any line containing a proper noun. If the name is spelled the way you wrote it, the alignment was text-driven; if it is spelled the way a machine heard it, it was transcription wearing an alignment label.

Thirty minutes of alignment is free on this site — enough to run both checks on a real file rather than a demo.

Keep reading

Stop dragging subtitle blocks at 2am.

Your script is already correct. Let it find its own timing.

Align your first 30 minutes free

No credit card · No subscription · SRT download included