SRT to VTT — Convert SRT Subtitles to WebVTT for Browsers
Convert SRT subtitle files to WebVTT format. Add cues, regions, and metadata headers — runs in your browser, no upload.
SRT to VTT
Convert SRT subtitle files to VTT (WebVTT) format. Works entirely in your browser — no uploads, no limits.
WebVTT is the HTML5 standard for timed text tracks. Every modern browser’s <video> and <audio> elements support WebVTT natively through the <track> element — no JavaScript library, no polyfill, no plugin required. That browser-native support is the reason WebVTT has replaced SRT as the target format for web-hosted video: an SRT file requires a JavaScript parser and custom rendering, while a VTT file renders with the browser’s built-in caption renderer, which respects user preferences for font size, colour contrast, and background opacity that the OS accessibility settings control.
The conversion from SRT to VTT is structurally simple — the cue format is nearly identical — but the detail differences are what break naive converters. SRT uses a comma as the millisecond separator in timestamps; VTT uses a period. SRT is silent about encoding; VTT must be UTF-8 with an optional BOM. SRT has no file-level header; VTT requires the literal string WEBVTT as the first line. The tool handles all three correctly and adds the optional metadata header block that platforms like YouTube, Brightcove, and JW Player use to identify the track’s language, kind, and label. The conversion runs in your browser and the output is spec-compliant VTT that passes the W3C validator.
How to use
Drop your SRT file
Drop an .srt file onto the input area. The parser reads each cue block, validates the timestamp format, and converts milliseconds-only SRT timestamps to the WebVTT format with optional millisecond precision.
Add metadata if needed
Toggle the header options to add a WEBVTT header with Kind, Language, and Label metadata. The header is optional — browsers render VTT without it — but required by some platforms like YouTube and JW Player.
Copy or download the VTT
Copy the WebVTT output to your clipboard or download as a .vtt file. The output includes the mandatory WEBVTT header line and one blank line before the first cue, per the W3C specification.
Frequently asked
What is the difference between SRT and VTT timestamps?
SRT uses `HH:MM:SS,mmm` (comma before milliseconds). VTT uses `HH:MM:SS.mmm` (period before milliseconds). The converter handles the comma-to-period swap and ensures the timing range format (`-->`) matches the VTT spec exactly.
Can I add CSS styling to cues?
Yes — VTT supports inline CSS via cue settings and the `::cue()` pseudo-element in the embedding page's stylesheet. The converter adds a configurable `line` and `position` setting to each cue, which you can adjust before export.
Does it handle SRT files with HTML tags?
Yes. Bold, italic, and underline tags pass through unchanged because VTT's cue text payload uses the same HTML subset as SRT. Colour tags are preserved. Unrecognised tags are left as plain text.
Why do I need a WEBVTT header line?
The W3C spec requires the string `WEBVTT` as the first line of every VTT file, followed by a blank line. Without it, browsers that strictly implement the spec will reject the file. The converter adds this header automatically.
Limitations
- No inline voice spansVTT supports `<v Speaker Name>` tags for speaker identification. The converter does not auto-detect speakers from SRT text patterns. Add voice spans manually in a text editor after conversion.
- No chapter or region supportWebVTT supports chapter markers and region definitions for positioned captions. The converter produces basic cue blocks only. Chapter and region metadata must be added by hand.
- No VTT styling blocksWebVTT allows STYLE blocks within the file using a CSS-like syntax. The converter emits cue text only and does not write STYLE blocks. Apply styling through the embedding page's CSS instead.
Platform notes
- macOS
- Safari handles VTT natively via the `<track>` element. Preview the .vtt file by loading an HTML page with a `<video>` element and a `<track src="file.vtt" kind="subtitles">` child.
- Windows
- Edge and Chrome both support WebVTT natively. Use the built-in `<track>` element for HTML5 video. For local preview, drag the HTML file (not the .vtt) into the browser.
- Linux
- FFmpeg can burn VTT subtitles: `ffmpeg -i video.mp4 -vf subtitles=file.vtt output.mp4`. For soft subtitles, use `-i file.vtt -c:s mov_text` for MP4 or `-c:s copy` for MKV.
- Web
- YouTube accepts WebVTT files directly in the subtitle upload dialogue. The VTT output from this tool is compatible with YouTube's parser — upload without modification.