SRT vs VTT: Differences, Platform Support and How to Convert

SRT vs VTT explained: timestamp syntax, the WEBVTT header, styling and cue settings, which platforms accept which format, and how to convert SRT to VTT.

Two subtitle files side by side, an SRT file with comma timestamps and a VTT file starting with a WEBVTT header, connected by a conversion arrow.

Also available in: Русский, Українська, Dansk, Deutsch, Español, Français, Italiano, Magyar, Nederlands, Norsk bokmål, Polski, Português (Brasil), Suomi, Svenska, Türkçe, Ελληνικά, עברית, العربية, 한국어, 日本語, 中文(中国), 中文(台灣), Indonesia, Tiếng Việt

SRT and VTT are both plain-text subtitle formats that store cues with a start time, an end time and the text to display, and for simple captions they are nearly interchangeable. The differences are small but strict: a VTT (WebVTT) file must begin with a WEBVTT line and uses a dot before the milliseconds, while SRT has no header and uses a comma; VTT also adds positioning, styling and comments. In short, use VTT for HTML5 video on your own site, SRT for Facebook and LinkedIn, and either for YouTube and Vimeo.

This guide shows both formats with examples, lists which platforms accept which, and explains how to convert SRT to VTT and back without breaking the timing.

SRT vs VTT at a glance

SRT (SubRip)VTT (WebVTT)
File extension.srt.vtt
HeaderNoneRequired: first line is WEBVTT
Timestamp format00:01:02,500 (comma)00:01:02.500 (dot); hours optional
Cue numbersRequired, sequentialOptional identifiers (numbers or names)
PositioningNot definedCue settings: line, position, size, align, vertical
StylingUnofficial <i>, <b>, <u>, sometimes <font><b>, <i>, <u>, classes, voice tags, STYLE blocks with CSS
CommentsNoNOTE blocks
Formal specificationNo (de facto format)Yes, a W3C specification
Typical useSocial platforms, video editors, desktop playersHTML5 video, web players, streaming

What is an SRT file?

An SRT file is a SubRip subtitle file: a plain-text list of numbered cues. Each cue has three parts: a sequence number, a timing line, and one or more lines of text, followed by a blank line before the next cue.

1
00:00:01,000 --> 00:00:04,200
Welcome to the quarterly update.

2
00:00:04,600 --> 00:00:08,000
<i>Today we cover sales,
hiring and the product roadmap.</i>

The timing format is hours:minutes:seconds,milliseconds, always with two-digit hours and a comma. SRT was never formally standardised, so support for formatting tags varies. Many desktop players render <i> and <b>, but YouTube's help page says it supports only basic SRT files with no style markup, saved as plain UTF-8. Because it is so simple, SRT is the format almost every video editor and social platform can read, and you can edit it in any text editor.

What is a VTT (WebVTT) file?

WebVTT (Web Video Text Tracks) is the subtitle format built for the web. MDN's WebVTT reference summarises the rules: the file must start with WEBVTT, must be UTF-8, and timestamps use a dot before the milliseconds. Hours are optional, so 01:02.500 is valid.

WEBVTT

NOTE Quarterly update, English captions

intro
00:01.000 --> 00:04.200
Welcome to the quarterly update.

00:04.600 --> 00:08.000 line:85% align:center
<v Maria>Today we cover sales,
hiring and the product roadmap.</v>

Three things here do not exist in SRT:

  • Cue settings after the timing line control where text appears: line (vertical position), position and size (horizontal placement and width), align (start, center, end) and vertical (for vertical scripts).
  • Voice and class tags such as <v Maria> or <c.highlight> mark who is speaking or apply a style.
  • NOTE blocks are comments that viewers never see. Cue identifiers (like intro above) are optional.

You can also embed CSS in a STYLE block before the first cue:

WEBVTT

STYLE
::cue {
  color: #ffffff;
  background-color: rgba(0, 0, 0, 0.7);
}
::cue(v[voice="Maria"]) {
  color: #ffd166;
}

Support for styling is uneven outside browsers. YouTube, for example, accepts WebVTT positioning but limits styling to bold, italic and underline. Treat styling as a bonus, not something every player will honour.

Which platforms accept SRT or VTT?

Most viewers never see the file format, but upload forms are picky. Here is what we found on each platform's help pages and in recent guides (checked October 2026; interfaces change, so confirm in the current help centre).

PlatformSRTVTTNotes
YouTubeYesYesSRT listed as a basic format (no style markup); WebVTT as advanced (positioning, limited styling). Plain UTF-8.
VimeoYesYesVimeo's help centre recommends WebVTT where possible; files must be UTF-8.
FacebookYesNot documentedGuides consistently describe SRT only, named with a locale suffix such as video.en_US.srt.
LinkedInYesNot documentedLinkedIn's help page describes attaching an SRT file on desktop before posting.
TikTokNo direct upload foundNo direct upload foundWe found no official way to attach a caption file; use TikTok's built-in captions or burn subtitles into the video.
HTML5 <video>Not nativelyYesThe <track> element is designed for WebVTT.

Does YouTube use SRT or VTT?

Both. YouTube's supported subtitle and closed caption files page lists SubRip (.srt) among the basic formats and WebVTT (.vtt) among the advanced ones. If you only need text and timing, SRT is the least likely to cause trouble. If you need captions positioned away from on-screen text, use VTT.

