Home › Tools › SRT to VTT Converter

SRT to VTT Converter

Convert .srt subtitle files to WebVTT (.vtt) for HTML5 video, right in your browser.

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

WebVTT is the subtitle format HTML5 <track> elements expect, while most subtitles you download are SubRip (.srt). This converter rewrites the timestamps and adds the required WEBVTT header — without sending your file anywhere.

How to use it

  1. Paste your SRT content into the box, or drop the .srt file onto it.
  2. The conversion runs locally as you type — no request is made to any server.
  3. Copy the result or download it as a .vtt file.

Good to know

  • SRT uses 00:00:01,000 (comma); WebVTT uses 00:00:01.000 (period). This is the single most common cause of subtitles silently failing to load.
  • Cue numbers are optional in WebVTT but are kept here so you can diff the output against the input.
  • Styling tags such as <i> and <b> are valid in both formats and are preserved.

Where each format is accepted

SubRip (.srt) is the safe default for desktop editing software, mobile players and the subtitle upload boxes used by most video platforms. If you are unsure which format to supply, supply SRT.

WebVTT (.vtt) is required by the HTML5 <track> element, which means every browser-based player, custom web player and most streaming pipelines. It is also the format modern broadcast workflows expect.

Some tools accept both and detect the format from the content rather than the extension. Those tools are why a file can seem to work locally and then fail after upload — the upload box is stricter than the desktop editor you tested with.

Worked example

Input — .srt
1
00:00:01,000 --> 00:00:04,000
Hello there.

2
00:00:04,200 --> 00:00:07,000
<i>Music playing</i>
Output — .vtt
WEBVTT

1
00:00:01.000 --> 00:00:04.000
Hello there.

2
00:00:04.200 --> 00:00:07.000
<i>Music playing</i>

The only structural change is the WEBVTT header plus a period instead of a comma in every timestamp. Text, italics and cue numbers survive untouched.

FAQ

Why won't my .srt file work in an HTML5 video player?
Because HTML5 <track> elements only accept WebVTT. A file with an .srt extension, or with comma decimal separators in its timestamps, will be ignored by the browser without an error message.
Does this upload my subtitle file anywhere?
No. All parsing and conversion happens in JavaScript on your device. You can disconnect from the network after the page loads and the converter still works.
Is there a file size limit?
No server-side limit, because nothing is uploaded. The practical limit is your browser's available memory — files of several megabytes convert instantly.

Troubleshooting

  1. The .vtt file loads but no subtitles appearCheck the <track> tag uses kind="subtitles" and that the server sends the file as text/vtt. A server answering with text/plain makes some browsers ignore the track silently, with no console error.
  2. Timestamps still contain a comma after conversionA cue was not recognised, so it was passed through as-is. Every cue needs a blank line before it and a line containing -->. Stray text between cues is the usual culprit.
  3. Each cue holds two languages stacked on two linesThat is preserved exactly as written. Most players render both lines; if you need one language per track, split the file before converting.
  4. The output contains empty cuesCues whose text was only whitespace are kept so the numbering stays stable. Run the file through Clean subtitles with Drop empty cues enabled.

Related tools

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