Skip to content
AZ Tools

Subtitle Time Shifter

Paste an SRT or WebVTT file, type an offset in seconds, and get every cue shifted forward or backward.

Shifted (cues shifted: 3)
1
00:00:01,200 --> 00:00:04,000
Hello, world.

2
00:00:05,500 --> 00:00:08,800
Subtitle Time Shifter
demo input.

3
00:00:09,000 --> 00:00:11,500
Adjust the offset above.

Cue text, blank lines, NOTE / STYLE blocks, and cue numbering pass through untouched.

How to use

  1. Paste the contents of your subtitle file in the input box.
  2. Enter the offset in seconds — decimals welcome (0.5, -1.25).
  3. Copy the output back into your subtitle file. The cue count is shown so you can sanity-check.

About this tool

Show

Fixes subtitles that lag or run ahead of the audio. Paste your .srt or .vtt content, set a positive offset (push cues later) or negative offset (pull cues earlier — use a decimal like -1.5), and the entire file is re-emitted with timestamps updated. Format is auto-detected by looking for the WEBVTT header; the comma vs. dot in the timestamps switches accordingly.

A constant offset only fixes a constant error, and that is the first thing to check. If the subtitles start in sync and drift further out as the film goes on, the cause is a frame-rate mismatch rather than a delay: a file timed for 23.976 fps played at 25 runs about four percent fast, which is nothing at the start and about five minutes by the end of a two-hour feature. That needs a rate conversion, and shifting it by any single number will only ever be right in one place.

The way to measure the offset is to find a line of dialogue you can hear clearly, note when it is spoken and when the cue appears, and subtract. Doing that near the start and again near the end tells you which of the two problems you have: the same figure twice means a delay, two different figures mean drift.

Negative offsets run into the floor. A cue that would move before zero cannot, and subtitles that begin in the first seconds of a file have nowhere to go, so a large backward shift will clamp or drop the opening lines. Check the first cue after shifting rather than assuming.

The two formats differ in more than the decimal separator. WebVTT allows styling and positioning directives, region blocks and a header, none of which SRT understands, so a file converted between them by a tool that only rewrites timestamps can carry markup a player will show as literal text. This tool changes the times and leaves everything else as it found it, which is what you want when the only problem is synchronisation.

Frequently asked questions

How do I figure out the right offset?

Play the video and note where line 1 of the subtitles should start. Subtract its current start time from that target. If the subtitle says 00:00:02.000 but should appear at 00:00:03.500, the offset is +1.5.

What happens to cues that would land before 00:00:00?

With Clamp at zero on (default), those cues are pinned at 00:00:00 so the file stays valid. Turn it off if you'd rather see an explicit error — useful when you want to know your offset is too aggressive.

Does it touch the cue text?

No. Only lines that match the start --> end timestamp pattern are rewritten. Subtitle text, blank lines, the WEBVTT header, NOTE blocks, STYLE blocks, and cue numbering pass through unchanged.

What about VTT cue settings like align:start?

Preserved. Anything after the second timestamp on the cue-timing line is kept verbatim.

Related tools