WordPress SRT or VTT Subtitles: Which One to Upload

Sep 23, 2026

Whether WordPress takes an .srt file depends on which upload path you use — there are four official format lists, and they do not agree with each other. That is the whole reason one person drops an SRT into the Media Library without trouble while another gets an error on the same file.

This guide walks you through identifying which list applies to your site, converting the caption file to match it, and attaching it as a text track. You need the caption file itself and one piece of information: whether your site is self-hosted or on WordPress.com.

Before you start: the four lists

Each of these is a real, separately maintained page of official documentation. Skim the table, then find your row.

Upload pathSubtitle formats the official page lists
Self-hosted core MIME mapsrt, vtt, dfxp
Self-hosted Video block text tracksWebVTT only
WordPress.com Media Library.vtt only
VideoPress captions manager.vtt, .srt, and nine more

The reason these differ is organisational, not technical: WordPress.org documents the open-source software, while WordPress.com documents Automattic's hosted service, and VideoPress is a separate product again with its own help pages.

Step 1: Identify which path you are on

Look at where the caption file is going, not at where the video lives:

  1. Self-hosted WordPress, uploading the file through Media Library and attaching it in the Video block.
  2. WordPress.com Media Library, uploading the file the same way you would upload an image.
  3. VideoPress captions manager, adding the subtitle from inside the video's own subtitle screen.

The result: you now know which of the four lists is the one that will actually reject or accept your file.

Step 2: Read the list that applies to that path

Self-hosted, core's default map. The wp_get_mime_types() reference lists these three rows under text formats:

'txt|asc|c|cc|h|srt'           => 'text/plain',
'vtt'                          => 'text/vtt',
'dfxp'                         => 'application/ttaf+xml',

Two things are worth reading closely. The extension keys are patterns — .srt shares a single row with .txt, .asc, .c, .cc and .h, and all six resolve to text/plain. WebVTT, by contrast, gets a row of its own mapping to text/vtt.

What the uploader actually checks is get_allowed_mime_types(), which starts from that map and then removes swf and exe unconditionally, plus htm|html and js for users without the unfiltered_html capability, before running the upload_mimes filter. Neither caption row is among the ones it strips — but that filter is the documented way to change the set, and core's own note says so: "This filter should be used to add, not remove, mime types. To remove mime types, use the 'upload_mimes' filter."

On a Multisite network there is a second gate above that one: the Upload file types field in Network Admin. Its documentation is blunt about how it interacts with the map above — "Adding mime types in the 'upload file types' field not listed in the default set will NOT work unless you've added them using the upload_mimes filter!"

Self-hosted, Video block text tracks. Here the documentation is narrower than the MIME map. The Video block page says: "The tracks are formatted in WebVTT format (.vtt files or Web Video Text Tracks)." No other format is named.

WordPress.com Media Library. The Accepted file types page has exactly one caption entry in its video section: ".vtt (text captions for video)". The same page adds that "WordPress.com restricts uploads to the file types listed on this page. Restricting file types protects your site from unsafe files."

VideoPress captions manager. This is the widest list of the four: "The most common subtitle file formats are .vtt and .srt, and these formats are also accepted: .sbv, .sub, .mpsub, .lrc, .smi, .sami, .rt, .ttml, and .dfxp." Note the plan condition on the product itself — its documentation states the feature "is available on sites with the WordPress.com Business and Commerce plans. For free sites and sites on the Personal and Premium plans, upgrade your plan to access this feature."

The result: one format, or a short list of them, that your path is documented to accept.

Step 3: Convert the file to match

If your path wants WebVTT and you have an SRT, convert it rather than renaming it — SRT to VTT does that in the browser. Converting before uploading is the step WordPress.com's own troubleshooting page recommends for unsupported types: "you should convert them to a valid file type before uploading. You can do this with editing software or a free online converter."

Step 4: Getting SRT back out of WordPress

The reverse case is just as common. VideoPress "generates a subtitle track automatically for each video you upload, so a video may already carry a track before you add one of your own" — and if you want to reuse that transcript in a video editor or on a platform that expects SRT, you need the other direction.

Try it right here

Runs in your browser. Your file is not uploaded anywhere.

Loading tool…

This runs entirely inside your browser tab. The file is read from disk and converted locally, so a transcript of your own video never gets uploaded to anyone's server on its way to becoming an SRT.

One timing note from the same page: subtitles "are not ready as soon as the video finishes uploading. If the track opens with a single empty subtitle instead of the transcript, transcription is still running, so check again later."

Step 5: Attach the track and fill in the fields

On the self-hosted Video block, the documented option is Text tracks, which "will allow you to display timed text tracks (such as subtitles or captions) when the media is playing." Two fields decide how the browser treats it:

  • Kind — "How the text track is meant to be used. If omitted, the default kind is Subtitles. If the attribute contains an invalid value, it will use Metadata." Metadata tracks "aren't shown to the user," so a typo here silently hides your captions.
  • Source language — "Language of the track text data. It must be a valid BCP 47 language tag. If the Kind attribute is set to Subtitles, then the Source language must be defined."

If you are choosing between the first two Kind values, the documentation draws the line by audience. Subtitles are "Translations of the dialogue in the video for when audio is available but not understood," while Captions are a "Transcription of the dialogue, sound effects, musical cues, and other audio information for when the viewer is deaf/hard of hearing or the video is muted." A file converted from a transcript is usually the second one.

The result: a track that plays over the video rather than one that loads and displays nothing.

Common mistakes

  • Renaming .srt to .vtt. The extension is not the format. Convert the file instead.
  • Reading the wrong list. The VideoPress captions manager accepting .srt says nothing about what the WordPress.com Media Library accepts, and vice versa.
  • Assuming the error is about size. WordPress.com documents "This file cannot be processed by the web server." as meaning "The file type is not supported," and adds plainly: "This message is not about the file's size."
  • Leaving Kind blank on purpose. Omitting it defaults to Subtitles, but an invalid value falls through to Metadata, which is not displayed.
  • Expecting burned-in captions. Nothing in WordPress's official documentation describes burning subtitles into the picture — every path above attaches a separate text track.

FAQ

Does WordPress support SRT subtitles? It depends on the path. Core's default MIME map includes srt under text/plain, and the VideoPress captions manager lists .srt explicitly. The WordPress.com Accepted file types page lists only .vtt, and the self-hosted Video block documentation names only WebVTT.

Why did my .srt upload on one WordPress site and fail on another? Because the allowed set is not universal. It can be changed through the upload_mimes filter, and on Multisite the network has its own Upload file types setting — uploads of unsupported types there fail with "Sorry, this file type is not permitted for security reasons."

Which format should I pick if I only want to prepare one file? VTT. It is the one format that appears on every list of the four, including the two narrowest ones.

Can WordPress burn subtitles into the video? The official documentation does not describe any such feature. Subtitles are attached as separate text tracks throughout.

What error means my caption file type was rejected? On self-hosted sites the block editor shows "Sorry, this file type is not supported here." On WordPress.com the message is "This file cannot be processed by the web server." For more on that one, see this file type is not supported in WordPress.


Format lists cited from WordPress's official documentation, checked 16 September 2026 — verify against the official pages before relying on them. More walkthroughs are in the how-to archive, and every converter mentioned here runs locally in your browser: see all Clapr tools.

Clapr team

Clapr team

WordPress SRT or VTT Subtitles: Which One to Upload | Clapr Blog