How to fix subtitles that gradually go out of sync
Perfectly synced at the opening credits, three seconds off by the finale. That pattern has a name, a cause, and a permanent 30-second fix — and it is not the delay hotkey.
First, diagnose: offset or drift?
Check one line near the start and one near the end, and note how far off each is.
- Same error at both ends (say, 2 seconds late everywhere): a constant offset, which one number repairs. See subtitles out of sync by a constant delay for which way to shift and why VLC’s
g/hkeys forget it. - Small error at the start, large at the end (fine at 0:05, three seconds off at 1:25): drift. A constant shift mathematically cannot fix this file; whatever you do to minute 5 breaks minute 85.
What causes drift
The subtitle file was timed against a different copy of the video than the one you are playing. The classic culprit is framerate: a film mastered at 23.976 frames per second and a PAL transfer at 25 fps run at slightly different speeds — about 4.1% apart — so the gap between subtitle and speech grows a little every second. Different cuts do the rest: a trimmed studio logo here, an extra anti-piracy card there, and the whole timeline slides. A cut in the middle of the film is a different animal again — subtitles that are right until one point and then wrong by a fixed amount — and has its own guide.
Rule of thumb: a 23.976 ↔ 25 fps mismatch drifts roughly 25 seconds every 10 minutes — about 2.5 minutes across a two-hour film. If your drift grows at about that rate, framerate is your culprit and the fix is exact.
The permanent fix: two anchor points
Drift is a linear error, so the repair is a linear retime: every timestamp gets multiplied by a scale and moved by an offset. You never have to compute either number. Two reference points determine the whole line:
- Find one line of dialogue near the beginning. Note when the subtitle claims it happens, and when it actually happens in your video.
- Find one line near the end and note the same two times. The further apart your two anchors, the more precise the repair.
- Give both pairs to a two-point retimer. Every cue between them is rescaled proportionally; both anchors land exactly where you placed them.
“When it actually happens” is the step that sinks most attempts, because scrubbing to the instant of a sound is a guess. The accurate route is to measure the delay in VLC at each line and add it to the timestamp in the file. Two readings also tell you, before you touch anything, whether you are looking at drift or a plain constant offset.
If you already know the mismatch (the file says 25 fps, your video is 23.976), a framerate preset does the same repair in one click — the scale is just the ratio of the two rates. Finding those two numbers is its own small job, and your subtitle file does not contain one of them: converting subtitle framerate covers where to look and how to read the rate off the drift.
Why not just fix it in the player?
VLC’s subtitle delay and its hidden speed controls are session-only: close the player and the correction is gone, and it never transfers to your TV, phone, or media server. Repairing the file itself takes the same 30 seconds and is permanent — the fixed SRT plays in sync everywhere, forever. It is the static QR code of subtitle problems: fix the artifact, not the viewer.