The subtitle FPS converter resyncs captions after a video has been converted between frame rates. The most common case is the 23.976-versus-25 fps PAL/NTSC mismatch: a subtitle made for one speed will drift when played over the other. This tool multiplies every timestamp by the correct ratio so the captions stay aligned for the entire runtime, not just at the start.
How it works
When a subtitle authored for a source frame rate is played over a video running at a
target frame rate, real time scales by sourceFps ÷ targetFps. The tool multiplies every
cue timestamp by that factor. For example, converting a 23.976 fps subtitle to match a 25 fps
video uses a factor of 23.976 ÷ 25 ≈ 0.959, slightly compressing the timeline; the reverse
direction stretches it.
Because the error from a frame-rate mismatch is multiplicative rather than a fixed offset, it grows the further you get into the video — a few milliseconds early on, but potentially a second or more by the end. Scaling every timestamp by the ratio corrects the drift uniformly across the whole file. The tool detects SubRip or WebVTT, rewrites only the timestamps, and leaves the cue text and numbering untouched.
Example and notes
A cue at 00:10:00,000 in a 23.976 fps subtitle, reframed to 25 fps, becomes about
00:09:35,424 — and the offset keeps growing in proportion to the time. That progressive
correction is exactly what a single constant offset cannot achieve.
Note: if your captions are off by the same fixed amount everywhere and never drift, you want a plain time offset instead. The convenient swap button reverses the source and target frame rates in one click. Everything runs locally in your browser.