Document tools

Shift subtitle timing

Shift every cue in an SRT/VTT/ASS/SSA/SBV file by a fixed offset, to resync against a re-encoded video. Negative offsets shift earlier; a result below 0ms is clamped to 0 rather than going negative. A negative offset large enough to clamp both a cue's start and end collapses it to a zero-duration cue at 0ms rather than warning you its duration was destroyed. Runs on your device.

Runs on your device. The file is never uploaded.

Shift subtitle timing adds offsetMs, a whole number of milliseconds, to the start and end of every cue, then writes the same format under the same file name. There is no default, since 0 would do nothing at all. Every cue moves by that same amount, so drift from a different frame rate is not corrected.

Input

Options

Questions

How do I move subtitles earlier?

Give a negative offset. The setting is a whole number of milliseconds, so -2500 pulls every cue 2.5 seconds earlier and 2500 pushes it 2.5 seconds later. There is no default, because an offset of 0 would silently do nothing. A value that is not a whole number is refused with "offsetMs must be a whole number of milliseconds".

What happens to cues near the start when I shift earlier?

They are clamped at zero rather than going negative. A cue whose start and end are both pulled below zero collapses into a zero-length cue at 0ms, and nothing warns you that its duration is gone. If your offset is large, check the first few cues in the result.

Does the offset stretch the timing, or move it?

It only moves it. Every cue gets the same offset, so drift caused by a different frame rate is not fixed by this tool. Use it when the whole track is consistently early or late, which is the usual result of a re-encode with a different start point.

Which formats work, and what is the file called?

SRT, VTT, ASS, SSA and SBV, decided by the extension, and the output keeps the same format and the same file name as the input. That makes it easy to drop straight back next to your video, but it also means you should keep a copy if you might want the original timings.

Is the text touched at all?

No. Only the start and end times change; cue text, including formatting tags, is carried through unchanged. If you also want the tags gone, run Strip subtitle formatting, which likewise keeps timings exact. Cue order is untouched too, since every cue moves by the same amount, so a file that was in order stays in order.

Related Document tools

1→1SRT to VTTConvert SRT to VTT subtitles. Cue timings are re-parsed and re-formatted exactly, not merely re-punctuated. ASS/SSA override tags ({\i1}, {\an8}, ...) are carried through as literal text, not re-rendered or stripped. Use Strip subtitle formatting for that. VTT cue settings (align, position, line, size, ...) are dropped, not preserved. This converter carries dialogue and timing, not layout.Takes one file1→1VTT to SRTConvert VTT to SRT subtitles. Cue timings are re-parsed and re-formatted exactly, not merely re-punctuated. ASS/SSA override tags ({\i1}, {\an8}, ...) are carried through as literal text, not re-rendered or stripped. Use Strip subtitle formatting for that. VTT cue settings (align, position, line, size, ...) are dropped, not preserved. This converter carries dialogue and timing, not layout.Takes one file1→1SRT to ASS/SSAConvert SRT to ASS subtitles. Cue timings are re-parsed and re-formatted exactly, not merely re-punctuated. ASS/SSA override tags ({\i1}, {\an8}, ...) are carried through as literal text, not re-rendered or stripped. Use Strip subtitle formatting for that. VTT cue settings (align, position, line, size, ...) are dropped, not preserved. This converter carries dialogue and timing, not layout.Takes one file1→1ASS/SSA to SRTConvert ASS to SRT subtitles. Cue timings are re-parsed and re-formatted exactly, not merely re-punctuated. ASS/SSA override tags ({\i1}, {\an8}, ...) are carried through as literal text, not re-rendered or stripped. Use Strip subtitle formatting for that. VTT cue settings (align, position, line, size, ...) are dropped, not preserved. This converter carries dialogue and timing, not layout.Takes one file1→1SRT to SBV (YouTube)Convert SRT to SBV subtitles. Cue timings are re-parsed and re-formatted exactly, not merely re-punctuated. ASS/SSA override tags ({\i1}, {\an8}, ...) are carried through as literal text, not re-rendered or stripped. Use Strip subtitle formatting for that. VTT cue settings (align, position, line, size, ...) are dropped, not preserved. This converter carries dialogue and timing, not layout.Takes one file1→1SBV (YouTube) to SRTConvert SBV to SRT subtitles. Cue timings are re-parsed and re-formatted exactly, not merely re-punctuated. ASS/SSA override tags ({\i1}, {\an8}, ...) are carried through as literal text, not re-rendered or stripped. Use Strip subtitle formatting for that. VTT cue settings (align, position, line, size, ...) are dropped, not preserved. This converter carries dialogue and timing, not layout.Takes one file