What this does
When subtitles start roughly in sync and get worse as the video plays, no single offset can fix them — the error grows with time. That is a frame-rate or playback-speed mismatch, and the fix is to resample every timestamp by a ratio rather than shift it by a constant.
How to use it
- Paste or drop the subtitle file that drifts.
- Pick the preset that matches your situation — for example
23.976 fps → 25 fps— or type a ratio yourself. - Download the resampled file. Every start and end time is multiplied by the same ratio.
Good to know
- A ratio above 1 stretches the timeline, making subtitles appear later; below 1 compresses it, making them appear earlier.
- Resampling changes every gap between cues, not just their position. If the original file had correct pacing, the output will too.
- The output format follows the input, so an SRT file stays SRT and a VTT file stays VTT.
- If the first cue is correct but later ones drift, resampling around that first cue gives the best result — its position barely moves.
Drift versus offset: pick the right fix
Compare a cue near the start of the file with one near the end. That single check tells you which tool you need.
Constant offset. Both cues are wrong by the same amount. Every line appears, say, two seconds late. Use the shift tool — one offset fixes the whole track.
Progressive drift. The first cue is nearly right and the last one is badly wrong, and the error grows steadily through the file. This is what this page fixes. A drifting track needs its timestamps scaled, not moved.
The usual cause is a subtitle file authored for one frame rate being played against another. The 23.976 fps ↔ 25 fps pair is the classic case: it is the difference between NTSC-derived and PAL-derived masters, and it produces about four seconds of drift over a feature-length film.
The same maths covers playback speed. If a video was sped up to 1.1× to fit a time slot, its subtitles need dividing by 1.1 — which is a ratio of roughly 0.909.
Worked example
Input — drifting SRT
1 00:00:01,000 --> 00:00:04,000 Hello there. 632 01:40:12,500 --> 01:40:15,500 Goodbye.
Output — resampled ×1.04271
1 00:00:01,043 --> 00:00:04,171 Hello there. 632 01:44:17,086 --> 01:44:20,213 Goodbye.
The early cue barely moves, while the late cue shifts by roughly four minutes — that widening gap is exactly what a fixed offset cannot reproduce.
FAQ
How do I tell drift from a simple offset?
What ratio do I use for 23.976 to 25 fps?
25 ÷ 23.976 ≈ 1.04271. The preset on this page already has it, so you do not have to type it.My video plays faster than the original. What then?
1 ÷ 1.1 ≈ 0.909; for 1.25× use 0.8. Both are in the preset list.Can this fix a file that is out of sync only in one section?
Troubleshooting
- The first cue moved tooResampling scales everything from zero, so the earliest cues shift slightly. If your file starts late, subtract that starting offset first with the shift tool, then resample.
- Subtitles are now drifting the other wayThe ratio is inverted. Swap it — use 0.95904 instead of 1.04271 for a 25 fps source played at 23.976.
- Nothing changed in the outputThe ratio is 1, which is a no-op. Pick a preset or enter a value other than 1.
- Cues overlap after resamplingStretching a track that already had tight gaps can push cues into each other. Clean or re-time the crowded section manually after resampling.
Related tools
Subtitle Timing Checker
Audit an SRT or VTT file for cues that are too fast, too short, too long or overlapping.
Shift Subtitle Timing
Move every subtitle cue earlier or later to fix out-of-sync captions.
Clean Up AI-Generated Subtitles
Remove sound cues, HTML tags, speaker labels and duplicate cues from auto-generated captions.