Skip to content

SRT to VTT Subtitle Converter

Transform SubRip files into WebVTT for websites, YouTube, and HTML5 video players.

Drag & drop your SRT file here

or click to browse

Supports .srt files up to 50 MB

Core Engine Architecture

Bridging the Most Common Subtitle Gap

SRT is the most widely used subtitle format, but browsers do not accept it. The HTML5 specification mandates WebVTT for the <track> element, and every major browser enforces this requirement. This converter performs the three essential transformations: prepends the mandatory WEBVTT header, converts SRT comma-separated millisecond timestamps (00:01:30,500) to VTT dot-separated format (00:01:30.500), and removes SRT entry numbers that VTT does not use. The output loads instantly in Chrome, Firefox, Safari, Edge, and mobile browsers.

Payload & Syntax Inspector

SRT to VTT Code Syntax & Structure Inspection

Side-by-side code inspection illustrating header definitions, timestamp syntax, and cue payload formatting

Millisecond Sync
input.srt
SRT SOURCE
1
00:00:01,000 --> 00:00:04,000
Hello, world!
 
2
00:00:04,500 --> 00:00:08,000
This is a subtitle file.
 
3
00:00:08,500 --> 00:00:12,000
Converted locally!
output.vtt
VTT RESULT
WEBVTT
 
00:00:01.000 --> 00:00:04.000
Hello, world!
 
00:00:04.500 --> 00:00:08.000
This is a subtitle file.
 
00:00:08.500 --> 00:00:12.000
Converted locally!
Specification Sheet

SRT vs VTT Technical Specifications

Standard Compliant
Input Format

SRT

SRT

SRT (SubRip) is the most common plain-text subtitle format. Each entry consists of a sequential number, a timestamp line with comma-separated milliseconds (00:01:30,500 --> 00:01:35,000), and one or more lines of subtitle text. SRT files have no header, no metadata, and no styling. They are compatible with nearly every media player except web browsers.

Output Format

VTT

VTT

VTT (WebVTT) is the W3C standard subtitle format for HTML5 video. Files begin with the WEBVTT header. Each cue has dot-separated timestamps (00:01:30.500 --> 00:01:35.000) without entry numbers. VTT supports optional cue settings for positioning (line, position, align) and NOTE blocks for metadata comments.

Format Differences

SRT timestamps use comma separators (00:01:30,500). VTT timestamps use dot separators (00:01:30.500).
SRT entries start with a sequential number (1, 2, 3...). VTT cues have optional string identifiers.
SRT has no file header. VTT requires the string WEBVTT on the first line.
SRT supports no positioning or styling. VTT supports cue settings (line, position, align, size).
SRT files are typically served as text/plain. VTT files should be served as text/vtt by web servers.
SRT is recognized by desktop media players. VTT is recognized by web browsers and JavaScript video players.

Conversion Troubleshooting & Gotchas

Practical solutions for player compatibility, character encoding, and timing synchronization

4 Common Gotchas
GOTCHA #1

Why does the browser console show 'Failed to load resource' or reject the .vtt track?

Web browsers require static servers to serve WebVTT files with the exact MIME type 'text/vtt; charset=utf-8'. Additionally, if the video and subtitle are hosted on different domains, ensure your server returns appropriate CORS headers (Access-Control-Allow-Origin: *), or Chrome/Safari will block the subtitle track for security reasons.

GOTCHA #2

Subtitles appear out of sync or drift on HTML5 video players (Video.js, Plyr, native player)

WebVTT strictly requires chronological timestamps. If the original SRT file contains disordered cues, overlapping timestamps, or negative durations, browser WebVTT parsers can fail to display subsequent cues. AllSubConverter sorts cues chronologically and sanitizes timestamp ranges during export.

GOTCHA #3

Why do basic HTML tags (<b>, <i>, <font>) from SRT behave unexpectedly in WebVTT?

WebVTT natively supports voice tags `<v Name>`, classes `<c.classname>`, bold `<b>`, and italics `<i>`, but does not support legacy `<font color=...>` tags. Use CSS ::cue styling (e.g. video::cue { color: yellow; }) to style your WebVTT tracks natively.

