Subtitle Time Shifter / Resync

Shift subtitles by a fixed offset or stretch linearly between two anchor points.

Ad placeholder (leaderboard)

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.

Ad placeholder (rectangle)