Skip to content
Pixora

Subtitle Speed Changer

Processed locally in your browser — nothing is uploaded.

Quick answer

A subtitle speed changer rescales every timestamp by a frame-rate ratio — the classic fix for a PAL/NTSC mismatch. Because time equals frames divided by frame rate, subtitles authored for 25 fps run too fast on 23.976 fps footage; multiplying every time by 25 ÷ 23.976 ≈ 1.0427 stretches them back into sync. Pick the two frame rates and this tool does it in your browser, with no upload.

How to subtitle speed changer

  1. Load the drifting file

    Drop the subtitle file in or paste it. This is the fix when the subtitles start roughly aligned but slide further out the longer the video plays.

  2. Choose source and target frame rate

    Set the frame rate the subtitles were timed for and the frame rate of your video — for example 25 → 23.976, or 23.976 → 25. Or enter a custom speed factor directly.

  3. Export the rescaled file

    Every timestamp is multiplied by the ratio and the preview refreshes. Download the corrected file in its original format or copy it out.

Why does a frame-rate mismatch make subtitles drift?

A subtitle timestamp is really a position in the video, and that position is frames ÷ frame rate. If a file was timed against a 25 fps master but you are watching a 23.976 fps release of the same programme, each frame lasts fractionally longer, so the same frame count corresponds to a later time. The mismatch is tiny per second but it accumulates — a few frames early at the start becomes seconds off by the end. That growing error is the signature of a frame-rate problem, not a constant offset.

Which way do you convert, and by how much?

The factor is simply the ratio of the two rates. Moving a file that was timed for 25 fps onto 23.976 fps content stretches it (times get larger); moving 23.976 fps timing onto 25 fps content shrinks it (times get smaller). The two everyday cases are the PAL and NTSC film rates:

Common film / broadcast frame-rate conversions.
FromToFactorEffect on timing
25 fps (PAL)23.976 fps (NTSC film)25 / 23.976 ≈ 1.0427Stretches — cues move later
23.976 fps (NTSC film)25 fps (PAL)23.976 / 25 ≈ 0.9590Shrinks — cues move earlier
24 fps23.976 fps24 / 23.976 ≈ 1.0010Stretches slightly
25 fps24 fps25 / 24 ≈ 1.0417Stretches

The drift also grows in one clear direction, which tells you which way to convert without guessing. If the captions fall progressively behind the speech, they are running too fast for the picture and need stretching (a factor above 1). If they run progressively ahead, they are too slow and need shrinking (a factor below 1). Match that direction to the table above and you have both the operation and the exact multiplier.

How do I know it is speed and not just an offset?

Check the first line and the last line. If both are wrong by the same amount, it is a constant offset — use a shift. If the first line is nearly right but the last line is badly out, the error is scaling with time and you have a speed problem. When you know neither frame rate but can read two correct times off the video, the subtitle sync fixer derives the ratio for you from those anchors instead.

Does changing the speed upload my file?

No. The rescale is one multiplication per timestamp, done entirely in your browser; the subtitles are read and rewritten locally. There is no network request — confirm it in DevTools → Network. Your captions never leave the device.

For a constant early/late error, use the subtitle shifter. If you would rather anchor to two on-screen times than name the frame rates, the subtitle sync fixer is the sibling tool. When the timing is finally correct, add the subtitles to your video.

Your files never leave your device

Processed locally in your browser — nothing is uploaded. You can verify it yourself: open your browser’s developer tools, watch the Network tab, and use the tool — no upload request is ever made.

Frequently asked questions

What speed factor converts 25 fps to 23.976 fps?

Multiply every timestamp by 25 ÷ 23.976, about 1.0427. That stretches the file so 25 fps-timed subtitles line up on 23.976 fps footage.

And the other direction, 23.976 to 25 fps?

Multiply by 23.976 ÷ 25, about 0.9590. This shrinks the timings so a file made for 23.976 fps content fits a 25 fps release.

My subtitles slowly fall behind the speech — is this the right tool?

Yes. A progressive, growing lag is drift caused by a frame-rate mismatch, which this rescale fixes. A constant lag is an offset and belongs to the shifter instead.

I don’t know either frame rate. Can I still fix it?

Yes — use the sync fixer, which works from two correct on-screen times and figures out the effective ratio for you without you naming any frame rate.

Can I type a custom speed factor?

Yes. If you already know the exact multiplier you need, enter it directly instead of picking two frame rates.

Does rescaling keep my formatting?

Yes. Only the timestamps are multiplied. Text, line breaks and styling are preserved and the file stays in its original format.

Why do PAL versions of films need this so often?

Film shot at 23.976/24 fps is sped up to 25 fps for PAL broadcast, roughly a 4% change. Subtitles from one version drift on the other until you apply the frame-rate factor.