Why subtitles go out of sync (and how to fix each cause)

“Out of sync” is a symptom, not a diagnosis. There are three distinct causes, each with its own fix — and using the wrong one makes things worse. Match your symptom below to the right tool.

Reference · updated June 2026

Subtitles store wall-clock times. They go wrong when those times no longer match your video — and they can mismatch in three fundamentally different ways. The trick is to read the pattern of the error, because the pattern tells you the cause, and the cause tells you the fix.

The 30-second diagnosis

SymptomCauseFix
Every line is off by the same amount, start to finish Constant offset Shift by a fixed offset
In sync at the start, drifts further off as it plays Framerate mismatch Framerate convert or two-point sync
Sync is fine in places, wrong in others, jumps around Different cut / edition Re-time sections in the editor

Cause 1: a constant offset

The most common case. Every subtitle appears the same number of seconds too early or too late, and that gap never changes. It usually means the subtitle was made for a release with a slightly different start — extra studio logos, a different intro length, or a stream that begins a beat sooner than your file.

The fix: add or subtract a fixed amount from every timestamp. Note when a line is actually spoken, check the time the subtitle shows, and the difference is your offset. Positive pushes subtitles later, negative pulls them earlier. The subtitle shifter does exactly this, and clamps anything that would land before zero.

Cause 2: a framerate mismatch (drift)

The telltale sign is a gap that grows. The subtitles are nearly right at the opening titles but seconds out by the credits. This happens because the subtitle was timed against one framerate and your video runs at another — classically PAL 25 fps versus a 23.976 fps film transfer. Because the relationship is a ratio, the error accumulates over the runtime.

A constant offset cannot fix drift — line it up at the start and the end is still wrong; line up the end and the start breaks. You need to stretch the timeline, not slide it. Two ways:

  • If you know the framerates, use the framerate converter and pick the source and target (e.g. 25 → 23.976). It scales every timestamp by the ratio.
  • If you don't, use two-point sync: mark one line near the start and one near the end with their correct times, and the tool fits a linear correction through both — the same maths, without needing the numbers.

Cause 3: a different cut or edition

Here sync is correct in some stretches and wrong in others, often jumping at scene boundaries. The subtitle was made for a different version of the video — a theatrical vs extended cut, a release with adverts removed, or an episode with a recap your file lacks. No single offset or ratio fixes this, because the timelines genuinely diverge.

The fix is sectional. Open the file in the editor, find where each stretch goes wrong, select the affected rows and shift them on their own. If the difference is a whole missing or extra segment, you may be better off finding a subtitle made for your exact release.

A related case: joined or split videos

If you've combined two video files (CD1 + CD2) but have two separate subtitle files, the second one starts from zero and lands in the wrong place. That's not really a sync fault — it's a merge: offset the second file by the length of the first and join them. The reverse, when one subtitle must serve two video parts, is a split.

When it isn't sync at all

Two problems masquerade as sync issues. If subtitles appear at the wrong time and the file generally misbehaves, it may simply be malformed — run it through the SRT repair tool first. And if the text itself is garbled, that's an encoding problem, not a timing one. Fix those before chasing the clock.

The workflow, in order

  1. Does the text look right? If not, fix the encoding.
  2. Does the file load at all? If not, repair the structure.
  3. Same offset throughout? Shift it.
  4. Drift that grows? Framerate-convert or two-point sync.
  5. Section-by-section wrong? Re-time in the editor.

Tools for this