Fonti Studio

HomeTools › SRT to VTT

SRT to VTT converter (and VTT to SRT)

Convert SubRip (SRT) to WebVTT or WebVTT back to SRT with timing preserved to the millisecond and text untouched. Free, in your browser, no upload.

Runs in your browser · your file never leaves your machine

Convert format

Timing is preserved to the millisecond and text passes through untouched. Both formats store real clock time, so no frame rate is involved.

Frame-rate repair

For subtitles that drift steadily: in sync at the start, seconds off by the end. Timestamps are rescaled by the exact ratio between the two rates.

Constant shift

For subtitles that are early or late by the same amount all the way through. Positive moves cues later, negative moves them earlier.

Applied after the frame-rate repair when both are set.

How findings are graded
BlockingBreaks the spec with no legitimate exception. A platform QC bounces the file.
ReviewExceeds a limit for a reason a person has to judge: a two-speaker cue, a card over dialogue, or dialogue the original cuts just as fast.
RepairableFixed mechanically when the file is written, not by an editor.

Checked against the public Netflix Timed Text limits: 42 characters per line, 2 lines, reading speed, 5/6 s to 7 s durations, 2-frame gaps, overlaps. Formatting tags are excluded from the counts, and cues of 12 characters or fewer are exempt from reading speed because they are read at a glance.

SRT to VTT, and back

SRT (SubRip) is the interchange format most deliveries start from; WebVTT is what browsers, HTML5 players and most web video platforms ingest. The two are close cousins: both store real clock time (hours, minutes, seconds, milliseconds), so no frame rate is involved and a conversion loses nothing in timing. The converter parses either, writes the other, and preserves every timestamp to the millisecond and every line of text as it was.

What changes, and what is dropped

Going SRT to VTT, the tool adds the WEBVTT header and swaps the comma decimal separator for a dot; cue numbers are kept as optional identifiers. Going VTT to SRT, WebVTT cue settings (position, line, align, regions) have no SRT equivalent and are dropped, which the tool tells you at the moment it happens rather than silently. Formatting tags common to both (italics, bold) pass through. For the formats that do involve frames or XML profiles (EBU STL, SCC, TTML/IMSC, Screen PAC) a text conversion is not enough; this guide explains which buyer wants which and why the frame-based ones break.

Before you deliver the result

A clean conversion preserves whatever was wrong in the source, so if the file is headed for a platform QC, run it through the validator afterwards. And if it was in sync as SRT and is not as VTT, the conversion is not the cause: look for a constant offset or frame-rate drift introduced by a different player or a different cut.

Need it fixed, not just flagged?

We deliver broadcast-grade subtitles that pass these checks and the ones no tool can run: glossary lock, semantic alignment, and a native-speaker read. €400 per language for a feature, flat, with a free preview first.

Send a brief

Prefer email? hello@fonti.studio