Home › Tools › VTT to SRT Converter

VTT to SRT Converter

Turn WebVTT files back into SubRip (.srt) for editors, players and upload platforms.

Drop a subtitle file here, or

Your file never leaves your device

This tool is plain JavaScript. There is no upload step and no server-side processing, so confidential captions, unreleased content and client material stay on your machine.

What this does

Most video editors, mobile players and upload forms want SubRip (.srt). WebVTT files carry extra headers, NOTE/STYLE blocks and per-cue settings that those tools reject, so this converter extracts just the cues and rewrites them as clean SRT.

How to use it

  1. Paste your VTT content or drop the .vtt file onto the box.
  2. Headers, NOTE and STYLE blocks, and cue settings like align: are discarded automatically.
  3. Copy or download the resulting .srt file.

Good to know

  • Timestamps are rewritten with comma separators, as SubRip requires.
  • Cue settings (line:, position:, align:, size:, region:) have no SRT equivalent and are dropped.
  • Cue identifiers are replaced with a clean 1-based sequence.

What you give up converting VTT to SRT

Cue settings. align:, line:, position:, size: and region: control where text sits on screen. SubRip has no equivalent, so a caption positioned top-left to avoid covering a face will jump to the bottom centre.

Regions and STYLE blocks. WebVTT can define a reusable block of CSS-like styling and apply it to many cues at once. SRT carries only inline <i>, <b> and <u>, so shared styling collapses to whatever was applied inline.

Voice spans. <v Speaker> markup identifies who is speaking and lets a player style each speaker differently. In SRT the tag is dropped, which is why podcast captions converted to SRT often lose their speaker distinction.

If any of those matter for your project, keep the VTT as the master file and generate SRT only as a delivery copy.

Worked example

Input — .vtt
WEBVTT
Kind: captions
Language: en

NOTE chapter 2 starts here

1
00:00:01.000 --> 00:00:04.000 align:start position:10%
Hello there.
Output — .srt
1
00:00:01,000 --> 00:00:04,000
Hello there.

The header, the NOTE block and the cue settings are gone; only the cue survives, renumbered and rewritten with comma timestamps.

FAQ

What happens to NOTE and STYLE blocks?
They are discarded. SubRip has no equivalent syntax, and leaving them in produces a file that most editors refuse to open.
Will I lose any timing information?
No. Cue start and end times are preserved exactly — only the decimal separator and the surrounding syntax change.
Can I convert in the other direction too?
Yes — use the SRT to VTT converter.

Troubleshooting

  1. My editor reports the file as empty or invalidThe input had no parseable cue blocks. WebVTT needs a blank line after the header and between cues — a file where the header runs straight into the first cue is rejected.
  2. Cue positioning was lostCue settings such as align:, line:, position:, size: and region: have no SubRip equivalent, so they are dropped by design. Burn the position into the video if you need it.
  3. Dialogue disappeared from the outputText inside NOTE and STYLE blocks is not dialogue and is intentionally discarded. If your captions were stored in a NOTE block, the source file was not valid VTT.
  4. The first cue lost its original identifierVTT cue identifiers are optional and often absent. Numbers are regenerated from 1 so the SRT file opens everywhere.

Related tools

Last updated 2026-09-21. All conversions happen locally in your browser.