SRT vs VTT: the two subtitle formats, and how to fix timing
Subtitles travel as small text files, and two formats cover almost everything: SRT, from a DVD-ripping tool in the 1990s, and WebVTT, the web standard built on it. They differ by a header and a punctuation mark, which is exactly enough to make a player reject one of them. This guide shows the structure, where each works, and the two fixes people actually need โ conversion and timing shifts โ both of which the subtitle converter does in the browser.
SRT: the 1990s format that won
1 00:00:01,000 --> 00:00:04,000 Hello, and welcome. 2 00:00:04,500 --> 00:00:07,250 Let's begin.
SubRip Text: a running number, a time range with a comma before the milliseconds, one or more lines of text, a blank line. That's all. It carries no styling beyond a few HTML-ish tags (<i>, <b>) that some players honour, no positioning, and no metadata. Its simplicity is why every player, editor, TV and subtitle site accepts it, and why it is the format subtitles are downloaded and shared in.
WebVTT: the web's version
WEBVTT 00:00:01.000 --> 00:00:04.000 Hello, and welcome. 00:00:04.500 --> 00:00:07.250 line:90% Let's begin.
WebVTT (a W3C standard since the 2010s) starts with a WEBVTT header, drops the cue numbers (optional identifiers are allowed), and uses a dot before the milliseconds. It adds what the web needed: positioning and alignment settings after the timestamp, a STYLE block with CSS, voice tags for speakers, and chapters and descriptions. It is what the HTML5 <track> element requires, what YouTube and most video platforms prefer, and what accessibility tooling targets.
Where each is used
- SRT: VLC and desktop players, Plex and media servers, subtitle download sites, most editing software, Netflix and broadcaster deliveries (alongside professional formats).
- VTT: web video (the <track> tag), YouTube, Vimeo, LinkedIn and most course platforms, JW Player and Video.js.
Conversion is mostly punctuation and the header, which is why hand-editing goes wrong on cue 300. Positioning settings in a VTT have no SRT equivalent and are dropped honestly rather than mangled; styling tags pass through as text.
Fixing subtitles that are out of sync
The commonest subtitle problem: they run two seconds early throughout, because the file was timed against a cut with a different intro. If the offset is constant, shift every timestamp by the same amount and the whole file snaps into place โ the converter's shift field does it, with times clamped so nothing goes negative. If the drift grows over the film, the frame rate differs (23.976 versus 25 fps is the classic) and the times need scaling by the ratio, not shifting; that needs an editor like Subtitle Edit or Aegisub. Player-side nudging (VLC's G and H keys) is fine for watching once; fixing the file is right for anything you'll share.
Making subtitles in the first place
Transcribe, then time. Extract the sound with video to audio, slow it with the audio speed tool to type along, and write cues with sensible lengths: about 35โ42 characters per line, two lines maximum, on screen for at least a second and rarely more than seven. Auto-captioning services get the words mostly right and the timing well; the editing is in fixing names, punctuation and line breaks. Then save as SRT for distribution and VTT for the web โ one source file, two exports.
Sources and further reading
The claims in this guide rest on these references, which were checked when the guide was last updated. Spotted an error? The contact page says how to report it.