The subtitle time shifter fixes captions that are out of sync with the audio. It works two ways: a constant offset for a uniform delay, and a two-point linear sync for subtitles that start about right but drift further apart as the video plays. It reads SRT, VTT and ASS files, rewrites every timestamp, and gives you a corrected file in the same format.
How it works
Every subtitle timestamp is converted to milliseconds, transformed with an affine map
t' = a·t + b, then written back in the original format. In offset mode the scale a is 1
and the intercept b is simply your chosen delay — so a value of -0.5s subtracts 500 ms from
every cue. In linear mode you supply two anchor points: for each you say what the current
time is and what it should become. The tool solves for the line through those two points, where
the slope is (d2 − d1) / (s2 − s1) and the intercept is d1 − slope·s1. That single line
corrects both the starting offset and any gradual drift.
Because the transform is applied to the timestamps only — matched by a format-aware regular expression — the cue text, numbering and structure of the file are left untouched.
Example and tips
Suppose your subtitles are spot-on at the start but a full second late by the one-hour mark.
Set anchor 1 to current 0s should-be 0s, and anchor 2 to current 3600s should-be 3599s.
The tool computes a scale slightly below 1 and stretches the whole timeline so the captions
stay aligned end to end — something a single offset can never do.
Tip: if you only know one error point, use offset mode. If captions are perfectly synced for the first few minutes and then slip, the slip is almost always a frame-rate problem — linear sync fixes it, and the dedicated FPS converter can do the same from frame rates rather than seconds. All processing happens locally in your browser.