Subtitle timing tool

Subtitle FPS / Frame Rate Converter

To fix subtitles that drift, rescale every timecode by source ÷ target frame rate — converting 23.976 → 25 fps multiplies each time by about 0.95904 so the file matches the new video. Both .srt and .vtt are supported, the timecode format is kept, and it all runs in your browser.

Last updated: 2026-06-11

fps-converter

Drop your subtitle file here, or click to browse

Supports .srt and .vtt

No file handy?

Common values: 23.976, 24, 25, 29.97, 30, 50, 59.94, 60. Multiply factor = 0.95904 (source ÷ target).

Runs in your browserSRT & VTTTimecode format keptNo upload to a server

How to convert subtitle frame rate

01

Upload

Drop in your .srt or .vtt file. The tool detects the format and counts the cues.

02

Set source and target

Choose the FPS the subtitles were made for and the FPS of your video — for example 23.976 → 25.

03

Convert

Every timecode is multiplied by source ÷ target. The preview shows old and new times side by side.

04

Download

Save the rescaled file as name.25fps.srt (or your target) in the original format.

Common frame rates and when to use them

Set Source FPS to the frame rate the subtitles were authored for and Target FPS to your video. These are the values you will meet most often:

FPSTypical use
23.976Film / Blu-ray (NTSC film, 24p)
24Cinema, some Blu-ray and digital masters
25PAL television, European DVD
29.97NTSC broadcast and DVD video
30Some web video and older NTSC content
50PAL high-frame-rate, sports
59.94NTSC high-frame-rate, sports
60High-frame-rate web and game capture

The classic mismatch is a film subtitle made for 23.976 fps played on a 25 fps PAL copy: the subtitles run slow and fall behind. Rescaling by 23.976 ÷ 25 brings them back in sync.

Rescale vs. constant shift

A frame-rate rescale multiplies every timecode, so the error it removes grows with elapsed time — exactly the drift a wrong frame rate causes. If your subtitles are instead off by the same amount from the first line to the last, the frame rate is fine and you only need a fixed offset. In that case use the subtitle timing shifter to move every cue by a set number of seconds.

Key facts

  • Every cue time is multiplied by source FPS ÷ target FPS, so the correction scales with elapsed time.
  • Converting 23.976 → 25 uses a factor of ~0.95904; converting 25 → 23.976 uses ~1.04270.
  • Presets cover 23.976, 24, 25, 29.97, 30, 50, 59.94 and 60 fps, and you can type any custom rate.
  • Both .srt and .vtt are supported; the output keeps the format you uploaded.
  • The rescale runs in your browser — no upload, no account, instant for thousands of cues.

Definitions

Frame rate (FPS)
Frames per second the video plays at. Subtitles authored against one frame rate drift on a copy encoded at another.
23.976 fps
Film transferred for NTSC — 24 fps slowed by 1000/1001. The most common source for movie subtitles, often labelled 23.976 or 24p.
25 fps
The PAL television and European DVD standard. A common target when a film subtitle made for 23.976 needs to match a PAL release.
29.97 fps
NTSC video — 30 fps slowed by 1000/1001, used across North American and Japanese broadcast and DVD.
Scale factor
The number every timecode is multiplied by: source FPS ÷ target FPS. Above 1 makes subtitles later, below 1 makes them earlier.
Drift
Error that grows with elapsed time. A frame-rate mismatch causes drift, which only a proportional rescale — not a constant shift — can correct.

FPS converter questions

How do I convert subtitles from one frame rate to another?+

Upload your .srt or .vtt file, set the Source FPS the subtitles were made for and the Target FPS of your video (for example 23.976 → 25), and apply. Every timecode is multiplied by source ÷ target, so the subtitles line up with the new frame rate. Download the rescaled file in the same format.

Why do subtitles drift when the frame rate is wrong?+

Subtitles authored for a 23.976 fps source play too slowly on a 25 fps copy, so they fall further behind with every minute. The error is proportional to elapsed time, which is why a single shift cannot fix it — the timings must be rescaled by the ratio of the two frame rates.

What multiply factor does the tool use?+

It multiplies every cue time by source FPS ÷ target FPS. Converting 23.976 to 25 fps uses a factor of about 0.95904, which makes the timecodes slightly earlier; converting 25 to 23.976 uses about 1.04270, making them slightly later.

Which frame rates are common?+

23.976 and 24 fps are typical for film and Blu-ray, 25 fps for PAL television and European DVDs, 29.97 and 30 fps for NTSC, and 50, 59.94 and 60 fps for high-frame-rate and sports content. The tool lists all of these and also accepts a custom value.

Does the conversion keep my SRT or VTT format?+

Yes. The output stays in the format you uploaded — SubRip stays .srt with comma-millisecond timecodes, WebVTT keeps its WEBVTT header and dot-millisecond timecodes. Only the timecode numbers change.

What if the subtitles are off by a constant amount instead of drifting?+

If the gap is the same from start to finish, the frame rate is fine and you only need a fixed offset. Use the subtitle timing shifter to move every cue by a set number of seconds.

Is the file uploaded anywhere?+

No. The rescale runs in your browser with JavaScript. There is no account, no server upload, and no per-character cost, so even files with thousands of cues convert instantly.