Subtitle Shifter

Paste an SRT or WebVTT subtitle file, enter a millisecond offset (positive to push subtitles later, negative to pull them earlier), and copy or download the resynced file. The format is auto-detected and preserved. Everything runs in your browser — nothing is uploaded.

ms
Quick offsets
Input cues
Output cues
Dropped
Errors
How this works
  • Drop any SubRip (.srt) or WebVTT (.vtt) file in the box above. The format is auto-detected from the header (WEBVTT) or the first numeric cue index.
  • Enter an offset in milliseconds. Positive values push every subtitle later in time (use it when the audio arrives before the subtitles); negative values pull them earlier (use it when the audio arrives after).
  • From cue lets you shift only the second half of the file. The first N−1 cues are kept verbatim; cue N and onward get the offset. Common case: "the first 30 seconds are in sync, then everything drifts."
  • The Drop cues checkbox controls what happens to cues that would start before 0 ms. Default is "clip to 0" (keep the cue, just trim the start). Toggle it on to drop those cues entirely.
  • The format is preserved on output by default. Tick Output as WebVTT to convert SRT → VTT in the same pass (useful if your player only accepts one of them).
  • Per-cue deltas appear in the summary cards: input cue count, output cue count, how many were dropped, and any parse errors that came from the input file.
  • Hit Copy to put the resynced text on the clipboard, or Download to save it as shifted.srt or shifted.vtt (the extension follows the output format).
  • Everything runs locally. No server, no upload, no analytics. Once the page is loaded, it works offline.