Skip to content

WebVTT to SubRip SRT converter

VTT to SRT reverses the timestamp syntax and removes WebVTT-only metadata because SubRip cannot represent cue settings or STYLE blocks.

  • 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

  • WEBVTT header Lost

    The header is removed because SRT starts directly with numbered cues.

  • Timestamps Changed

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

  • Cue settings Lost

    Position, align, line, size, and vertical settings are dropped because SRT has no standard equivalent.

  • STYLE and NOTE blocks Lost

    WebVTT stylesheet and comment blocks are removed before numbering SRT cues.

  • Cue text Kept

    Caption text and ordinary line breaks are kept; WebVTT voice spans may be simplified if styling is stripped.

  • Overlapping cues Kept

    Overlaps are not repaired or merged. The converted SRT keeps the same timing conflict so a subtitle editor can decide what to do.

  • Cue numbering Changed

    SRT numeric indexes are generated sequentially even when VTT cue identifiers were words or timestamps.

Sample conversions

Web player captions with alignment settings

Input
18 KB VTT, WEBVTT header, 96 cues, align:start and position:10% settings on speaker labels, one NOTE block from the caption vendor.
Output
16 KB SRT, sequential cue numbers, comma timestamps, text kept, align/position settings and NOTE block removed.

VTT with overlapping karaoke cues

Input
9 KB VTT, 52 cues, overlapping two-line lyric cues, <b> chorus labels, and a STYLE block defining yellow text.
Output
8 KB SRT, overlaps unchanged, <b> labels kept, STYLE block dropped, no attempt to split or retime karaoke overlaps.

A real WebVTT → SubRip SRT run

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

Input · sample.vtt · 131 B

2 cues, WEBVTT header present

Cues
2
Lines
7

Output · sample.srt · 123 B

2 cues

Cues
2
Lines
6

First lines of the output

srt
1
00:00:01,000 --> 00:00:03,400
Previously, on the show…

2
00:00:04,100 --> 00:00:06,900
We never found the second key.

Options and when to change them

offsetMs
Shift all cues by the same millisecond amount when a platform intro or trim changed the video start time.
stripStyling
Use when the destination rejects WebVTT voice spans, classes, or HTML-like emphasis in SRT cue text.
renumber
Leave on for standard SRT output; turn off only if a downstream QA file depends on existing numeric VTT identifiers.

Do it yourself

FFmpeg

bash
ffmpeg -i in.vtt out.srt

FFmpeg will not preserve WebVTT cue settings in SRT because there is nowhere standard to put them.

WebVTT to SubRip SRT 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=vtt&to=srt.

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

When this is the wrong conversion

  • Do not convert to SRT if your web player depends on WebVTT positioning or CSS styling.
  • Use a subtitle editor for fixing overlaps; this converter intentionally keeps overlapping cue times as-is.
  • Keep VTT for HTML5 video tracks when you need regions, NOTE metadata, or future style work.

WebVTT to SubRip SRT questions

What happens to VTT position and align settings?

They are dropped. SRT does not have a standard field for WebVTT cue settings like position, align, line, or size.

Are STYLE and NOTE blocks converted?

No. STYLE and NOTE blocks are WebVTT-only metadata and are removed from the SRT output.

Will overlapping cues be fixed?

No. Overlapping cues are kept as-is so the output reflects the source timing; repair them in a subtitle editor if needed.