Subtitle Time Shifter
Shift SRT or WebVTT subtitles earlier or later, or stretch them for a different frame rate.
Runs in your browser Your input never leaves your device.
Report a problem with this tool
About this tool
When subtitles appear too early or too late, you do not need to edit every line. Paste the SRT or WebVTT file, enter how much to shift (in seconds or milliseconds; a negative number moves the text earlier) and copy the corrected file. Only the times on the cue lines change; numbering, text, styling settings such as align:start and blank lines stay exactly as they were, and the comma or point before the milliseconds is kept as in your file. Times never go below zero, so shifting early can clip the first cues to 00:00:00 (start and end are clamped separately). WebVTT times without hours (01:02.500) and hours with three digits are understood, and times with more than three decimals are rounded to milliseconds. The speed factor stretches every time, for the case where the subtitles drift further out of sync as the film goes on, which usually means they were made for a different frame rate: for example 1.04271 converts 23.976 to 25 fps timing. Factors from 0.5 to 2 are accepted. The shifts were compared with ffmpeg's own subtitle offset (-itsoffset) on cues up to nearly two hours into a film, with identical times. Everything runs in your browser; nothing is uploaded.
How to use it
- Paste your SRT or WebVTT text.
- Enter the shift and its unit, and a speed factor if the drift grows over time.
- Check the first and last cues in a player.
- Copy the result into a file with the same extension.
Common problems
- The first cue is cut off
- Shifting earlier cannot go below zero. If the first line appears too early, shift later instead, or check the file for an error.
- The subtitles drift more and more
- That is a frame-rate mismatch. Use the speed factor: the video's frame rate divided by the subtitle's, for example 25 / 23.976 = 1.0427.
- It says no subtitle times found
- The cue lines must look like 00:00:01,000 --> 00:00:03,500. Paste the file contents, not a file name.