GOTCHA #4

Accented letters or emojis render as corrupted symbols on web pages

WebVTT files must always be UTF-8 encoded. If your original SRT was generated on Windows in ANSI/Windows-1252 or GBK, non-ASCII characters will break. Our engine writes UTF-8 output without a byte-order mark (BOM).

Features

Prepends the mandatory WEBVTT header that browsers require on the first line
Converts SRT comma timestamps (00:01:30,500) to VTT dot timestamps (00:01:30.500)
Removes SRT sequential entry numbers that are not used in VTT format
Writes cues without optional identifiers, keeping the VTT layout minimal
Handles SRT files with BOM, CRLF, or LF line endings gracefully
Preserves subtitle text exactly including all line breaks and special characters
Outputs UTF-8 encoded VTT recognized by all modern browsers and web players
Processes files locally in your browser without uploading your subtitles

Why Convert?

The HTML5 <video> element only accepts WebVTT via the <track> tag. Browsers silently ignore SRT files.
YouTube subtitle uploads accept VTT files with timestamp-preserving cue timing.
Video.js, Plyr, JW Player, and Shaka Player load VTT natively through the standard track API.
WebVTT is widely used for captions in HTML5 video and browser-based players.
Learning management systems commonly use VTT for accessible video captions.
VTT cue settings enable basic positioning (top, bottom, left, right) that SRT cannot express.
CDN-hosted VTT files are served with the correct text/vtt MIME type by web servers, ensuring browser compatibility.
Scenarios

Common Use Cases

Website Video Embedding

Add subtitles to HTML5 video on your website. Browsers require VTT via the <track> element and will not display SRT subtitles.

YouTube Caption Upload

Upload VTT subtitles through YouTube Studio for accurate, auto-synced captions on your videos.

E-Learning Accessibility

Provide VTT caption tracks for educational video content, then review caption content and timing against your accessibility requirements.

Custom Video Player Development

Load VTT subtitle tracks in JavaScript video players (Video.js, Plyr, Shaka Player) using the standard <track> API.

Social Media Video Subtitles

Some social platforms and web-based video editors accept VTT for adding captions to promotional and social video content.

Format Ecosystem

Related Formats

How It Works

  1. 1

    Drag your .srt file onto the converter or click to browse.

  2. 2

    The parser reads each SRT entry: number, timestamp line, and text block.

  3. 3

    Comma separators in timestamps are replaced with dots (00:01:30,500 becomes 00:01:30.500).

  4. 4

    Sequential entry numbers are removed since VTT uses optional cue identifiers instead.

  5. 5

    The WEBVTT header is prepended as the first line of the output.

  6. 6

    Each cleaned entry becomes a VTT cue block with timestamps and text.

  7. 7

    The final VTT content is encoded as UTF-8 and ready for download.

Frequently Asked Questions

The HTML5 specification defines WebVTT as the only subtitle format for the <track> element. Browsers do not include an SRT parser. If you reference an SRT file in a <track> tag, the browser ignores it. Converting SRT to VTT makes the subtitle file browser-compatible.

The only difference is the decimal separator. SRT uses commas (00:01:30,500). VTT uses dots (00:01:30.500). The converter replaces commas with dots in the timestamp lines. Everything else about the timing (hours, minutes, seconds, milliseconds) stays the same.

Yes. YouTube accepts VTT files for subtitle uploads. Go to YouTube Studio, select your video, open Subtitles, and upload the VTT file. Review the imported timing after processing.

Every VTT file must begin with the string WEBVTT on the first line, followed by a blank line. Without this header, browsers reject the file and subtitles do not display. The converter adds this header automatically.

Yes. VTT does not use sequential numbers like SRT. Instead, VTT cues can have optional string identifiers. The converter removes the numeric entries from SRT. If you want cue identifiers, they can be added but are not required by the VTT specification.

No. The subtitle text content is preserved exactly. Only the file format changes: the header is added, timestamp separators switch from commas to dots, and entry numbers are removed. Line breaks, special characters, and all text remain identical.

Ready to convert your subtitles?

Drop your SRT file here and convert to VTT instantly.