Subtitle Timing Shifter
Text Tools · Added
Subtitles go wrong in two different ways, and they need two different fixes. When every line is late by the same amount, one number corrects the whole file. When the error grows as the film goes on, the copy was timed against a different frame rate and no single offset can help — that needs a stretch as well as a shift. This does both, and shows the before and after timings so you can check before downloading.
3 cues retimed
- Correction
- -2.5 sthe same for every line
- First cue now at
- 00:00:00,000
- Last cue ends at
- 00:01:12,500
1 cue would have started before zero and was clamped to the start of the file.
Before and after
| Was | Now | Text |
|---|---|---|
| 00:00:02,000 --> 00:00:04,500 | 00:00:00,000 --> 00:00:02,000 | Subtitles out of sync? |
| 00:00:05,000 --> 00:00:08,000 | 00:00:02,500 --> 00:00:05,500 | Paste the file here, or choose it above. |
| 00:01:12,250 --> 00:01:15,000 | 00:01:09,750 --> 00:01:12,500 | Every line moves together. |
How to use the subtitle timing shifter
- 1Choose the .srt or .vtt file, drop it on the box, or paste the text straight in.
- 2Pick what is wrong. Use a fixed shift when the whole file is uniformly early or late; use frame rate when you know both rates; use two sync points when you know neither.
- 3For a fixed shift, enter the seconds — negative makes the subtitles appear earlier. For sync points, give one line near the start and one near the end, with the time each shows at now and the time it should show at.
- 4Check the before and after table, then copy the result or download it as SRT or VTT.
Examples
Subtitles two and a half seconds late
- Input
- Shift by -2.5 s
- Result
- A line at 00:00:12,000 moves to 00:00:09,500
Every line moves by the same amount, so a constant offset is the right tool. Negative is earlier.
A PAL file against an NTSC copy
- Input
- Frame rate, timed for 25 fps, video runs at 23.976 fps
- Result
- Every timestamp multiplied by 1.042708
The correction grows through the film: nothing at the start, over two minutes by the ninetieth.
Neither frame rate known
- Input
- First line shows at 00:00:02,000 but belongs at 00:00:04,000; last shows at 01:12:00,000 but belongs at 01:12:06,000
- Result
- A stretch of 1.000926 and an offset of about +2 s
Two points define the line, so no frame rate has to be identified. Pick them far apart.
About the subtitle timing shifter
Why frame rate causes drift at all
A subtitle cue is fundamentally attached to a frame, and its position in time is that frame number divided by the frame rate. Play the same frames at a different rate and every timestamp moves, proportionally — which is why the error is invisible in the opening seconds and enormous by the closing credits.
The classic case is a film shot at 24 frames per second and broadcast in a 25 fps region. Rather than dropping or duplicating frames, the whole film is simply run 4.167 per cent faster: it finishes four per cent sooner, and its soundtrack is very nearly a semitone sharp, a difference musicians notice on films they know well. Subtitles timed against one version are progressively wrong against the other, and the fix is to multiply every timestamp by the ratio of the two rates.
The direction of that ratio is the classic mistake, and getting it upside down doubles the drift rather than removing it. A cue sits at N divided by the old rate and needs to sit at N divided by the new one, so the correct multiplier is the old rate over the new. Subtitles timed for 25 fps and played against 23.976 are stretched, not compressed.
Where 23.976 comes from
It looks like a rounding of 24 and is nothing of the kind. When colour was added to NTSC television, the colour subcarrier interfered audibly with the sound carrier at exactly 30 frames per second, and the fix chosen for compatibility with existing monochrome sets was to slow the frame rate by one part in a thousand, to 30000/1001. Film transferred into that system inherited the same factor, giving 24000/1001, or 23.976023 recurring.
The consequence is that 23.976 and 24 are genuinely different rates, a tenth of a per cent apart, and confusing them produces a drift of about four seconds over a two-hour film — small enough to be blamed on the subtitles being sloppy, large enough to be annoying by the end. This tool uses the exact rational values rather than the decimal approximations, so a conversion between the two is right rather than nearly right.
Two points beat a guess
The frame rate method needs you to identify two rates correctly. The sync point method needs neither, because two corrections define a straight line, and a straight line is exactly what a frame rate mismatch produces: the same stretch and offset that a rate conversion would compute, recovered from evidence you can read off the screen instead.
That makes it the more reliable of the two in practice, particularly for files that have already been retimed once by someone else and no longer correspond to any standard rate at all. The only discipline it requires is spacing the two points widely, for the reason set out in the FAQ above.
Frequently asked questions
How do I tell a constant offset from a drift?
Which frame rates should I choose?
Why should the two sync points be far apart?
What happens to lines pushed before the start of the file?
Can I convert between SRT and WebVTT here?
Related tools
Text Cleaner
Text Tools
Strip extra spaces, blank lines, line breaks, HTML tags, punctuation and smart quotes.
Time Converter
Converters
Convert seconds, minutes, hours, days, weeks, months and years.
Find and Replace
Text Tools
Replace text across a whole document, matching plain text or a regular expression.
Braille Translator
Text Tools
Converts text to uncontracted Grade 1 braille and back, with the dot numbers for every cell and the full reference tables.