How it works
Reading cues
Any block with a timing line (start --> end) becomes a cue: its text is everything under that line until the next empty line. WebVTT headers, NOTE and STYLE blocks and cue settings after the end time are skipped.
SRT uses a comma before the milliseconds and numbers each cue; WebVTT uses a full stop and starts with WEBVTT. The tool writes both from the same cues.
Shift and scale
Scale multiplies every start and end time, then Shift adds a fixed number of seconds. Nothing goes below zero.
Picking the rate the subtitles were made for and the rate the video plays at sets the scale for you, which fixes the slow drift you get when a 25 fps file plays at 23.976.
new time = old time × (source fps ÷ target fps) + shift
WebVTT headers
For VTT you can add a Kind (captions, subtitles or descriptions) and a Language tag to the header, which some players read to label the track.




