A fast, private subtitle converter that turns SRT, WebVTT and YouTube SBV files into one another while letting you correct the timing in the same pass. It is built for anyone who has downloaded captions that play a second too early, exported the wrong format for their video player, or needs to re-sync a transcript after re-encoding a film at a different framerate. Paste the text or load a file, choose your target format, nudge the timing, and copy or download the result — all without installing software or uploading a single line to a server.
How it works
The converter first auto-detects the input format by looking for the WebVTT header, the
--> timing arrow used by SRT and VTT, or the comma-separated timestamps used by SBV. It
then parses every cue into a structured list of start time, end time and text, measured in
milliseconds for precision. Each timestamp is read flexibly, so it copes with both comma and
dot decimal separators and with or without an hours field.
Once parsed, your chosen transforms are applied in order. The time shift adds or subtracts a fixed offset from every cue. The framerate scale multiplies each timestamp by a ratio — for example 23.976 ÷ 25 when a 25 fps subtitle needs to match a 23.976 fps video — so the drift is corrected across the whole runtime, not just at the start. Optional clean-up can strip formatting tags and fix overlapping cues by trimming any caption that runs into the next. Finally the cues are re-serialised into the target format with the correct header, punctuation and numbering. A live preview table shows the first 200 cues with their adjusted timings, and a stats bar reports the cue count, character total, total span and any remaining overlaps.
Example
Suppose you have an .srt file that runs exactly 1.4 seconds ahead of the dialogue and you
need a .vtt for an HTML5 <video> element. Load the file, set the output to WebVTT,
type -1.4 into the time-shift box, and the preview instantly shows every caption pulled back
into sync. A cue that was timed at 00:00:05,000 --> 00:00:08,000 in SubRip becomes
00:00:03.600 --> 00:00:06.600 in WebVTT, complete with the WEBVTT header. Hit Download
.vtt and the corrected file is saved locally, ready to drop into your player.
| Task | Input | Output | Setting |
|---|---|---|---|
| Re-sync ahead-of-time captions | SRT | SRT | shift -1.4s |
| Web player needs VTT | SRT | VTT | format only |
| Upload transcript to YouTube | VTT | SBV | format only |
| Match a 23.976 fps re-encode | SRT (25 fps) | SRT | scale 23.976→25 |
Every figure is calculated in your browser — no subtitle text is ever uploaded or stored.