HTML5 video on your own site

For a self-hosted player, VTT is the only practical choice:

<video controls src="update.mp4">
  <track kind="subtitles" src="update.en.vtt" srclang="en" label="English" default>
</video>

If you have an SRT file, convert it first. For burned-in subtitles and short-form platforms, see our guide on how to add subtitles to a video.

How to convert SRT to VTT (and VTT to SRT)

Because the formats are so close, conversion is mostly mechanical. You can do it by hand for a short file, or use a converter for anything longer.

SRT to VTT by hand

  1. Add WEBVTT as the first line, followed by a blank line.
  2. In the timing lines only, replace the comma before the milliseconds with a dot: 00:00:04,600 becomes 00:00:04.600.
  3. Keep the cue numbers; WebVTT accepts them as identifiers.
  4. Save as UTF-8 with the .vtt extension.

Be careful with search-and-replace: replacing every comma will also change commas in the dialogue.

VTT to SRT by hand

  1. Delete the WEBVTT header and any STYLE, NOTE and REGION blocks.
  2. Remove cue settings from the end of timing lines.
  3. Add hours where they are missing (01:02.500 becomes 00:01:02.500) and change the dot to a comma.
  4. Number the cues 1, 2, 3 in order and remove VTT-only tags such as <v Maria>.

Convert in the browser

Audiotexta's free SRT to VTT converter and VTT to SRT converter do these steps for you. You paste the subtitles or pick a file, and the conversion runs in your browser, so nothing is uploaded. Timings are kept to the millisecond and a leading "Name:" speaker prefix is preserved. One honest caveat: the converters strip HTML and VTT styling tags from the text, so if you rely on italics or custom styles, re-add them afterwards or edit the file by hand.

Common SRT and VTT errors and how to fix them

  • Missing WEBVTT header. Browsers ignore a VTT file without it. Add it as the very first line.
  • Commas in VTT timestamps or dots in SRT. The most common result of renaming a file instead of converting it. Fix the timing lines only.
  • Wrong encoding. Accented letters turning into symbols usually means the file is not UTF-8. Re-save it as UTF-8 in your text editor.
  • Saved as .srt.txt. Some editors add .txt silently. Show file extensions and rename.
  • Missing blank lines. Each cue must be separated by an empty line; without it, cues merge or the file stops parsing.
  • End time before start time, or overlapping cues. Players may skip the cue. Check the timing of edited cues.
  • Facebook captions not appearing. Guides point to the file name: it should end in a locale code such as .en_US.srt.
  • VTT works locally but not on the server. Serve it with the text/vtt content type. If it is on another domain, the video element needs the crossorigin attribute and the server must send CORS headers.
  • Captions off by default. Add the default attribute to the <track> element if they should show automatically.

Which format should you export?

If you are creating subtitles from scratch, you rarely need to choose in advance. Audiotexta's subtitle generator transcribes the audio and exports both SRT and VTT, including on the free plan, and the transcript can be edited before export so the timing and wording are right. Our SRT and VTT subtitle generator guide covers the full workflow, from transcription to line length and reading speed.

As a rule of thumb: export SRT when the destination is a social platform or a video editor, export VTT for websites and web players, and keep both if you publish in several places. The text and timings are identical; only the wrapper changes.

How to convert SRT to VTT

  1. Open the SRT to VTT converter. Go to the Audiotexta SRT to VTT converter in your browser. It runs locally, so the subtitle file is not uploaded.
  2. Paste the subtitles or choose the file. Paste the contents of your .srt file into the box or pick the file from your computer, and check that the number of recognised cues looks right.
  3. Download the VTT file. Download the result. The converter adds the WEBVTT header and changes the comma before the milliseconds to a dot, keeping every timing unchanged.
  4. Test it in the player. Attach the .vtt file to your video, for example with an HTML5 track element or the platform's caption upload, and play a few cues to confirm the timing and characters display correctly.

Frequently asked questions

What is the main difference between SRT and VTT?

Both store timed subtitle cues as plain text. A VTT file must start with a WEBVTT line and uses a dot before the milliseconds, while SRT has no header and uses a comma. VTT also supports cue positioning, CSS styling and comments, which SRT does not officially define.

Does YouTube use SRT or VTT?

YouTube accepts both. Its help page lists SubRip (.srt) as a basic format without style markup and WebVTT (.vtt) as an advanced format that supports positioning, with styling limited to bold, italic and underline. Files should be plain UTF-8.

Can I just rename a .srt file to .vtt?

No. Renaming does not add the required WEBVTT header or change the comma in timestamps to a dot, so strict players such as browsers will reject the file or show nothing. Use a converter or edit the header and timing lines.

Do I lose anything when converting VTT to SRT?

Usually only the VTT-specific extras: cue settings such as position and alignment, STYLE blocks, NOTE comments and voice or class tags. The text and timings stay the same, which is all most platforms use anyway.

Which format should I use for HTML5 video on my website?

Use VTT. The HTML track element is designed for WebVTT files, and browsers expect the WEBVTT header and dot-separated milliseconds. Serve the file with the text/vtt content type.

Try Audiotexta free

Upload a file or paste a link and get a transcript in minutes.

Start transcribing

Related articles