wordtospeechEngine ready

SRT or VTT: which subtitle file do you actually need?

The two formats carry the same timings and differ in about four ways. Which one you want depends entirely on where the file is going next.

Every tool that exports subtitles offers both SRT and VTT, and almost none of them tell you which to pick. The honest answer is that they carry the same information, and the choice comes down to what opens the file next.

What actually differs

The decimal separator is the one that bites people: SRT writes 00:00:01,240, VTT writes 00:00:01.240 — a period, not a comma. It’s the single most common reason a file gets rejected. Rename a .srt to .vtt without touching the contents and every timestamp in it is now invalid.

Beyond that, a WebVTT file has to begin with the line WEBVTT, where an SRT file starts straight in on cue number 1, and SRT numbers each of its blocks with a sequence number that VTT makes optional and usually leaves out. VTT can also do more — cue positioning, alignment, region definitions, styling blocks, cue identifiers you can target from CSS — none of which SRT has, and in practice most subtitle files use none of it either.

Here is the same cue in both:

1
00:00:00,100 --> 00:00:03,712
If you can hear this sentence, the protocol works.
WEBVTT

00:00:00.100 --> 00:00:03.712
If you can hear this sentence, the protocol works.

So which one

For the web, VTT — it’s the only format the HTML <track> element accepts, so if the audio or video is going to play in a browser, that settles it. For everything else, SRT: video editors, YouTube’s subtitle uploader, social platforms, transcription workflows, burn-in tools all lean on the format with thirty years of support behind it, and when a tool only takes one, it’s SRT.

If you’re not sure, take both. They’re a few kilobytes each, and exporting both now is cheaper than re-synthesising later — speech synthesis isn’t deterministic, so a second render produces slightly different audio and your old subtitles will drift against it.

A note on cue length

Neither format tells you how long a cue should be, which is where most automatically generated subtitles go wrong. Timings that are technically perfect are still unreadable if a cue holds thirty words.

The rule of thumb worth following: break at roughly 42 characters, and never let a single cue run longer than about five seconds. That is what this tool does — cues are split at whichever limit comes first, so the file you download is readable rather than merely accurate.

Subtitle timing rules: cue length, reading speed and line breaks

← All notes