How to sync subtitles: fix out-of-sync timing
In this guide
Few things are more frustrating than subtitles that appear a few seconds before or after the dialogue. It is fixable — but the fix depends on which kind of sync problem you have. This guide walks through both types and the correct approach for each.
Why subtitles fall out of sync
Subtitles are timed to a specific video file. If the video you are watching is not the same edit as the one the subtitles were made for, they will be off. Common causes:
- Different releases of the same film (theatrical cut vs extended cut).
- An intro or "previously on" segment present in one version but not the other.
- Frame rate mismatch (23.976 vs 25 fps).
- Subtitles retimed for a different broadcast or streaming master.
- Intentional cuts or ad breaks.
Diagnosing the problem
The first thing to determine is whether the offset is constant or progressive.
Constant offset
Every subtitle is off by roughly the same amount. Cue 5 is 3 seconds early, cue 50 is 3 seconds early, cue 500 is 3 seconds early. This is the easiest case to fix — one shift fixes everything.
Progressive drift
The offset grows over time. Cue 5 is 1 second early, cue 50 is 3 seconds early, cue 500 is 12 seconds early. This means the subtitle timing was built for a different frame rate or speed. A single shift will not fix it — you need a scale or stretch operation.
Fix: constant offset
Load your subtitle file into the SRT Time Shifter. Enter the offset in seconds — positive to shift later, negative to shift earlier. Apply and download the result.
To find the right offset, note the timecode of a distinctive line in the subtitle file and the actual audio timecode of that same line. Subtract one from the other. For example:
- Subtitle cue for "Hello, world" is at
00:00:15,000. - In the audio, the actor says it at
00:00:18,200. - Offset =
18.200 - 15.000 = +3.200seconds (shift later by 3.2s).
Fix: progressive drift
Progressive drift requires a linear retime or stretch operation. Our current tools apply uniform offsets, not linear scaling. If you confirm progressive drift, the standard workflow is:
- Use a dedicated subtitle editor with a "linear retime" or "stretch" feature (e.g. Subtitle Edit, Aegisub).
- Anchors two points in the timeline — the first good sync point and the last good sync point — and let the editor adjust intermediate cues proportionally.
Note that many "drift" problems are actually a constant offset in disguise. Test with a constant shift first before assuming drift.
Fine-tuning to the millisecond
Once you are close (within a few hundred milliseconds), switch to the Millisecond Shifter. Offsets of ±80ms to ±120ms are common adjustments that feel "not quite right" until corrected. These fine adjustments are easy to apply and easy to undo.
Preventing sync issues
- Match the video file. Always use subtitles intended for the exact release you are watching.
- Validate after shifting. Run the shifted file through the SRT Validator to catch any cues that went negative or now overlap.
- Watch the beginning and end. Check the first cue and the last cue — if both are correct, the middle is almost certainly correct.
- Do not adjust the file if it works. If the subtitle is in sync, do not "improve" it. Save the adjustment for actual problems.
- Keep a backup. Always keep the original file before applying shifts.
Summary
Constant offsets are easy: shift everything by the same amount. Progressive drift needs a linear retime feature not currently in this toolset. Millisecond-level fine-tuning refines an almost-correct result. Validate at the end and you will rarely have trouble.
Read next: Subtitle timing best practices.