SUBTITLE TOOL

Shift WebVTT subtitle timings in seconds

Fix subtitles that are early/late by nudging every cue forward or backward. Upload a .vtt file, enter a shift value like +3600 or -5, and download the corrected file instantly.

Subtitle Timecode Shifter

Works with common WebVTT timing lines like 00:00:10.000 --> 00:00::12.000 (including cue settings). Negative times are clipped to 00:00:00.000.

Tip: If your file uses MM:SS.mmm timestamps, that’s fine too — it’ll be converted to HH:MM:SS.mmm.
Examples: +3600 (add 1 hour), -0.5 (subtract 500ms), +120 seconds.

How this tool works

WebVTT subtitles are made of “cue” blocks, each with a start and end time. This tool adds (or subtracts) your shift value from every cue timing line.

  • Shift forward if subtitles appear too early (example: +2.5).
  • Shift backward if subtitles appear too late (example: -1).
  • Safe clipping: cues that would become negative are clipped to 00:00:00.000.

Your file is processed and returned immediately. Nothing is intentionally stored long-term on the server.

Tip: If your subtitles are off by a constant amount (like exactly 1 hour due to timecode mismatch), this is the fastest fix.

Practical guide

How to figure out the right shift

  • Pick a clear moment (first spoken line, door slam, a name callout).
  • Pause and compare: note the video timestamp vs when the subtitle appears.
  • Compute the offset: if the subtitle appears 2.3s early, use +2.3. If it appears 1.0s late, use -1.

Common real-world fixes

  • +3600 seconds – frequent when a file was authored with a 1-hour timecode base.
  • ±0.2 to ±1.5 seconds – typical “small drift” between different encodes/releases.
  • Negative shift – useful when subtitles lag behind speech.
Important: This tool fixes a constant offset. If subtitles start synced but drift more and more over time, you likely need a time-stretch / re-time fix (not a simple shift).

Sample WebVTT (copy + try)

WEBVTT

00:00:01.000 --> 00:00:03.000
Hello — this is a sample cue.

00:00:04.500 --> 00:00:07.000
Try shifting me by +2.0 seconds.

00:00:08.000 --> 00:00:10.500
Or shift backward by -1.0 seconds.

Tip: If you want to test quickly, save the sample as sample.vtt, then upload it here.

Troubleshooting & FAQ

My subtitles are still off after shifting. Why?
This tool fixes a constant offset. If the subtitles gradually drift (synced at the start but off later), the timing needs re-scaling (time-stretch), not a simple shift.
My file uses MM:SS.mmm instead of HH:MM:SS.mmm — is that okay?
Yes. This tool supports both formats and normalizes timings to the standard HH:MM:SS.mmm style.
I used a negative shift and some cues disappeared. Did the tool break?
Negative shifts can push cues below zero. Those start times are clipped to 00:00:00.000. If many cues were near the beginning, several may get clipped heavily. Try a smaller negative shift.
Do you support SRT or SCC here?
This page is for WebVTT (.vtt) shifting only. If you have another subtitle format, convert it to VTT first, then apply a shift if needed.
Will cue settings (like position/align) be preserved?
Yes — cue settings after the timestamp line are preserved. The tool focuses only on shifting the timings.
Is my subtitle file stored anywhere?
The file is processed to generate your shifted output, then returned immediately. Codes of Hex is designed for temporary processing, not long-term storage. For official details, see the Privacy Policy.

Tip: If you’re fixing a known offset (e.g., “subtitles are exactly 2 seconds early”), test on a short clip first.

Quick glossary

  • Cue – one subtitle block with a start and end time.
  • Offset – the constant difference between subtitle timing and video timing (what this tool fixes).
  • Drift – subtitles gradually go out of sync over time (needs re-time, not a simple shift).
  • Timecode – the timestamp format used for syncing subtitles to media.

Support via UPI

Scan this QR to buy me a coffee ☕ ?

UPI QR