Skip to main content
SubtitleMatrix

Convert Subtitle Frame Rate

TimingFrame rate conversion
Or paste subtitle text

Options

Which frame rate the timings are counted in. On the format pages this is what MicroDVD needs, because it stores timing as frame numbers. On the frame rate pages it is the rate the file was timed against — the version the subtitles were made for — and the page's second box takes the rate of the video you are going to use them with. 23.976, 24, 25, 29.97, 30, 50, 59.94 and 60 are the common ones. Getting it wrong shifts the whole timeline, and on the frame rate pages it shifts it by a ratio rather than by a fixed amount.

The frame rate of the version you are going to use the subtitles with — the video you are actually going to play. The factor applied is the first box divided by this one, so 24 into 25 gives 0.96: a film runs 4% faster on PAL, and a 100-minute feature fits a 96-minute tape. Getting the two boxes the wrong way round shifts the whole timeline in the wrong direction by the same amount.

A frame rate conversion changes the speed of a subtitle timeline: every timestamp is multiplied by one ratio, worked out from the two frame rates. The first box is the rate your file was timed against — the version the subtitles were made for. The second is the rate of the version you are going to use them with. The ratio is the first divided by the second, so 23.976 into 25 gives 0.95904 and everything comes out 4.1 percent earlier.

That direction is the whole of the tool, and it is the part that goes wrong. The number you divide by is the version you are going to play, not the one you have. The reason is easiest to see with the PAL case: a film shot at 24 fps and shown at 25 fps replays the same pictures 4 percent faster, which turns a 100-minute feature into a 96-minute tape. A file timed against the film therefore has to be squeezed by 96 to sit on the tape, and the same file coming back to a film master has to be stretched by 104.1667. Type the two rates in the wrong boxes and the timeline moves by the same amount in the wrong direction — the file still looks like a subtitle file, which is why the two boxes are labelled rather than left as a single multiplier.

These are the pairs that come up: 23.976 to 25 and back for NTSC film against PAL, 24 to 25 and back for a film master against PAL, 50 to 25 when interlaced material has been counted twice, and 23.976 against 29.97 when a timeline has been counted in the wrong frames. The six pages in this group fill the boxes in for you and explain what each pair is for; this page is for anything else. Both boxes take any rate, including 29.97, 30, 59.94 and 60.

MicroDVD .sub files behave differently from every other format here, because their timecodes are frame numbers rather than clock values. The same pictures replayed at a different rate keep their frame numbers — frame 50 is frame 50 in both versions — so a conversion leaves those numbers alone and changes the frame rate declared on the file's first line instead. SRT, WebVTT, ASS, SSA, SBV, SAMI, TTML, JSON and CSV are all read as what they actually are rather than as the extension suggests; plain text and LRC are not accepted, because neither stores an end time for the ratio to be applied to. Nothing is uploaded, and a whole season goes through the queue in one pass.

Examples

The pair the boxes start on

Input

1
00:00:02,000 --> 00:00:04,000
Hello there.

2
00:00:30,000 --> 00:00:32,000
Half a minute in.

Output

1
00:00:01,918 --> 00:00:03,836
Hello there.

2
00:00:28,771 --> 00:00:30,689
Half a minute in.

23.976 into 25 is 0.95904, so every timestamp keeps 95.904 percent of its value. The cue at two seconds moves 82 ms; the one at thirty seconds moves 1,229 ms — fifteen times the distance from zero, fifteen times the movement. Nothing else about the file changes, and both edges of each cue are multiplied by the same number, so cue lengths shrink in the same proportion.

Why the frame numbers stay put

Input

{1}{1}25
{50}{100}Hello
{150}{200}World

Output

{1}{1}24
{50}{100}Hello
{150}{200}World

This looks like nothing happened, and the frame numbers genuinely did not move — the same pictures replayed at a different rate are still frames 50, 100, 150 and 200. What changed is the rate on the declaration line the format opens with: 25 became 24, and that is what moves the subtitles in the player. Convert the same file without declaring a rate anywhere and the frames would be multiplied instead, which is the answer for files whose timing was counted in the wrong frames rather than for files being replayed at a different speed.

A file that opens a minute in

Input

1
00:01:00,000 --> 00:01:02,000
Lead-in ends, speech starts.

2
00:02:00,000 --> 00:02:02,000
One minute later.

Output

1
00:01:02,563 --> 00:01:04,648
Lead-in ends, speech starts.

2
00:02:05,125 --> 00:02:07,211
One minute later.

25 into 23.976 is 1.0427094, the other direction, and it is applied from zero: the opening cue sits a minute in and is pushed two and a half seconds later. A lead-in is part of the timeline like any other silence, so it scales with everything else. If the first subtitle must stay where it is and only what follows it may move, what you want is a fixed offset or a point sync rather than a ratio.

Frequently asked questions

Which of the two frame rates do I put in the first box?

The one the file was timed against — the version the subtitles were made for, not the video you are about to watch. The multiplier is the first box divided by the second, so a file made for 24 fps and needed for 25 fps takes 0.96, and the same file coming back from PAL takes 1.0416667. Both of those are single-entry numbers in the sense that they only make sense as a pair: 0.96 alone means nothing without knowing which version the file came from.

Can I type rates that are not in the list of pairs?

Yes. The two boxes are free text as far as the arithmetic is concerned, and the ratio is worked out from whatever you put in them — 29.97, 30, 48, 59.94 and 60 all work. The six pages in this group exist because their pairs are the ones people meet in practice, and because a page that names the pair can explain what causes it. If you know the ratio rather than the rates, the timing group's scale page takes a percentage directly.

Why is every subtitle shorter after a frame rate conversion?

Because both edges of every cue are multiplied by the same ratio. A two-second subtitle at 0.96 comes out 1.92 seconds long, and at 0.95904 it comes out 1.918. Nothing is being trimmed from the text — the cue is given less time because the whole timeline is being replayed faster, and the reading speed of the line therefore goes up by the same 4 percent. That is worth checking before shipping a file converted into PAL.

Why does a MicroDVD file keep its frame numbers?

Because its timecodes are frame numbers, and the pictures are not being changed — the same shots replayed at a different rate are still the same frames. What the conversion rewrites is the frame rate declared on the first line of the file, which is what the player uses to turn those frame numbers back into seconds. A .sub whose timing was counted in the wrong frames is the other case: there the frame numbers do move, and the page for that pair is 23.976 to 29.97.

Do I need a separate page for each pair of frame rates?

No, this page handles any pair. The other pages in the group are shortcuts that fill both boxes in and explain the pair: 24 and 25 for film against PAL, 23.976 and 25 for NTSC film against PAL, 23.976 and 29.97 for frame-count mix-ups, and 50 to 25 for interlaced material counted twice. Nothing on those pages is unavailable here — they differ in what they tell you about why your file needs them.

What happens if I put the same rate in both boxes?

Nothing, and the tool says so rather than pretending to work. A ratio of one is an identity mapping, so the file comes back byte for byte as it went in. That is a useful check in its own right: drop a file on this page with both boxes set to the same rate and you are looking at exactly what the parser and writer do to it, with no frame rate arithmetic on top.

Related tools