Home › Tools › Resync Subtitles by Frame Rate or Speed

Resync Subtitles by Frame Rate or Speed

Fix subtitles that drift progressively out of sync by resampling them to your video's frame rate or playback speed.

Drop a subtitle file here, or
Preset or ratio

Your file never leaves your device

This tool is plain JavaScript. There is no upload step and no server-side processing, so confidential captions, unreleased content and client material stay on your machine.

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

  1. Paste or drop the subtitle file that drifts.
  2. Pick the preset that matches your situation — for example 23.976 fps → 25 fps — or type a ratio yourself.
  3. 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?
Check a cue near the start and one near the end. If both are wrong by the same amount, it is an offset. If the error grows through the file, it is drift and needs a ratio.
What ratio do I use for 23.976 to 25 fps?
Multiply by 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?
Divide by the speed factor. For 1.1× playback use a ratio of 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?
No. Split the file at the point where sync changes and resample each part separately — a single ratio applies to the whole track.

Troubleshooting

  1. 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.
  2. 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.
  3. Nothing changed in the outputThe ratio is 1, which is a no-op. Pick a preset or enter a value other than 1.
  4. 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

Last updated 2026-09-21. All conversions happen locally in your browser.