Subtitle Timing Shifter
Offset fixes a constant drift; scale fixes drift that grows. Both can apply, scale first then offset.
How to Use
📖 Tool Introduction
Fix subtitles that do not line up with the picture, and convert between SRT, WebVTT and ASS, entirely in your browser. The subtitle file is never uploaded.
Misalignment usually comes in two shapes. The first is a constant offset: the whole file is early or late by a fixed amount, often because the video carries an intro the subtitle does not, or the subtitle itself was published late. A single offset in milliseconds fixes it, positive to delay and negative to advance.
The second is drift that grows: it matches at the start and falls further behind as it goes. That is nearly always a frame rate mismatch, such as subtitles authored at 23.976 fps against a 25 fps video. A scale factor fixes it, and 25 divided by 23.976 is about 1.0427. Above 1 slows the timing down, below 1 speeds it up.
Both can be used together and are applied scale first then offset, which matches how the fix is usually reasoned about: match the rate, then match the start point. Filling in only one is fine, the other stays at its default.
The summary reports how many cues were found along with the first and last timestamps, which makes it easy to confirm the result landed where intended. Between formats, SRT separates milliseconds with a comma, WebVTT with a dot and ASS with hundredths, and the tool handles those differences. Converting ASS to SRT or WebVTT drops styling, since neither format carries any.
One more thing worth knowing before you start: a subtitle file holds only text and timing, so this tool cannot fix a mismatch caused by the wrong subtitle being matched to a video. If the words themselves are wrong, no timing change will help.
✨ Key Features
- Constant offset in milliseconds, positive to delay and negative to advance
- Scale factor for drift that grows, correcting frame rate mismatch
- Conversion between SRT, WebVTT and ASS in any direction
- Scale applied before offset, matching how the fix is usually worked out
- Summary showing cue count, first and last timestamp, and the offset used
- Local processing with copy and download of the finished text
🚀 How to Use
- Drag a subtitle file into the drop area, or click to choose one
- For a constant gap, fill in the time offset in milliseconds, negative to advance
- For drift that grows, fill in the time scale, usually a frame rate ratio
- Pick an output format, then press start and the result appears in the text box below
- Press download to save it, or copy text to put it on your clipboard
⚠️ Things to Note
- Two kinds of drift: Use milliseconds for a constant offset and a scale factor for growing drift. Whether the start matches tells you which
- Order of operations: When both are set, scale runs before offset, so the rate is matched first and the start point second
- ASS conversion: Converting ASS to SRT or WebVTT drops styling and positioning, because neither format carries them. Text and timing survive intact, so the conversion is safe when only timing needs fixing
- Frame rate ratios: Common drift is fixed with a ratio: a 25 fps video with 23.976 fps subtitles needs about 1.0427. If the drift direction is reversed, the reciprocal applies instead, and trying both takes seconds
- Privacy: Subtitles are processed locally and never uploaded. Reloading the page clears everything