{"id":2177,"date":"2026-11-11T15:13:00","date_gmt":"2026-11-11T20:13:00","guid":{"rendered":"https:\/\/www.xconvert.com\/blog\/?p=2177"},"modified":"2026-08-31T23:12:37","modified_gmt":"2026-09-01T03:12:37","slug":"srt-vs-vtt-vs-ass","status":"publish","type":"post","link":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass","title":{"rendered":"SRT vs VTT vs ASS: Which Subtitle File Do You Need?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">You have a subtitle file and a destination, and they disagree. The web player shows nothing. YouTube\u2019s uploader greys out the file. The anime you downloaded has beautiful typesetting that vanishes the moment you convert it for your TV. All four of the common subtitle formats hold the same words and roughly the same timings \u2014 but they store very different amounts of <em>everything else<\/em>, and the destination decides which of those extras survive. This is the short version of which file each place actually needs, and what you lose crossing between them.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Quick answer:<\/strong> <strong>SRT<\/strong> is the universal fallback: text and timings, nothing else, accepted almost everywhere. <strong>VTT (WebVTT)<\/strong> is the one the web needs \u2014 the HTML <code>&lt;track&gt;<\/code> element takes WebVTT files. <strong>ASS<\/strong> is a full styling system (fonts, outlines, positioning, karaoke) and is what anime and typeset subtitles use; <strong>SSA<\/strong> is its older version \u2014 ASS <em>is<\/em> SubStation Alpha v4.00+. Rule of thumb: sending it to a <strong>browser \u2192 VTT<\/strong>; sending it to <strong>YouTube, a phone, a TV or a social platform \u2192 SRT<\/strong>; keeping <strong>typesetting or karaoke \u2192 ASS<\/strong>. Convert between all of them on the <a href=\"https:\/\/www.xconvert.com\/srt-converter\">xconvert SRT converter<\/a>.<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Jump to a section<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"#formats\">What each format actually stores<\/a><\/li><li><a href=\"#differences\">Four differences that decide it for you<\/a><\/li><li><a href=\"#ssa\">SSA and ASS: what the plus sign means<\/a><\/li><li><a href=\"#destination\">Pick by destination \u2014 and the failure mode if you get it wrong<\/a><\/li><li><a href=\"#tool\">Convert between subtitle formats on xconvert<\/a><\/li><li><a href=\"#faq\">FAQ<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"formats\">What each format actually stores<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><\/th><th>SRT<\/th><th>VTT (WebVTT)<\/th><th>ASS<\/th><th>SSA<\/th><\/tr><\/thead><tbody><tr><td>Extension<\/td><td><code>.srt<\/code><\/td><td><code>.vtt<\/code><\/td><td><code>.ass<\/code><\/td><td><code>.ssa<\/code><\/td><\/tr><tr><td>MIME type<\/td><td><code>application\/x-subrip<\/code><\/td><td><code>text\/vtt<\/code><\/td><td><code>text\/x-ass<\/code><\/td><td><code>text\/x-ass<\/code><\/td><\/tr><tr><td>Header<\/td><td>none<\/td><td><code>WEBVTT<\/code> line, required<\/td><td><code>[Script Info]<\/code> + <code>[V4+ Styles]<\/code> + <code>[Events]<\/code><\/td><td><code>[Script Info]<\/code> + <code>[V4 Styles]<\/code> + <code>[Events]<\/code><\/td><\/tr><tr><td>Timecode<\/td><td><code>00:00:01,000<\/code> (comma)<\/td><td><code>00:00:01.000<\/code> (period)<\/td><td><code>0:00:01.00<\/code><\/td><td><code>0:00:01.00<\/code><\/td><\/tr><tr><td>Timing precision<\/td><td>milliseconds<\/td><td>milliseconds<\/td><td><strong>centiseconds<\/strong><\/td><td><strong>centiseconds<\/strong><\/td><\/tr><tr><td>Positioning<\/td><td>no<\/td><td>cue settings (<code>line<\/code>, <code>position<\/code>, <code>align<\/code>)<\/td><td>per-line alignment and margins<\/td><td>per-line alignment and margins<\/td><\/tr><tr><td>Styling<\/td><td>unofficial <code>&lt;b&gt; &lt;i&gt; &lt;u&gt; &lt;font&gt;<\/code> some players honour<\/td><td>CSS via <code>::cue<\/code>, plus <code>&lt;c&gt;<\/code> classes<\/td><td>named style table + inline override tags<\/td><td>named style table + inline override tags<\/td><\/tr><tr><td>Karaoke<\/td><td>no<\/td><td>no<\/td><td>yes (<code>\\k<\/code> timing tags)<\/td><td>yes<\/td><\/tr><tr><td>Fonts travel with it<\/td><td>no<\/td><td>no<\/td><td>only as container attachments<\/td><td>only as container attachments<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The differences are not decoration. SRT has <strong>no header at all<\/strong> \u2014 the file starts with the number <code>1<\/code> \u2014 which is exactly why it is so portable and exactly why it cannot carry anything but text and times. WebVTT adds a required <code>WEBVTT<\/code> first line, cue settings for where a caption sits on screen, and CSS hooks. ASS adds an entire style table, and every event line names a style from it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"differences\">Four differences that decide it for you<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. The web takes WebVTT.<\/strong> The HTML <code>&lt;track&gt;<\/code> element used to attach captions to <code>&lt;video&gt;<\/code> and <code>&lt;audio&gt;<\/code> expects WebVTT \u2014 MDN\u2019s reference describes the tracks as \u201cformatted in WebVTT format (.vtt files)\u201d and the <code>src<\/code> attribute as the \u201caddress of the track (.vtt file)\u201d. If your captions are not appearing on a web page, the file being an <code>.srt<\/code> is the first thing to check. Converting is a one-step job; <a href=\"https:\/\/www.xconvert.com\/blog\/convert-srt-to-vtt\/\">converting SRT to VTT for HTML5 video<\/a> covers the whole path.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. YouTube\u2019s published list has no ASS or SSA in it.<\/strong> Google documents the subtitle and closed-caption formats YouTube accepts in three groups: <em>basic<\/em> (SubRip <code>.srt<\/code>, SubViewer <code>.sbv<\/code>\/<code>.sub<\/code>, MPsub, LRC, Videotron Lambda <code>.cap<\/code>), <em>advanced<\/em> (SAMI, RealText, WebVTT, TTML, DFXP) and <em>broadcast<\/em> (SCC, EBU-STL and several CEA-608 formats). Advanced SubStation Alpha appears in none of them. If you have an <code>.ass<\/code> file and a YouTube video, converting to SRT is not optional. Google also warns that for SRT, \u201cno style info (markup) is recognized\u201d and \u201cthe file must be in plain UTF-8\u201d \u2014 so the styling would be dropped even if the upload went through.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. ASS timing is coarser than SRT\u2019s, and it truncates.<\/strong> SRT and WebVTT both write milliseconds. ASS writes <strong>centiseconds<\/strong> \u2014 <code>0:00:01.00<\/code>. The extra digit is not rounded, it is thrown away: our converter computes the centisecond field as <code>floor((ms % 1000) \/ 10)<\/code>, so a cue starting at <code>00:00:01,237<\/code> in SRT becomes <code>0:00:01.23<\/code> in ASS and comes back as <code>00:00:01,230<\/code>. The error is therefore always in the same direction \u2014 the cue lands <strong>early<\/strong>, by up to 9 milliseconds, never late. Nobody sees 9 ms in dialogue, but it means an SRT \u2192 ASS \u2192 SRT round trip is <em>not<\/em> byte-identical, and it is one reason karaoke timing is authored in ASS directly rather than converted into it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. ASS styling is a system, not an attribute.<\/strong> In ASS, <code>[V4+ Styles]<\/code> defines named styles \u2014 font, size, primary\/outline\/shadow colours, bold, margins, alignment \u2014 and each <code>Dialogue:<\/code> line picks one, optionally overriding it inline. Converting <em>away<\/em> from ASS discards that table, because SRT and VTT have nowhere to put it. Converting <em>into<\/em> ASS cannot invent it: any converter reading an SRT only has start time, end time and text to work with, so it writes a single default style and attaches every line to it. Matroska\u2019s specification notes the other half of the problem \u2014 an ASS track \u201cMAY use embedded fonts from attachments\u201d, so a <code>.ass<\/code> file pulled out of an MKV can reference a font that is sitting in the container rather than on your system.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"864\" src=\"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/subtitle-matrix.png\" alt=\"Feature grid comparing SRT, WebVTT and ASS across timing precision, on-screen positioning, styling, karaoke, HTML track support and YouTube acceptance\" class=\"wp-image-2176\" srcset=\"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/subtitle-matrix.png 1600w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/subtitle-matrix-300x162.png 300w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/subtitle-matrix-1024x553.png 1024w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/subtitle-matrix-768x415.png 768w, https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/subtitle-matrix-1536x829.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ssa\">SSA and ASS: what the plus sign means<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">They are the same lineage, two versions apart. SubStation Alpha reached script version v4.00; <strong>Advanced<\/strong> SubStation Alpha is <strong>v4.00+<\/strong>, and the practical marker is the styles section header: <code>[V4 Styles]<\/code> for SSA, <code>[V4+ Styles]<\/code> for ASS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Matroska specification turns that into a hard rule for anyone muxing subtitles, and it is the cleanest definition available: the codec ID <code>S_TEXT\/ASS<\/code> \u201cMUST be used when \u2018ScriptType: v4.00+\u2019 or \u2018[V4+ Styles]\u2019 sections are found in the original SSA script\u201d, while <code>S_TEXT\/SSA<\/code> \u201cMUST NOT be used\u201d in that case. Same family, decided by one line in the header.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practice: <strong>choose ASS unless something specifically demands SSA.<\/strong> ASS\u2019s style table has more fields (outline and shadow colours, scaling, rotation, border style), the override-tag vocabulary is wider, and every current renderer built on libass \u2014 VLC, mpv, ffmpeg and the players that embed them \u2014 treats it as the native format. SSA survives mainly for older editors and hardware players that predate the v4.00+ header.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"destination\">Pick by destination \u2014 and the failure mode if you get it wrong<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Where it\u2019s going<\/th><th>Send<\/th><th>What happens if you send the wrong one<\/th><\/tr><\/thead><tbody><tr><td>HTML5 <code>&lt;video&gt;<\/code> on your own page<\/td><td><strong>VTT<\/strong><\/td><td>An <code>.srt<\/code> in a <code>&lt;track&gt;<\/code> element simply produces no captions \u2014 no error, nothing on screen<\/td><\/tr><tr><td>YouTube<\/td><td><strong>SRT<\/strong> (or VTT for positioning)<\/td><td><code>.ass<\/code>\/<code>.ssa<\/code> are not on Google\u2019s accepted list; styling in an SRT is stripped anyway<\/td><\/tr><tr><td>Facebook, Instagram, most social uploaders<\/td><td><strong>SRT<\/strong><\/td><td>Uploaders that only document SRT tend to reject the rest outright<\/td><\/tr><tr><td>VLC, mpv, Plex, Jellyfin<\/td><td><strong>SRT or ASS<\/strong><\/td><td>Both play; an SRT just looks plain where the ASS would have been typeset<\/td><\/tr><tr><td>Anime \/ fansub \/ typesetting work<\/td><td><strong>ASS<\/strong><\/td><td>Convert to SRT and every sign, position and karaoke effect is gone permanently<\/td><\/tr><tr><td>Broadcast or OTT delivery<\/td><td><strong>TTML \/ DFXP<\/strong><\/td><td>Ingest systems that specify TTML reject SRT at validation \u2014 see <a href=\"https:\/\/www.xconvert.com\/blog\/ttml-dfxp-to-srt\/\">TTML and DFXP subtitles<\/a><\/td><\/tr><tr><td>Music players, synced lyrics<\/td><td><strong>LRC<\/strong><\/td><td>A subtitle file with end times carries data an LRC player has no field for<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The asymmetry worth internalising: <strong>converting down is lossless for the words and lossy for everything else; converting up adds nothing.<\/strong> SRT \u2192 ASS gives you an ASS file, not a typeset one. So if styled subtitles matter, keep the ASS as your master and export SRT copies, never the reverse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tool\">Convert between subtitle formats on xconvert<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/www.xconvert.com\/srt-converter\">xconvert SRT converter<\/a> handles all of these in one place, and the conversion runs on your own device \u2014 the subtitle text is never sent anywhere:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Open <a href=\"https:\/\/www.xconvert.com\/srt-converter\">xconvert.com\/srt-converter<\/a>. Click <strong>Upload .srt<\/strong> to pick a file, or paste the cues straight into the input box if you are converting a snippet.<\/li><li>Set <strong>From format<\/strong> to what you have and <strong>To format<\/strong> to what you need. Both dropdowns list <strong>SRT, VTT, ASS, SSA, SBV, SUB, LRC, SMI, TTML, STL, DFXP, TXT<\/strong> and <strong>CSV<\/strong>; the page opens on SRT \u2192 VTT.<\/li><li>Press <strong>Convert \u2192<\/strong>. The output pane shows the rewritten cues, so you can check the timecode style changed the way you expect \u2014 a comma before the milliseconds in SRT, a period in VTT, two decimal places in ASS.<\/li><li>Click <strong>Download<\/strong> to save the file, or <strong>Copy<\/strong> to take the text. No sign-up, no watermark.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">One honest caveat, because it follows directly from the section above: converting <strong>to<\/strong> ASS produces a valid script with a <code>ScriptType: v4.00+<\/code> header, a <code>[V4+ Styles]<\/code> block and one default style that every <code>Dialogue:<\/code> line uses. Choose <strong>SSA<\/strong> instead and you get the older pair \u2014 <code>ScriptType: v4.00<\/code> and a <code>[V4 Styles]<\/code> block with the shorter style field list. Either is a correct file and a good starting point for Aegisub \u2014 neither is a reconstruction of typesetting that was never in the source.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<h5 class=\"wp-block-heading\">Why don\u2019t my SRT captions show up on my website?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Because the HTML <code>&lt;track&gt;<\/code> element wants WebVTT. Point <code>src<\/code> at a <code>.vtt<\/code> file instead and the captions appear. Watch for two other web-only gotchas while you are there: the <code>.vtt<\/code> must be served as <code>text\/vtt<\/code>, and <code>&lt;track&gt;<\/code> enforces same-origin unless the parent <code>&lt;video&gt;<\/code> carries a <code>crossorigin<\/code> attribute \u2014 so a caption file on a different CDN host can fail even when the path is right.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Can I convert ASS to SRT without losing the styling?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">No, and no tool can. SRT has no field for a font, a colour, a screen position or a karaoke timing \u2014 the only markup any player reliably honours is <code>&lt;i&gt;<\/code>. Converting ASS to SRT keeps every line of dialogue and its timing and discards the rest. If both are needed, ship two files: the ASS for players that render it, the SRT for everything else.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Is ASS the same as SSA?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">They are two versions of the same format. SSA is script version v4.00 with a <code>[V4 Styles]<\/code> section; ASS is v4.00+ with <code>[V4+ Styles]<\/code> and a longer list of style fields and override tags. Matroska\u2019s codec spec makes the split explicit \u2014 a script containing <code>ScriptType: v4.00+<\/code> or <code>[V4+ Styles]<\/code> must be stored as ASS, not SSA. Unless a specific old player has asked you for SSA, pick ASS.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Which format should I use for a Plex or Jellyfin library?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">SRT for maximum compatibility, ASS when the release was typeset and you want it to look the way it was made. There is a real cost to guessing wrong: Plex documents that even when a file\u2019s audio, video and container are all compatible with the client app, \u201cif a subtitle stream is selected and is not compatible with the Plex App, then the Server will \u2018burn in\u2019 the subtitle text within the video. This requires a full transcode of the video stream.\u201d Keeping an SRT sidecar next to the ASS is a cheap way to give a fussy client something it can render on its own.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Does converting SRT to VTT change the timing?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">No. The cue times are carried across unchanged; only their notation changes \u2014 SRT writes <code>00:00:01,000<\/code> with a comma, WebVTT writes <code>00:00:01.000<\/code> with a period, and WebVTT adds its required header line. Both formats store milliseconds, so nothing is rounded in either direction.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">My subtitles are in ASS and my TV shows squares instead of letters. Why?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Almost certainly a font problem rather than a format one. An ASS script names fonts by string; if the player does not have that font installed it substitutes, and if the substitute lacks the characters you get boxes. When the subtitles came from an MKV, the font is often an <em>attachment inside the container<\/em> rather than a file on the device. Converting the track to SRT sidesteps it entirely by letting the player use its own caption font.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Last verified 2026-08-31.<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTML\/Reference\/Elements\/track\">MDN \u2014 <code>&lt;track&gt;<\/code>: The Embed Text Track element<\/a> \u2014 \u201cThe tracks are formatted in WebVTT format (.vtt files) \u2014 Web Video Text Tracks\u201d; <code>src<\/code> is the \u201cAddress of the track (.vtt file)\u201d and must be same-origin unless the media element has <code>crossorigin<\/code>.<\/li><li><a href=\"https:\/\/support.google.com\/youtube\/answer\/2734698\">YouTube Help \u2014 Supported subtitle and closed caption files<\/a> \u2014 the full accepted list (SubRip, SubViewer, MPsub, LRC, Videotron Lambda; SAMI, RealText, WebVTT, TTML, DFXP; SCC, EBU-STL, TDS, CIN, ASC, CAP) with no SubStation Alpha entry, plus \u201cNo style info (markup) is recognized. The file must be in plain UTF-8\u201d for SRT.<\/li><li><a href=\"https:\/\/www.matroska.org\/technical\/codec_specs.html\">Matroska \u2014 Codec Specs<\/a> \u2014 <code>S_TEXT\/ASS<\/code> \u201cMUST be used when \u2018ScriptType: v4.00+\u2019 or \u2018[V4+ Styles]\u2019 sections are found in the original SSA script\u201d; <code>S_TEXT\/SSA<\/code> \u201cMUST NOT\u201d be used in that case; both \u201cMAY use embedded fonts from attachments\u201d; <code>S_TEXT\/UTF8<\/code> is plain-text subtitles and <code>S_TEXT\/WEBVTT<\/code> is WebVTT.<\/li><li><a href=\"https:\/\/support.plex.tv\/articles\/200250387-streaming-media-direct-play-and-direct-stream\/\">Plex Support \u2014 Streaming media: direct play and direct stream<\/a> \u2014 \u201cif a subtitle stream is selected and is not compatible with the Plex App, then the Server will \u2018burn in\u2019 the subtitle text within the video. This requires a full transcode of the video stream.\u201d<\/li><li><a href=\"https:\/\/ffmpeg.org\/\">FFmpeg<\/a> \u2014 muxer metadata read from the local build: SubRip is <code>application\/x-subrip<\/code> (<code>.srt<\/code>), WebVTT is <code>text\/vtt<\/code> (<code>.vtt<\/code>), and the ASS muxer covers both <code>.ass<\/code> and <code>.ssa<\/code> with MIME <code>text\/x-ass<\/code>.<\/li><li><a href=\"https:\/\/www.xconvert.com\/srt-converter\">xconvert SRT converter<\/a> \u2014 live tool; the <strong>From format<\/strong> \/ <strong>To format<\/strong> dropdowns and their 13 entries, the <strong>Upload .srt<\/strong>, <strong>Convert \u2192<\/strong>, <strong>Copy<\/strong> and <strong>Download<\/strong> controls, the SRT \u2192 VTT default, and the shape of the emitted scripts (ASS: <code>ScriptType: v4.00+<\/code> with a <code>[V4+ Styles]<\/code> block; SSA: <code>ScriptType: v4.00<\/code> with <code>[V4 Styles]<\/code>; both with one default style and centisecond <code>Dialogue:<\/code> timings, the centisecond field truncated rather than rounded) were read from the tool itself.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>SRT, VTT, ASS or SSA? What each subtitle format stores, which players accept it, and exactly what you lose converting between them.<\/p>\n","protected":false},"author":4,"featured_media":2174,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,14],"tags":[],"class_list":["post-2177","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to-guides","category-tools"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SRT vs VTT vs ASS: Which Subtitle File Do You Need?<\/title>\n<meta name=\"description\" content=\"SRT, VTT, ASS or SSA? What each subtitle format stores, which players accept it, and exactly what you lose converting between them.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SRT vs VTT vs ASS: Which Subtitle File Do You Need?\" \/>\n<meta property=\"og:description\" content=\"SRT, VTT, ASS or SSA? What each subtitle format stores, which players accept it, and exactly what you lose converting between them.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass\" \/>\n<meta property=\"og:site_name\" content=\"XConvert Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/xconvertcom\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-11T20:13:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-71.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"840\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Stephanie Taylor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@xconvert_com\" \/>\n<meta name=\"twitter:site\" content=\"@xconvert_com\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Stephanie Taylor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass\"},\"author\":{\"name\":\"Stephanie Taylor\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#\\\/schema\\\/person\\\/ae9300506c0e9e85f1a6ece4d762980d\"},\"headline\":\"SRT vs VTT vs ASS: Which Subtitle File Do You Need?\",\"datePublished\":\"2026-11-11T20:13:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass\"},\"wordCount\":2113,\"image\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-71.png\",\"articleSection\":[\"How To Guides\",\"Tools\"],\"inLanguage\":\"en-CA\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass\",\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass\",\"name\":\"SRT vs VTT vs ASS: Which Subtitle File Do You Need?\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-71.png\",\"datePublished\":\"2026-11-11T20:13:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#\\\/schema\\\/person\\\/ae9300506c0e9e85f1a6ece4d762980d\"},\"description\":\"SRT, VTT, ASS or SSA? What each subtitle format stores, which players accept it, and exactly what you lose converting between them.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass#primaryimage\",\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-71.png\",\"contentUrl\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/featured-71.png\",\"width\":1600,\"height\":840,\"caption\":\"The xconvert SRT converter at \\\/srt-converter with the Upload .srt control highlighted \u2014 convert a subtitle file to VTT, ASS or SSA\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/srt-vs-vtt-vs-ass#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.xconvert.com\\\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SRT vs VTT vs ASS: Which Subtitle File Do You Need?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/\",\"name\":\"XConvert Blog\",\"description\":\"Blog for XConvert file converter\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-CA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/#\\\/schema\\\/person\\\/ae9300506c0e9e85f1a6ece4d762980d\",\"name\":\"Stephanie Taylor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g\",\"caption\":\"Stephanie Taylor\"},\"url\":\"https:\\\/\\\/www.xconvert.com\\\/blog\\\/author\\\/stephanie\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SRT vs VTT vs ASS: Which Subtitle File Do You Need?","description":"SRT, VTT, ASS or SSA? What each subtitle format stores, which players accept it, and exactly what you lose converting between them.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass","og_locale":"en_US","og_type":"article","og_title":"SRT vs VTT vs ASS: Which Subtitle File Do You Need?","og_description":"SRT, VTT, ASS or SSA? What each subtitle format stores, which players accept it, and exactly what you lose converting between them.","og_url":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass","og_site_name":"XConvert Blog","article_publisher":"https:\/\/www.facebook.com\/xconvertcom","article_published_time":"2026-11-11T20:13:00+00:00","og_image":[{"width":1600,"height":840,"url":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-71.png","type":"image\/png"}],"author":"Stephanie Taylor","twitter_card":"summary_large_image","twitter_creator":"@xconvert_com","twitter_site":"@xconvert_com","twitter_misc":{"Written by":"Stephanie Taylor","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass#article","isPartOf":{"@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass"},"author":{"name":"Stephanie Taylor","@id":"https:\/\/www.xconvert.com\/blog\/#\/schema\/person\/ae9300506c0e9e85f1a6ece4d762980d"},"headline":"SRT vs VTT vs ASS: Which Subtitle File Do You Need?","datePublished":"2026-11-11T20:13:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass"},"wordCount":2113,"image":{"@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass#primaryimage"},"thumbnailUrl":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-71.png","articleSection":["How To Guides","Tools"],"inLanguage":"en-CA"},{"@type":"WebPage","@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass","url":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass","name":"SRT vs VTT vs ASS: Which Subtitle File Do You Need?","isPartOf":{"@id":"https:\/\/www.xconvert.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass#primaryimage"},"image":{"@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass#primaryimage"},"thumbnailUrl":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-71.png","datePublished":"2026-11-11T20:13:00+00:00","author":{"@id":"https:\/\/www.xconvert.com\/blog\/#\/schema\/person\/ae9300506c0e9e85f1a6ece4d762980d"},"description":"SRT, VTT, ASS or SSA? What each subtitle format stores, which players accept it, and exactly what you lose converting between them.","breadcrumb":{"@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass"]}]},{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass#primaryimage","url":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-71.png","contentUrl":"https:\/\/www.xconvert.com\/blog\/wp-content\/uploads\/2026\/08\/featured-71.png","width":1600,"height":840,"caption":"The xconvert SRT converter at \/srt-converter with the Upload .srt control highlighted \u2014 convert a subtitle file to VTT, ASS or SSA"},{"@type":"BreadcrumbList","@id":"https:\/\/www.xconvert.com\/blog\/srt-vs-vtt-vs-ass#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.xconvert.com\/blog"},{"@type":"ListItem","position":2,"name":"SRT vs VTT vs ASS: Which Subtitle File Do You Need?"}]},{"@type":"WebSite","@id":"https:\/\/www.xconvert.com\/blog\/#website","url":"https:\/\/www.xconvert.com\/blog\/","name":"XConvert Blog","description":"Blog for XConvert file converter","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.xconvert.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-CA"},{"@type":"Person","@id":"https:\/\/www.xconvert.com\/blog\/#\/schema\/person\/ae9300506c0e9e85f1a6ece4d762980d","name":"Stephanie Taylor","image":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/secure.gravatar.com\/avatar\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af9a54599087d3f3dd2d0ea950291c9e18fcc503af09b136b37fa52c418fe467?s=96&d=mm&r=g","caption":"Stephanie Taylor"},"url":"https:\/\/www.xconvert.com\/blog\/author\/stephanie"}]}},"_links":{"self":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts\/2177","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/comments?post=2177"}],"version-history":[{"count":1,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts\/2177\/revisions"}],"predecessor-version":[{"id":2178,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/posts\/2177\/revisions\/2178"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/media\/2174"}],"wp:attachment":[{"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/media?parent=2177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/categories?post=2177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xconvert.com\/blog\/wp-json\/wp\/v2\/tags?post=2177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}