Skip to content
filetidy
SRT → VTT

Convert SRT to VTT (WebVTT)

Turn SRT subtitle files into WebVTT captions that web players and the HTML5 track element can load, right in your browser. Nothing is uploaded, and there’s no account, watermark or limit.

  1. 1. Drop files
  2. 2. Adjust
  3. 3. Download
  • No upload. Processing happens on your device.
  • No limits. As many files as you like, free.
  • No watermark. Your files stay exactly yours.

How to convert SRT to VTT with filetidy

  1. 1

    Drop your .srt files on the area that says “Drop SRT files here”, or use “or tap to choose files”. You can add a whole season or every lesson of a course at once.

  2. 2

    Each file is converted the moment it lands: its row shows the new .vtt name, the number of lines and an encoding note such as “Already UTF-8” or “Windows-1256 → UTF-8”.

  3. 3

    Click “Preview” to compare the first 100 cues in the “#”, “Before”, “After” and “Text” columns and see the commas turned into dots.

  4. 4

    Save each WebVTT file with “Download”, or grab the whole batch with “Download all (.zip)”. Use “Clear list” to start over.

What is WebVTT, and why do web players want it?

WebVTT (Web Video Text Tracks, file extension .vtt) is the caption format of the web. The HTML5 track element, which attaches subtitles to a video tag, only accepts WebVTT in browsers, so a site, a custom player or a learning platform built on standard HTML5 video needs a .vtt file even when your translator delivered an .srt.

The format grew out of SRT, so the two look almost the same. A WebVTT file must start with the word WEBVTT on its first line, and its times use a dot before the milliseconds (00:01:02.345) where SRT uses a comma (00:01:02,345). The number above each SRT block becomes an optional cue identifier.

WebVTT goes further than SRT. Cue settings after the time line control placement (line, position, align, size). A STYLE block or the page's CSS can style captions through the ::cue selector, and the format adds NOTE comments, regions, speaker voices and classes. SRT has none of that officially; players simply tolerate font tags and {\an8}-style codes borrowed from other formats.

filetidy keeps italic, bold and underline tags, which WebVTT supports. Font colour and face tags are dropped because WebVTT has no font tag. Position codes {\an1} to {\an9} become real cue settings, so a line marked {\an8} still shows at the top of the frame. Other {\…} codes are removed, and & or stray angle brackets in the text are escaped as the format requires.

Full name
WebVTT: The Web Video Text Tracks Format
Specification
W3C, first drafted at WHATWG in 2010 under the name WebSRT
Extension and MIME type
.vtt, text/vtt
Text encoding
UTF-8 only (filetidy always writes UTF-8)
Time format
00:01:02.345, with a dot; hours are optional
Used by
HTML5 video in every modern browser, most web video players and course platforms

Other ways to do it

YouTube

On YouTube: upload the caption file in YouTube Studio

  1. Open YouTube Studio and choose Subtitles in the left menu, then click the video.
  2. Click Add language and pick the language of your captions.
  3. Under Subtitles, click Add, then Upload file.
  4. Choose With timing, click Continue and select your .vtt (or .srt) file, then publish.

YouTube reads both SRT and WebVTT, so you don't need to convert just for YouTube. Converting helps when the same captions must also play on your own site.

VLC

In VLC: check the WebVTT file before publishing it

  1. Open the video in VLC media player.
  2. Choose Subtitle > Add Subtitle File… and select the .vtt file you just downloaded.
  3. Jump to a few points in the video and check that lines appear on time, with accents and Arabic letters shown correctly.

VLC is a quick local test. Browsers apply their own caption styling, so text size and background can look different once the file plays on a web page.

SRT or WebVTT: which one should you deliver?

Pick WebVTT whenever the video plays in a browser: your own site, a player you embed, an online course. It is the only caption format the HTML5 track element reads, and it lets you place and style captions with CSS.

Keep SRT for desktop players, TVs, USB sticks and video editors. Many of those read WebVTT poorly or not at all, while SRT works almost everywhere. When a platform accepts both, as YouTube does, either is fine.

Converting is lossless for the text and timing: only the header, the time separator and the tags change. Keep the original .srt as your master copy and generate the .vtt from it when you publish, so later fixes only need to be made once.

Frequently asked questions

What is the difference between SRT and VTT?

Both are plain-text caption files with numbered or labelled cues and start and end times. WebVTT adds a WEBVTT header, uses a dot instead of a comma in times, and supports positioning, CSS styling, comments and regions. SRT is simpler and better supported by TVs and offline players.

Can I just rename .srt to .vtt?

Usually not. Without the WEBVTT header browsers reject the file, and many reject commas in the timestamps too. Renaming also leaves font tags and position codes that WebVTT doesn't understand. The converter fixes all of this and saves the result as UTF-8.

My .vtt file doesn't show on my web page. What should I check?

Check that the track element points to the right path and has kind, srclang and label set, and add the default attribute if captions should be on from the start. If the .vtt is on another domain, the server must allow cross-origin requests and the video needs the crossorigin attribute. Some servers also send .vtt with the wrong MIME type; it should be text/vtt.

Are italics and subtitle positions kept?

Italic, bold and underline survive unchanged. Lines tagged {\an8} stay at the top of the picture, and the other {\an} codes are turned into matching line, position and align settings. Colour and font tags are removed, since WebVTT handles colours through CSS instead.

My SRT has accents or Arabic that show as strange symbols. Will this fix it?

Yes, in most cases. The original encoding is detected automatically, including Windows-1256 for Arabic and Windows-1252 for French, and the WebVTT file is always written in UTF-8, the only encoding the format allows. The file row tells you which conversion was applied.

Are my subtitle files uploaded anywhere?

No. The conversion runs in JavaScript inside your browser tab, so scripts, unreleased translations and course material stay on your computer. There is no account, no limit on the number of files and no fee.

Should I add a BOM to the VTT file?

Normally no, which is why the “Add a BOM (UTF-8 with signature)” option is off by default. Browsers and web players read UTF-8 WebVTT without it. Tick it only if a specific tool you use insists on a BOM.

Last updated October 28, 2026

↑ ↓ to move · Enter to open · Esc to close