Skip to content

SubRip SRT to WebVTT converter

SRT to VTT is a browser our subtitle engine conversion that adds the WEBVTT header, changes timestamp commas to dots, and can shift cue timing.

  • Converted with Subtitle engine · nothing stored
  • Free: 5 conversions a day · 5 MB each
  • Higher limits →

From real runs

What you get — and what changes

  • Header Changed

    A WEBVTT header is added at the top because WebVTT players require it.

  • Timestamps Changed

    SRT commas become WebVTT dots, for example 00:01:02,500 becomes 00:01:02.500.

  • Cue text Kept

    Plain caption text and line breaks are kept unless styling is stripped by option.

  • Numeric cue IDs Kept

    Sequential numeric SRT identifiers are retained as WebVTT cue identifiers so QA references still line up.

  • Bold and italic tags Kept

    Simple <b> and <i> tags remain valid WebVTT cue text unless stripStyling is enabled.

  • Positioning tags Lost

    SRT positioning and nonstandard override tags are stripped by default because WebVTT uses cue settings instead.

  • Encoding Changed

    Output is normalized to UTF-8 so browsers and HTML video elements can load it consistently.

Sample conversions

Training video captions

Input
22 KB SRT, 164 cues, comma millisecond separators, numeric cue IDs, two italicized speaker-emphasis tags, UTF-8 text.
Output
23 KB VTT with WEBVTT header, dot timestamps, cue IDs kept, <i> tags kept, loaded in an HTML5 video track without server processing.

Broadcast SRT with screen-placement hints

Input
41 KB SRT, 382 cues, occasional {\an8} top-screen placement tags, bold labels, and one cue 700 ms late after an intro bumper.
Output
40 KB VTT after offsetMs -700, WEBVTT header added, bold labels kept, {\an8} positioning tags stripped by default.

A real SubRip SRT → WebVTT run

We converted our SubRip SRT sample (176 B) with Subtitle engine on 2026-09-11. It took 1 ms and produced a 178 B WebVTT file, about the same size as the input. The engine raised no warnings.

Input · sample.srt · 176 B

3 cues

Cues
3
Lines
9

Output · sample.vtt · 178 B

3 cues, WEBVTT header present

Cues
3
Lines
7

First lines of the output

vtt
WEBVTT

00:00:01.000 --> 00:00:03.400
Previously, on the show…

00:00:04.100 --> 00:00:06.900
We never found the second key.

00:00:07.200 --> 00:00:09.000
Then we look again.

Options and when to change them

offsetMs
Use a positive or negative millisecond shift when every subtitle is early or late by the same amount.
stripStyling
Turn on for platforms that reject HTML-like subtitle tags; leave off to keep simple bold and italic emphasis.
keepCueIds
Keep numeric IDs when editors or QA notes refer to the original SRT cue numbers.

Do it yourself

FFmpeg

bash
ffmpeg -i in.srt out.vtt

FFmpeg handles common SRT files well, but check styling and cue identifiers when your publishing system is strict.

SubRip SRT to WebVTT by API or MCP

The HTTP API and the MCP server run the exact engine this page uses (Subtitle engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=srt&to=vtt.

curl
curl -X POST https://filetypeconverters.com/api/v1/convert \
  -H "Authorization: Bearer $FTC_API_KEY" \
  -F "file=@input.srt" -F "from=srt" -F "to=vtt" \
  --output output.vtt
API reference

When this is the wrong conversion

  • Do not use this to translate captions; it changes file syntax, not language.
  • Use a subtitle editor when only some cues need retiming; offsetMs shifts every cue equally.
  • Keep SRT when your destination is a legacy broadcast or editing system that does not accept WebVTT.

SubRip SRT to WebVTT questions

What changes in SRT timestamps?

The millisecond separator changes from comma to dot. The time values stay the same unless you set offsetMs.

Are numeric SRT cue IDs kept?

Yes. Numeric IDs are written as WebVTT cue identifiers so reviewers can map the converted file back to the SRT.

Do bold and italic captions survive?

Simple <b> and <i> tags are kept by default. Enable stripStyling if your target platform wants plain text only.