Subtitle timing tool

Subtitle Timing Shifter (Sync Fixer)

To fix out-of-sync subtitles, shift every cue by the seconds you enter — type -2.5 to move them 2.5 seconds earlier, or a positive value to delay them. Both .srt and .vtt are supported, the timecodes stay in SRT or VTT format, and the whole thing runs in your browser.

Last updated: 2026-06-11

subtitle-shifter

Drop your subtitle file here, or click to browse

Supports .srt and .vtt

No file handy?

Positive delays the subtitles (they appear later); negative pulls them earlier. Times that would go below zero are clamped to 00:00:00.000.

Runs in your browserSRT & VTTTimecode format keptNo upload to a server

How to shift subtitle timing

01

Upload

Drop in your .srt or .vtt file. The tool detects the format and counts every cue.

02

Set the offset

Type the shift in seconds — positive to delay, negative to advance. Decimals like -2.5 are fine.

03

Apply

Every cue moves by the same amount. The preview shows old and new timecodes side by side.

04

Download

Save the corrected file as name.shifted.srt or name.shifted.vtt in the original format.

When to use which offset

A shift is the right fix when the subtitles are off by the same amount everywhere. Match your symptom to the value you type:

SymptomEnterEffect
Subtitles appear about a second before the speech-1Pulls the whole track 1 second earlier
Subtitles lag half a second behind the dialogue0.5Delays every cue by 500 ms
A 3-second intro logo was added to the video3Pushes all cues 3 seconds later
Subtitles trail the audio by 2.5 seconds2.5Delays every cue by 2500 ms
First lines start at the very top of the file too late-0.25Advances cues 250 ms; cues near 0 clamp to zero

Shift vs. frame-rate rescale

A shift moves every cue by a constant amount and keeps the spacing between cues identical. Use it when the subtitles are off by the same gap from the first line to the last. If the subtitles are in sync at the start but drift further apart as the video plays, the file was authored for a different frame rate — a constant shift cannot fix that. In that case rescale the timings with the subtitle FPS converter.

Key facts

  • The offset you enter in seconds is multiplied by 1000 and applied as a millisecond shift to every cue.
  • Both .srt and .vtt are supported, and the output keeps the format you uploaded.
  • Negative results below 00:00:00.000 are clamped to zero so timecodes stay valid.
  • Nothing is uploaded — the shift runs in your browser and works offline once the page has loaded.
  • Use a shift for a constant offset; use a frame-rate rescale for drift that grows over time.

Definitions

Offset
The fixed amount of time, in seconds, added to every cue. A single offset corrects subtitles that start a constant interval too early or too late.
Shift
Moving all cues by the same offset without changing their durations or spacing. The whole track slides forward or backward in time.
Lead / lag
Lead means subtitles appear before the matching audio (fix with a negative shift); lag means they appear after it (fix with a positive shift).
Clamp to zero
When a negative shift would produce a time before 00:00:00.000, the value is held at zero so timecodes stay valid.
Millisecond
One thousandth of a second and the smallest unit SRT and VTT timecodes store. Entering 1.25 seconds becomes a 1250 ms shift.
Cue
One subtitle entry: a start time, an end time, and the text shown between them. A film typically has 1,000–2,000 cues.

Subtitle shifter questions

How do I shift subtitle timing by a few seconds?+

Upload your .srt or .vtt file, type the offset in seconds (for example -2.5 to pull subtitles 2.5 seconds earlier), and apply. Every cue's start and end time moves by the same amount, the timecode format stays SRT or VTT, and you download the corrected file.

What is the difference between a positive and a negative shift?+

A positive value delays the subtitles so they appear later on screen; a negative value pulls them earlier. If subtitles show up before the dialogue, use a negative shift. If they lag behind the speech, use a positive shift.

Can I use decimals like 1.250 seconds?+

Yes. The input accepts decimals and negatives, so 1.25 or -0.75 work. The value is converted to milliseconds (seconds × 1000) before it is applied, so you get millisecond-level precision.

Does shifting change the SRT or VTT format?+

No. The output keeps the same format you uploaded. An .srt file stays SubRip with comma-millisecond timecodes; a .vtt file keeps its WEBVTT header and dot-millisecond timecodes. Only the numbers in the timecodes move.

What happens if a negative shift pushes a cue below zero?+

Any start or end time that would go below 00:00:00.000 is clamped to zero, so timecodes never go negative. Cues near the very start of the file may bunch up at zero if your negative offset is large.

Is the shift applied in my browser or uploaded to a server?+

Everything runs locally in your browser with JavaScript. The file is never uploaded, there is no account, and there is no per-character cost — the shift is instant even for files with thousands of cues.

My subtitles drift more as the video goes on — will shifting fix that?+

No. A constant shift fixes a fixed offset. If the gap grows over time, the file is at the wrong frame rate. Use the FPS converter to rescale the timings instead.