Why subtitles drift
Drift means the error grows steadily: perfect at minute one, half a second late at minute thirty, two seconds late by the end. It happens when the subtitles were timed for a version of the video that runs at a slightly different speed, most often a different frame rate (23.976 versus 25 fps), or after a re-encode that changed the timing base.
Two-point resync fixes this with simple maths. Every cue time t becomes k × t + o, where the stretch factor k and offset o are chosen so your two reference cues land exactly where you said. Every other cue is scaled proportionally between and beyond them.
How to fix subtitle sync
- Pick an early reference cue. Choose a clear line near the start. Play the video and note the moment it is spoken, for example 00:00:12,500. Enter its cue number and that time.
- Pick a late reference cue. Choose a clear line near the end, and note when it is actually spoken.
- Apply resync. The status shows the stretch factor. A value like 1.04271 (or 0.95904) suggests a 23.976/25 fps mismatch.
- Check the middle. Use the Preview tab to spot-check a line halfway through, then download.
Settings explained
- Early and late cue numbers
- The hint under each field shows that cue’s current time and text, so you can confirm you picked the right line.
- Time format
- Enter hh:mm:ss,mmm or hh:mm:ss.mmm. Minutes and seconds alone (mm:ss) also work.
Worked example
Cue 3 currently starts at 00:00:10,000 but is spoken at 00:00:12,000. Cue 900 starts at 01:20:00,000 but is spoken at 01:23:30,000. The stretch factor is (5,010 − 12) ÷ (4,800 − 10) ≈ 1.04342 and the offset about 1.566 s. Cue 3 lands exactly at 12.000 s, cue 900 exactly at 1:23:30.000, and a cue at 40:00 moves to roughly 41:45.
Reference cues far apart
The further apart your two cues are, the more accurate the stretch. Using the first and last spoken lines is ideal.
Troubleshooting
- “Times must be in the same order as the cues”
- The late cue’s correct time is earlier than the early cue’s. Check you did not swap the fields.
- The start is now wrong
- If the video has an extra intro, the relationship is not linear across it. Resync from the first cue after the intro, then shift earlier cues separately.
Frequently asked questions
Shift or resync?
Shift if the error is constant; resync if it grows.
Can I resync more than once?
Yes. Each resync builds on the current timing, and Undo is always available.
Is the resync exact?
The two reference cues land on the exact millisecond you enter; other cues follow the straight line between them.
Do I need the video?
You need to know when two lines are spoken. Previewing here is the easiest way.
Are my subtitle files uploaded?
No. Parsing, editing and saving all happen in your browser. Nothing is sent to a server.