How to Check if Subtitles Are in Sync (and Measure the Drift)
Two ways subtitles go out of sync
Out-of-sync subtitles come in two flavours, and they need different fixes:
- Constant offset — every line is early or late by the same amount. Usually a missing or extra few hundred milliseconds at the start (a different intro, a trimmed frame). Fix: shift the whole file by one number.
- Progressive drift — the subtitles start aligned but fall further behind (or ahead) as the video plays. This is almost always a frame-rate mismatch — subs timed for 23.976 fps played against 25 fps, or vice-versa. Fix: rescale the timing, not just shift it.
You can’t tell which one you have by watching the first minute — they look identical there. You need to compare the timing across the whole file.
Compare the timing, line by line
If you have a reference subtitle file (the correctly-timed one) and the suspect file, DiffALL’s subtitle comparison matches lines by their text and measures the timing drift — the millisecond gap between when each matching line starts in each file:
- Upload both subtitle files (SRT or VTT).
- Lines are paired by content, so it compares like with like even if a line was added or removed.
- You get average drift, maximum drift, and a per-line drift chart — plus a line-by-line diff of any text changes and the Word Error Rate.
The shape of the drift chart is the diagnosis.
Reading the drift chart
| Drift pattern | Diagnosis | Fix |
|---|---|---|
| Flat line near 0 ms | In sync. | Nothing to do. |
| Flat line at a constant non-zero value | Constant offset. | Shift the whole file by that amount. |
| A straight line sloping away from 0 | Progressive drift — frame-rate mismatch. | Rescale timing (e.g. ×23.976/25). |
| Flat, then a step | Alignment breaks at an edit point. | Re-sync from that timestamp on. |
| Scattered / noisy | The two files aren’t the same subtitles. | Check you’re comparing the right pair. |
A constant offset and a growing drift look the same for the first few lines — the whole-file chart is what separates them, which is exactly why eyeballing the opening never settles it.
Common uses
- Translation QA: confirm a translated subtitle track kept the original’s timing, not just its lines.
- Re-timing verification: after shifting or rescaling a file, re-compare to prove it now sits at ~0 ms drift.
- Source matching: check whether a downloaded subtitle was timed for your video’s frame rate before you sit down to watch.
- Revision review: compare two rounds of a subtitle file to see both text edits and timing changes at once — related: comparing two text files.
The bottom line
“Are these subtitles in sync?” has a precise answer: compare the two files and read the drift. A flat line means aligned, a constant offset means shift, and a sloping line means a frame-rate rescale — so you fix the right thing the first time instead of nudging timestamps by hand. Compare two subtitle files now.
Stop hunting for differences by hand. DiffALL spots every change between any two files — automatically.
Compare your files — free