YouTube Thumbnail Downloader
Grab any public YouTube video thumbnail in all official sizes — instantly, no login.
Open toolHome › Tools › Video Tools › Subtitle Timing Shifter
Shift every cue in a subtitle file earlier or later by a precise number of seconds — perfect for fixing sync drift after re-encoding or trimming.
Subtitle sync breaks in one of two ways. The first is a constant offset: every cue fires at the same fixed distance from where it should — 2 seconds late, 0.4 seconds early, uniformly across the entire file. This happens when a video is re-encoded with an encoder that handles the start timestamp differently, when a pre-roll intro is trimmed from the front of the video but the SRT was built against the original, or when a subtitle file produced for one version of a video is applied to a slightly different cut. The second is frame-rate drift: a gradually increasing error where early cues are slightly off and late cues are significantly off, caused by a frame-rate mismatch between the video the SRT was built against and the one it is being used with. The AT USE Subtitle Timing Shifter fixes the first kind: constant offsets. It does not fix drift.
The tool takes a shift value in seconds — positive shifts every cue later, negative shifts every cue earlier — and rewrites every timestamp in the file. Enter -2 to fix subtitles that fire 2 seconds late. Enter 3 to fix a file produced before a 3-second intro was added. The shift accepts three decimal places: -0.317 and 2.500 are both valid. This matters for sub-second sync problems, which are common when auto-captioning services produce an SRT that is a few frames ahead of the actual audio. All formats that carry timestamp data — SRT, WebVTT, ASS/SSA, SBV — are supported. Processing runs entirely in your browser; your subtitle files never leave your device.
The "Start from" field shifts only the cues that appear after a specified time in the video. Use this when a video edit inserted a new segment mid-file: cues before the insertion point are correct, and only the cues after it need to shift forward. Set the offset to match the inserted segment duration and set "Start from" to the time just after the insertion point. Cues before that timestamp are written back unchanged; only cues at or after the threshold are shifted.
Only the start and end timestamp of each cue is modified. The cue text, sequence numbers (SRT), actor labels (ASS), styling tags, and all format-specific metadata are written back exactly as they were. The relative duration of each cue is preserved — a cue that spans 1.8 seconds still spans 1.8 seconds in the output. The only change is the absolute position of each cue in the video timeline.
Because the tool stores timestamps at millisecond precision without rounding (SRT timestamps resolve to milliseconds; WebVTT timestamps resolve to milliseconds), a shift-and-reverse operation is lossless. Shift a file by -2.5, then shift the output by 2.5, and the resulting timestamps are identical to the original. This makes it safe to experiment with shift values until the sync is correct without accumulating rounding error from repeated adjustments.
If the first subtitle is 1 second late but the last subtitle is 4 seconds late, the problem is frame-rate drift, not a constant offset. A single shift value will not fix this — applying -2.5 makes the middle correct but the start and end wrong. Frame-rate drift requires a subtitle editor that can apply a proportional time stretch (multiplying every timestamp by a correction factor). Aegisub is the standard desktop tool for this; the approach is to calculate the ratio of the source and target frame rates and apply it as a "linear time stretch" operation.
A constant offset shifts every cue by the same amount — "the subtitles are always 2 seconds late from the beginning to the end." Frame-rate drift is a gradually increasing error: the first subtitle is slightly off, and the last subtitle is significantly off, because the video's frame rate is different from the frame rate the SRT was built against (typically 23.976 fps vs. 25 fps or 29.97 fps). This tool fixes constant offsets exactly. For frame-rate drift, you need a subtitle editor with a linear time-stretch function (Aegisub has this under Timing → Linear time stretch). If you are unsure which you have, check whether the first cue and the last cue are off by the same amount — if they are, it is a constant offset.
Nothing changes except the start and end timestamps of each cue. Cue text, sequence numbers, ASS actor labels, override tags like {\b1}, positioning instructions, and all other format-specific fields are written back to the output unchanged. The relative duration of each cue (the gap between its start and end time) is also preserved exactly.
No. The shift field accepts up to three decimal places, which corresponds to millisecond precision. Subtitle formats store timestamps at millisecond precision (SRT) or better (WebVTT stores to the millisecond; ASS to the centisecond). A shift smaller than 1 ms has no effect because the file format cannot represent it. In practice, shifts under 50 ms are rarely perceptible without frame-stepping through the video.
Drop the shifted file back into the tool and enter the inverse value. If you shifted by -2.5, entering 2.5 restores the original timestamps. Because the tool stores millisecond-precision timestamps without rounding, the round-trip is lossless — the resulting timestamps are identical to the original file.
This is frame-rate drift, not a constant offset. The subtitle file was built at a different frame rate than the video it is now being applied to (for example, the SRT was produced for 23.976 fps but the video was re-encoded at 25 fps). Over a 1-hour video, this causes roughly a 4-second drift by the end. A constant offset cannot fix this — you need a subtitle editor that supports proportional time-stretch. Aegisub (free, open source) handles this with a two-point resync against known correct cue times.
Yes. The shift applies uniformly to all cues in the file, regardless of which speaker or actor label a cue belongs to. If you are using ASS format with named actors and the file has multiple tracks embedded, all tracks shift by the same amount. If individual tracks need different shifts (for example, one speaker's audio sync differs from another's), that is a different problem not solvable with a global shift — it would require splitting the file by actor and shifting each track separately before recombining.
Keep going
Other tools in the Video category on AT USE.
Grab any public YouTube video thumbnail in all official sizes — instantly, no login.
Open toolBuild privacy-friendly, responsive YouTube embed code with start/end times and player options.
Open toolSolve width, height, or aspect ratio for any video — with presets for 16:9, 9:16 Shorts, square, and ultrawide.
Open toolBuild deep links to specific moments in a YouTube video. Bulk convert chapter lists in one paste.
Open toolFormat your timestamp list into a YouTube-compliant chapter description block.
Open toolGenerate Vimeo embed code with DNT mode, custom color, autoplay, loop, and a responsive wrapper.
Open tool