Shift subtitle timing
Subtitles a few seconds early or late? Shift every timestamp in an SRT or VTT file at once, or tell the tool where the first and last lines should land and let it stretch everything in between.
Loading the tool…
Processed in your browser. Your file is never uploaded.
Why subtitles go out of sync
There are two different problems that look the same at first, and they need different fixes. A constant offset means every line is early or late by the same amount. It happens when the subtitle file was timed against a cut of the film that has a different intro, a studio logo, or a trimmed start. A drift means the subtitles start in sync and slowly fall further out, so the error at the end is much larger than at the start. That is almost always a frame-rate mismatch: the file was timed for video playing at one rate and you are watching it at another.
Fixing a constant offset
Pick a line near the start, watch for when it is spoken, and compare it to the time in
the file. The difference is your shift. Use a plus sign to push everything later and a minus
sign to pull it earlier. The box takes seconds (-2.5), milliseconds
(+1500ms) or a clock value (0:01.5). Here is a cue and what a
shift of +2.5 does to it.
Before After +2.5 s
00:00:01,000 --> 00:00:03,500 00:00:03,500 --> 00:00:06,000
Welcome to the show. Welcome to the show.
Fixing drift with two points
Choose Sync two points. Enter the time the first spoken line should start and the time the last spoken line should start. The tool finds the stretch factor and the offset that satisfy both. For example, if the first line is at 0:01:00 but should be at 0:01:03, and the last line is at 1:30:00 but should be at 1:30:12, the stretch is about 1.00169 and the offset about 2.9 seconds. A line that was at exactly one hour in the file lands at about 1:00:09. Measure both points against the video, not against another subtitle file, and pick lines near the very start and very end for the best result.
Frame-rate conversion
If you know the rates, choose Convert between frame rates. Subtitle times are in seconds, but a file timed for video at 25 frames per second, used with a copy of the film at 23.976, shows every line too early and more so as the film goes on, because the same frames take longer to play at the lower rate. The fix is to multiply every time by the ratio of the two rates, here 25 divided by 23.976, about 1.0427. Over a one-hour film that is about two and a half minutes of drift, which is why it is obvious by the end and invisible at the start. Common pairs are in the list: 23.976 and 25, 24 and 25, and 29.97 and 30. The rates apply the right way round when you read the label as “the subtitles were timed for, then the video you have.” If a pair does not remove the drift, try its reverse, or use the two-point sync, which needs no knowledge of the rates at all.
Notes on the output
Times are rounded to the nearest millisecond. You can write the result as SRT or VTT whatever you pasted. To change only the format, use the SRT to VTT or VTT to SRT converter. If you are making subtitles from scratch, the guide to making SRT subtitles from a video covers timing from the start, and transcript file formats explained explains what each file holds.
Questions
How do I work out how much to shift by?
Find one line you can check. Note the time the subtitle appears and the time the words are actually spoken. If a line shows at 10:00 but is said at 10:05, shift by +5. If it shows at 10:00 and is said at 9:58, shift by -2. Then check another line near the end of the film. If that one is still off by a different amount, the file needs a stretch, not just a shift.
What is the two-point sync for?
For subtitles that start in sync and drift. Enter where the first line should start and where the last line should start. The tool solves for the shift and the stretch that put those two lines exactly where you said, and every line in between follows proportionally. Use lines that are actually spoken, not a title card.
What happens if shifting would make a time negative?
Nothing negative is ever written. A line that would start before 00:00:00 but ends after it is moved to start at zero, and a line that would fall entirely before zero is removed. The page tells you how many of each, so a large shift backwards is never silent about what it dropped.
Is my file uploaded?
No. The shift is calculated in this browser tab and the text never leaves it.
Related tools
Do not have the subtitles yet?
Scriptorium listens to the audio or video and writes the transcript for you, with timestamps, then exports it as an SRT or a VTT file. Try it free.