Subtitle shifter & converter
All tools

SRT vs VTT: Which One Do You Need?

SRT and WebVTT carry the same subtitles with almost the same syntax. What decides between them is where the file is going — and a handful of details that break when you convert.

By the Feeed team · · 5 min read

Use WebVTT (.vtt) for anything played in a web browser, including the HTML5 <track> element and most web video players, and SRT (.srt) for editing software, TVs, media servers and social platforms that ask for SubRip. YouTube and Vimeo accept both. When a tool accepts only one of them, converting takes seconds and loses little.

This guide is about choosing between the two for a specific job. For the structure of each format and how they compare with ASS/SSA styling, see SRT vs VTT vs ASS.

The short answer by destination

Where the subtitles goUseWhy
HTML5 <video> with <track>VTTBrowsers only load WebVTT in a track element
Video.js, Plyr, JW Player, HLS streamsVTTBuilt on the browser’s text-track support
YouTube uploadEitherBoth accepted; VTT keeps positioning and bold/italic/underline
Vimeo uploadEither (VTT preferred)Vimeo recommends WebVTT and requires UTF-8
Facebook videoSRTMust be SRT named like video.en_US.srt
Adobe Premiere ProSRTImports SRT captions; VTT is not in its import list
DaVinci ResolveEitherRecent versions import and export both
TVs, USB sticks, Plex, Kodi, VLCSRTThe most widely supported sidecar format

Platform rules change, so check the upload page’s current list if a file is rejected.

The same cue in both formats

1
00:01:02,500 --> 00:01:05,000
<i>Previously on the show…</i>
WEBVTT

00:01:02.500 --> 00:01:05.000
<i>Previously on the show…</i>

The visible differences are small: a WEBVTT line at the top, a period instead of a comma before the milliseconds, and an optional cue number. That is why a renamed SRT file sometimes appears to work in a desktop player and then fails in a browser, which rejects a file without the header.

Five differences that matter in practice

  1. Header. A VTT file must start with WEBVTT. SRT has no header.
  2. Timestamps. SRT always writes hours and a comma (00:01:02,500). VTT uses a period and may leave out the hours (01:02.500).
  3. Placement. VTT has standard cue settings after the time: line:0 for the top of the frame, align:start, position:10%, size:50%. SRT has nothing official; some players honour the ASS-style tag {\an8}.
  4. Styling and metadata. VTT allows <v Speaker> voice tags, <c.class> spans styled with CSS, STYLE and NOTE blocks, and chapters or metadata tracks. SRT has informal <i>, <b>, <u> and <font> tags.
  5. Encoding and escaping. VTT is always UTF-8, and a literal & or < in the text has to be written as &amp; or &lt;. SRT files in the wild use many encodings and rarely escape anything.

YouTube: both work, VTT keeps a little more

YouTube Studio accepts SRT and WebVTT in Subtitles → Add language → Upload file, with or without timing. Its help page notes that it ignores styling markup in SRT files, while for WebVTT it supports positioning but limits styling to bold, italic and underline. So if your captions move to the top of the frame to avoid on-screen text, upload VTT; otherwise SRT is just as good. YouTube also lets you download captions it generated, which is a handy way to get a starting file to correct.

HTML5 video: VTT only

The <track> element only understands WebVTT:

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

Three things commonly stop it working. The file is an SRT with a .vtt extension (no header, commas in the times). The server sends the wrong content type — it should be text/vtt. Or the subtitles are on another domain: the video then needs the crossorigin attribute and the subtitle server must send a CORS header. Browsers also do not load tracks from file:// pages, so test through a local web server. To style captions on your own site, use the ::cue CSS pseudo-element, which VTT class spans can target.

Premiere Pro and DaVinci Resolve

In Premiere Pro, import captions from the Text panel (Captions tab → Import captions from file) or by importing the file into the project. Its supported sidecar formats are SRT, SCC, MCC, STL and XML/DFXP; WebVTT is not among them at the time of writing, so convert a VTT file to SRT first. Premiere also exports captions as SRT, which you can convert to VTT for a website afterwards.

DaVinci Resolve imports subtitle files with File → Import → Subtitle, and recent versions accept both SRT and WebVTT. Subtitles are exported from the Deliver page, where you choose the format and whether to export a separate file, embed it or burn it in. Before importing into either editor, make sure the subtitles match the timeline’s frame rate and start time: a file timed for a version with a different intro needs a shift first.

Converting without surprises

SRT to VTT is lossless for the text and timing. A good converter adds the header, changes the comma to a period, escapes & and <, and re-encodes the file as UTF-8 — the step people forget when a renamed Windows-1252 file shows garbled accents in the browser. SubTweak also turns a {\an8} tag into the equivalent line:0 setting so top-positioned lines stay at the top.

VTT to SRT keeps every line and time but drops what SRT cannot express: cue identifiers, NOTE and STYLE blocks, voice and class tags and most cue settings. A top-of-frame cue becomes {\an8}. Before converting captions you downloaded from a website, check for overlapping cues: auto-generated web captions often show each line twice as it scrolls up, which looks fine in a browser but stacks up in SRT players. Fix overlaps first.

FeatureSRT → VTTVTT → SRT
Text and timingKeptKept
Italic, bold, underlineKeptKept
Top-of-frame lines{\an8} → line:0line:0 → {\an8}
Other cue settings, CSS classes, voicesNot applicableDropped
Comments and style blocksNot applicableDropped
EncodingConverted to UTF-8Saved as UTF-8

Which should be your master copy?

If the subtitles will end up both on a website and on other devices, keep the version with the most information. For plain dialogue that is either format — SRT is easier for other people to open and edit. If you rely on VTT positioning, speaker tags or chapters, keep the VTT and export SRT copies when needed. Either way, fix the timing once in the master file, then generate the other format, so that both stay in sync.

Convert SRT to VTT →