Converting 25 fps subtitles to 23.976 fps
The same film exists at different frame rates depending on where it was released. Subtitles made for one and played against another drift steadily, and the PAL 25 against NTSC 23.976 pairing is by far the most common version of this problem.
Updated
Convert frame rateWhat actually goes wrong
Subtitle timestamps are absolute times, not frame numbers, in every common format except MicroDVD. So the frame rate is not stored anywhere in the file. What happens instead is that the subtitles were authored against a copy of the film running at one speed, and you are playing a copy running at another.
A PAL release runs at 25 fps. An NTSC or Blu-ray release of the same film typically runs at 23.976 fps. The PAL copy is therefore about 4.27% shorter in wall-clock time. Subtitles from it run fast against the longer copy, getting progressively earlier as the film goes on.
The conversion factor
To move subtitles from a source rate to a target rate, multiply every timestamp by source ÷ target.
For 25 to 23.976 that is 25 ÷ 23.976 = 1.04271. A line at00:10:00.000 becomes 00:10:25.626. A line at01:40:00.000 becomes 01:44:16.256.
| Subtitles | Video | Exact ratio | Multiply by | Shift at 100 min |
|---|---|---|---|---|
| 25 fps | 23.976 fps | 1001 ⁄ 960 | 1.0427 | +4:16 |
| 25 fps | 24 fps | 25 ⁄ 24 | 1.0417 | +4:10 |
| 24 fps | 23.976 fps | 1001 ⁄ 1000 | 1.001 | +0:06 |
| 23.976 fps | 25 fps | 960 ⁄ 1001 | 0.959 | −4:06 |
| 30 fps | 29.97 fps | 1001 ⁄ 1000 | 1.001 | +0:06 |
| 29.97 fps | 23.976 fps | 5 ⁄ 4 | 1.25 | +25:00 |
| 25 fps | 29.97 fps | 1001 ⁄ 1200 | 0.8342 | −16:35 |
Why those ratios are exact
The decimals are rounded; the ratios are not. 23.976 and29.97 are shorthand for 24000 ⁄ 1001 and30000 ⁄ 1001, where the 1001 is the fudge NTSC adopted to fit colour into a black-and-white signal. Divide one NTSC rate by another and the 1001 cancels, which is why 29.97 to 23.976 is exactly 5 ⁄ 4 and 24 to 23.976 is exactly 1001 ⁄ 1000.
Bringing a PAL rate into it is what produces the awkward numbers, because 25 has no 1001 in it to cancel against. That is the whole reason 25 to 23.976 is1001 ⁄ 960 rather than anything memorable. If you are checking someone else's arithmetic, work in the fractions — rounding 1.0427 to four places is already half a second out across a feature film.
Note the 24 to 23.976 row. A factor of 1.001 looks like nothing, but it is still six seconds by the end of a long film, which is plainly wrong on screen. This pair catches people out constantly because a release labelled "24 fps" is very often actually 23.976.
The giveaway you can hear
A PAL transfer of a 24 fps film is not re-timed, it is simply played 4.27% fast, and the audio is carried along with it. That speed-up is almost never pitch-corrected, so the whole soundtrack sits about 72 cents sharp — just under three-quarters of a semitone.
It is subtle in isolation and obvious in comparison. If you know the film, voices and music sound faintly hurried and slightly high. If you have both copies, play the same scene in each. Hearing it confirms the subtitle side came from the PAL copy without reading a single piece of metadata, which is useful precisely when the release name tells you nothing.
Working out which rates you have
The video
- VLC: Tools, then Codec Information. Read the frame rate field.
- macOS: select the file, press Command-I, look under More Info.
- MediaInfo: reports it for any container, including MKV.
- mpv: press
iduring playback for the stats overlay.
The subtitles
There is nothing in the file to read, so you infer it. A release name containing PAL, DVDRip from a European source, or a runtime about 4% shorter than the Blu-ray runtime suggests 25 fps.BluRay, WEB-DL and BRRip are usually 23.976. If the subtitle file came bundled with a specific release, that release's frame rate is the answer.
If you cannot work it out, do not guess. Measure instead: usethe two-point stretch, which derives the correction from where two lines actually are and where they belong, or drop the video into Cuelatch and let it find the ratio from the audio.
Converting the file
Open the frame rate converter, drop the subtitle file in, pick the source and target rates, and download. Every timestamp is rescaled by the ratio. Nothing else in the file is touched, so ASS styling, fonts, positioning tags and karaoke timing all survive intact.
One caveat worth knowing: rescaling assumes the two copies start at the same moment. If your video also has a different intro length, you will need a frame rate conversion and a shift. Convert first, then check the opening line and nudge if it is still out.
If your subtitles are pictures rather than text
This is the common dead end for DVD sources, and it is worth recognising early. DVD subtitles are VobSub — an .idx index beside a.sub of bitmaps. Blu-ray subtitles are PGS, usually a.sup. Neither contains text. They are pictures of words, so there is nothing in them for a text tool to rescale, and Cuelatch will not open them.
Two ways forward, depending on what you want at the end:
- Keep them as images. BDSup2Sub reads VobSub and PGS and can apply a frame-rate conversion directly, which preserves the original typesetting.
- Convert them to text. Subtitle Edit will OCR a VobSub or PGS track into an SRT. Once it is text, every problem on this site becomes solvable, including this one — but check the output, because OCR reliably confuses
l,Iand1.
MicroDVD is the exception
.sub files in MicroDVD format store frame numbers rather than times, so their frame rate genuinely matters for reading the file at all, not just for playing it. Cuelatch asks for the rate when it opens one and converts correctly in frames rather than milliseconds.
Common questions
- How do I convert 25 fps subtitles to 23.976 fps?
- Multiply every timestamp by 25 divided by 23.976, which is about 1.0427. A subtitle at 10:00 moves to 10:25.6. Doing this by hand across a thousand cues is impractical, so use a tool that rescales the whole file at once.
- How much do 25 fps subtitles drift on 23.976 fps video?
- About 4.27%, which is roughly 2.5 seconds per minute. Over a 100-minute film the last line lands more than four minutes early.
- How do I find out what frame rate my video is?
- In VLC, open Tools then Codec Information and read the frame rate field. On macOS, right-click the file and choose Get Info. MediaInfo reports it for any container. The subtitle side is usually inferred from the release name.
- Does converting the frame rate change the video?
- No. Only the subtitle timestamps are rescaled. The video file is never opened, modified or re-encoded.
- What is the difference between 23.976 and 24 fps?
- A factor of 1.001, inherited from NTSC colour. It sounds negligible but accumulates to about 7 seconds across a two-hour film, which is very visible by the end.
Related
Cuelatch runs entirely in your browser. Subtitle and video files are never uploaded.