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.
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.