Convert SRT to WebVTT

Convert SubRip subtitles into WebVTT for web video players, with timestamps and markup cleaned up for browsers.

Drop your file here, or browse

Images, documents, spreadsheets, data files and subtitles. Your file stays on your device.

Your file is converted on this device and is never uploaded to a server.

Why web video needs VTT

SRT is the most common subtitle format, produced by editors, transcription services and download tools. Web browsers, however, only accept WebVTT in the HTML5 <track> element. An SRT file linked directly to a video element simply does not show.

The formats look similar, but details matter: WebVTT requires a WEBVTT header, uses a dot instead of a comma before milliseconds, and supports a different set of tags. This converter handles each of those differences.

SRT vs WebVTT at a glance

Main differences between the SRT and WebVTT formats
FeatureSRTWebVTT
Full nameSubRip SubtitleWeb Video Text Tracks (WebVTT)
TypeSubtitle text fileSubtitle text file
IntroducedAround 20002010
Created bySubRip, a free Windows subtitle ripperWHATWG, later standardized by the W3C
Timestamp format00:01:02,500 (comma before milliseconds)00:01:02.500 (dot before milliseconds, hours optional)
StylingOnly basic tags such as <i>, <b> and <u>CSS styling, positioning, cue settings and speaker voices
Best forDesktop players, video editors and upload formsHTML5 video players on websites
SupportVLC, YouTube, Premiere Pro, most smart TVsEvery browser through <track>, plus YouTube and Vimeo
MIME typeapplication/x-subriptext/vtt

How to convert SRT to VTT

  1. Step 1: Select the .srt file

    Drop your subtitle file onto the converter.

  2. Step 2: VTT is preselected

    Keep WebVTT as the output.

  3. Step 3: Convert

    Cues are parsed, timestamps are normalized and markup is cleaned.

  4. Step 4: Add it to your video

    Reference the .vtt file in a <track> element or upload it to your video platform.

What the converter fixes

WEBVTT header

Added at the top, as the format requires.

Timestamps

00:01:02,500 becomes 00:01:02.500, with hours padded where missing.

Unsupported tags

<font> tags and {\an8} position codes are removed; <i>, <b> and <u> are kept.

Safe text

Stray & and < characters are escaped so browsers do not drop the cue.

Where SRT to VTT is needed

  • HTML5 video players. Native <video> captions require WebVTT.

  • Video.js, Plyr and similar players. Most web players expect VTT tracks.

  • Course platforms. Many learning platforms ask for VTT captions.

  • Accessibility compliance. Captions on web video support WCAG requirements.

Using the VTT file on a web page

Add the file to your video with a track element, for example <track src="captions.vtt" kind="subtitles" srclang="en" label="English">. Serve it from the same site as the page, or enable CORS if it lives elsewhere, otherwise browsers refuse to load it.

Make sure your server sends the file as text/vtt. Some servers default to a generic type, which a few browsers reject.

What changes in the cue text

Cue numbers from the SRT are dropped, since WebVTT does not need them. Position coordinates that some SRT files include after the timestamps are removed as well.

Italic, bold and underline tags are supported by both formats and are kept. Font color tags are removed because WebVTT styles text with CSS instead.

  • Kept: text, timing, <i>, <b>, <u>.
  • Removed: cue numbers, <font> tags, positioning codes.
  • Escaped: bare & and < characters.

Tips for subtitle conversion

  • Save SRT files as UTF-8 so accented characters display correctly.
  • Check that cues do not overlap; some players hide overlapping captions.
  • Use CSS ::cue rules to style captions after converting.
  • Need the reverse? The VTT to SRT converter handles it.

SRT to VTT questions

What is the difference between SRT and VTT?

VTT adds a WEBVTT header, uses a dot before milliseconds, allows CSS styling and positioning, and is the only format browsers support natively.

Is the timing changed?

No. Timestamps are only reformatted; the times stay exactly the same.

Are italics kept?

Yes. <i>, <b> and <u> tags are kept because WebVTT supports them.

Why do my captions not appear in the browser?

Check that the file is served from the same origin or with CORS, and that the track element points to the right path.

Does it handle a byte order mark?

Yes. A leading BOM is removed before parsing.

Is the file uploaded?

No. Conversion happens in your browser.

Related conversions