VTT to SRT — Convert WebVTT Subtitles to SRT Format in Your Browser
Convert WebVTT subtitle files to SRT. Preserves cue timing, strips WebVTT metadata headers, and normalises line endings. Runs entirely client-side.
VTT to SRT
Convert WebVTT subtitle files to SRT format. Works entirely in your browser — no uploads, no limits.
WebVTT and SRT are the two dominant subtitle formats on the web, and they represent two different philosophies. WebVTT was designed for the browser age — it supports CSS styling, timestamped metadata, cue regions for positioning captions on screen, and a header block that can carry arbitrary metadata. SRT is the older, simpler format born from the desktop video era — a numbered list of timestamped text blocks with no styling, no positioning, and no metadata beyond the cue timing. The conversion from VTT to SRT is a simplification: everything WebVTT adds on top of timed text is stripped away, and only the plain-text cues and their timing survive.
The conversion is straightforward for simple subtitle files — a single line of dialogue per cue, standard timestamps, no overlapping entries. The complexity comes from the features SRT cannot represent. WebVTT allows two cues to overlap (a speaker interruption where the second speaker’s text appears while the first is still on screen), but SRT requires each cue to end before the next begins. WebVTT allows <b>bold</b> and <i>italic</i> spans to convey emphasis or speaker attribution, but SRT is plain text. WebVTT allows positioning cues in regions of the screen, but SRT has no spatial model. Each of those differences means information loss in the conversion, and the loss is inherent to the target format.
For a final hand-off: if the SRT timing drifts during playback, use the Subtitle Shift tool on this site to adjust all timestamps forward or back by a fixed offset. If the destination is a video hosting platform (YouTube, Vimeo), SRT is the most widely supported upload format. If you need the styling back, convert the SRT to ASS (Advanced SubStation Alpha) with the SRT-to-ASS tool — ASS supports fonts, colours, and precise positioning that SRT does not.
How to use
Load a VTT file
Drag a .vtt file into the drop zone or paste VTT content directly. The parser reads the WebVTT header block, strips style blocks and metadata comments, and extracts each cue block with its timing and text.
Review the converted SRT
Each cue is numbered sequentially starting from 1. Timestamps are reformatted from `00:01:23.456` to `00:01:23,456` (comma separator, per SRT spec). Multi-line cue text is preserved with line breaks.
Download the SRT file
Download the converted output as a .srt file with UTF-8 encoding and CRLF line endings. The result is compatible with VLC, YouTube, Netflix, and every major video player that supports SRT.
Frequently asked
What happens to WebVTT styling and positioning cues?
WebVTT supports inline CSS-style spans (`<b>`, `<i>`, `<c.red>`), cue regions, and text alignment. SRT has no styling markup. The converter strips all HTML-like tags and positioning metadata, leaving only the plain text. If the styling carries meaning (colour-coded speakers), that information is lost.
Are overlapping cues preserved in the SRT output?
WebVTT allows overlapping cues (two cues active at the same time). SRT does not — each cue must end before the next one begins. Overlapping cues are split into sequential entries in the SRT output, which may change the subtitle display order.
What character encoding does the output SRT use?
UTF-8 without BOM. Standard SRT is technically ANSI but UTF-8 is the de facto standard for subtitle files since all modern video players handle it. If your destination player requires a specific legacy encoding, re-encode the file with a text encoding tool.
Does the converter handle WebVTT's metadata headers?
Yes. The WebVTT header (`WEBVTT`, optional header lines, and CSS-style blocks) is stripped. Only the cue blocks are carried into the SRT output.
Limitations
- Style information is always lostAny formatting applied through CSS classes, inline spans, or positional metadata in the VTT is dropped because SRT is a plain-text format with no style support.
- No WebVTT region supportWebVTT regions (positioned caption areas) have no equivalent in SRT. Cues assigned to regions are placed in the sequential SRT output with their timing preserved but their on-screen position is lost.
- Microsecond precision is truncatedWebVTT timestamps can carry microsecond precision, but SRT rounds to milliseconds. The third decimal digit is rounded to the nearest millisecond.
Platform notes
- macOS
- Safari's native video player supports WebVTT natively but SRT requires a third-party player like VLC or IINA. The conversion is useful for preparing subtitles for players that prefer SRT.
- Linux
- FFmpeg converts VTT to SRT via `ffmpeg -i input.vtt output.srt` but also transcodes any embedded video stream. The browser tool is the right pick when you have a standalone VTT with no video container.
- Web
- Runs entirely client-side. The conversion is instant for subtitle files of any realistic size (under 10 MB).