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.
The PAL/NTSC mismatch explained
Film and television have historically run at different speeds. Film and modern streaming commonly use 23.976 fps (technically 24000/1001). European PAL television runs at 25 fps. When a film mastered at 23.976 fps is broadcast on PAL at 25 fps, the video runs approximately 4.2% faster than intended. A subtitle file made for the 23.976 version starts nearly in sync but drifts further out with every passing minute — potentially several minutes off by the end of a feature film.
The fix is to multiply every timestamp by 23.976 ÷ 25 = 0.9590, compressing the subtitle timeline by the same 4.2%.
How to identify the problem: drift versus fixed offset
These two symptoms look similar at first but require different fixes:
- FPS mismatch (use this tool): captions start nearly right but slip progressively as the video plays. The error at 10 minutes is noticeably different from the error at 90 minutes.
- Fixed offset (use a time shifter instead): every caption is off by exactly the same amount throughout, from the opening scene to the closing credits.
Common frame-rate pairs
| Source | Target | Scale factor | Typical scenario |
|---|---|---|---|
| 23.976 | 25 | 0.9590 | Film subtitle on PAL broadcast |
| 25 | 23.976 | 1.0427 | PAL rip played on 24 fps source |
| 29.97 | 23.976 | 0.7992 | NTSC TV sub on film video |
| 24 | 25 | 0.9600 | True 24 fps content on PAL |
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.