WordPress Supported Video File Types: Two Official Lists

Sep 17, 2026

WordPress has two official lists of supported video file types, and they do not agree with each other. One is in the open-source core software; the other is in WordPress.com's help centre. Which one governs your uploads depends on where your site runs — and most articles on this topic quietly merge the two into a single list that matches neither.

Below are both, quoted from the official sources, plus the distinction that trips up almost every write-up: the core list is an extension-to-MIME-type map, not a codec whitelist.

The lists, at a glance

ExtensionIn core wp_get_mime_types()In WordPress.com "Accepted file types"
.mp4, .m4vYesYes
.movYes (with qt)Yes
.aviYesYes
.mpgYes (with mpeg, mpe)Yes
.wmvYesYes
.ogvYesYes
.3gpYes (with 3gpp)Yes
.3g2Yes (with 3gp2)Yes
.webmYesNot listed; named as needing a plugin
.mkvYesNot listed
.divxYesNot listed
.flvYesNot listed
.asf, .asxYesNot listed
.wmx, .wmYesNot listed
.vtt (captions)Yes, as text/vttYes, as "text captions for video"

The right-hand column is the WordPress.com Accepted file types page, which states: "WordPress.com restricts uploads to the file types listed on this page. Restricting file types protects your site from unsafe files."

For .webm specifically, that same page says: "If you need to upload a file extension not listed on this page, such as .mobile, .epub, or .webm, you can add support for these file types via a plugin—plugin-enabled sites run on more advanced infrastructure that can support file types not normally accepted." .mkv is simply absent from the page — it is not named as blocked, it is just not on the list.

The fifteen lines that define it in core

The self-hosted list is not a settings screen. It is a function, wp_get_mime_types(), and its video section is exactly fifteen lines:

// Video formats.
'asf|asx'                      => 'video/x-ms-asf',
'wmv'                          => 'video/x-ms-wmv',
'wmx'                          => 'video/x-ms-wmx',
'wm'                           => 'video/x-ms-wm',
'avi'                          => 'video/avi',
'divx'                         => 'video/divx',
'flv'                          => 'video/x-flv',
'mov|qt'                       => 'video/quicktime',
'mpeg|mpg|mpe'                 => 'video/mpeg',
'mp4|m4v'                      => 'video/mp4',
'ogv'                          => 'video/ogg',
'webm'                         => 'video/webm',
'mkv'                          => 'video/x-matroska',
'3gp|3gpp'                     => 'video/3gpp',
'3g2|3gp2'                     => 'video/3gpp2',

Two things follow directly from reading it:

  • The keys are patterns, not single extensions. mp4|m4v means both extensions resolve to the same video/mp4 type. mov|qt covers QuickTime's two historical extensions, and mpeg|mpg|mpe covers three.
  • Matroska appears twice across the table. mkv maps to video/x-matroska here, and mka maps to audio/x-matroska in the audio section — the video and audio sides of the same container are separate entries.

Why this is a MIME map, not a codec whitelist

This is where competitor articles blur two different things. Every entry above maps a file extension to a MIME type. Not one of them says anything about what is inside the container.

WordPress's core documentation does not state which video codecs are supported — there is no mention of H.264, HEVC, AV1 or VP9 anywhere in the core reference for these functions. So "WordPress supports MP4" means "WordPress will accept a file whose extension is .mp4 and label it video/mp4." Whether your visitors' browsers can decode the stream inside is a separate question that the core list does not answer.

Codecs do appear in WordPress.com's documentation, but with limits attached. Its recommended video settings page lists h.264 under "Format", and prefaces the whole table with the condition that it is for "highest compatibility with other WordPress editor blocks (other than the Video or VideoPress block) such as the Cover or Story blocks". Below the table it adds: "If you are uploading a video that will only be played in the Video block or shared via VideoPress links, videos encoded with the h.265 or VP9 codecs can be uploaded if desired." Strip either qualifier off and you have turned a conditional into a false blanket claim.

Separately, VideoPress states that "When you upload a video, VideoPress automatically converts it to MP4 format using H.264 video and AAC audio compression."

What the list is not: the enforced set

The map above is the starting point, not the final answer. Core passes it through get_allowed_mime_types(), which does two more things:

  1. It removes swf and exe unconditionally.
  2. It removes htm|html and js only when the current user lacks the unfiltered_html capability — meaning the allowed set varies by user role, not per site.

Multisite adds a third layer. The Network Admin settings screen has an "Upload file types" field, and its own note warns: "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!" The same page is candid that there is no fixed answer to publish: "The exact set of extensions varies between WordPress versions as new types are added; to see the current default for your installation, check the upload_filetypes value in the wp_sitemeta table or inspect wp_get_mime_types() in WordPress core."

That last sentence is why any list you read online, including this one, is a snapshot. Check your own installation for the authoritative set.

What to do when your file is not on the list

Convert the container before you upload. WordPress.com's own troubleshooting page gives this instruction directly: "If you have images and other files in unsupported formats that you want to use, then you should convert them to a valid file type before uploading."

MP4 is on both lists: core maps mp4|m4v to video/mp4, and the WordPress.com accepted types page lists ".mp4, .m4v (MPEG-4)". It is also the container VideoPress converts uploads into, per the quote above.

Try it right here

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

Loading tool…

This runs entirely in your browser tab, so the file is never uploaded anywhere on the way to being made uploadable. If you are going the other direction — a site where a plugin has enabled WebM — MP4 to WebM and WebM to MP4 handle the round trip. The rest of the converters are listed on all Clapr tools.

Platform-specific gotchas

  • The error text tells you which layer rejected you. WordPress.com shows "This file cannot be processed by the web server." and its help centre explains: "The file type is not supported. This message is not about the file's size." The editor's Audio block documentation quotes a different one for unsupported types: "Sorry, this file type is not supported here." Multisite's file-type gate produces a third: "Sorry, this file type is not permitted for security reasons".
  • Captions are a different list again. Core maps vtt to text/vtt and folds srt in with txt|asc|c|cc|h|srt as text/plain. WordPress.com's accepted types page lists only ".vtt (text captions for video)", while its VideoPress subtitle uploader accepts more: "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." If you need VTT, SRT to VTT converts it.
  • VideoPress publishes a shorter list, and it is open-ended. It covers MP4, MOV, WMV, AVI, MPG, OGV, 3GP and 3G2 — but the page introduces them with "VideoPress supports a wide range of video formats, including:", so absence from that list is not a rejection.
  • Plugins change the answer. Core's own documentation note says the mime-types filter "should be used to add, not remove, mime types. To remove mime types, use the 'upload_mimes' filter." Either direction, a plugin can move the goalposts on your install.

FAQ

Does WordPress support MKV files? Core's MIME table maps mkv to video/x-matroska, so a default self-hosted install recognises the extension. WordPress.com's accepted file types page does not list .mkv at all — it is not named as blocked, it is just not on that list.

Can I upload a WebM video to WordPress? On self-hosted WordPress, webm is in core's default map. On WordPress.com, the accepted file types page names .webm as an extension "not listed on this page" that can be added "via a plugin".

Why does WordPress say my file type is not permitted? Multisite networks return "Sorry, this file type is not permitted for security reasons" when a type is outside the network's allowed set. On WordPress.com, the equivalent message is "This file cannot be processed by the web server." — and the help centre is explicit that it "is not about the file's size."

What video format should I upload for the widest compatibility? WordPress's official documentation does not name one best video format. For WordPress.com specifically, its recommended settings name h.264 as the format, with the stated scope of best compatibility with editor blocks other than the Video or VideoPress block.

Is there a list of supported video codecs, not just extensions? Not in the core documentation. The mapping stops at the extension and container layer. For anything codec-specific on a hosted plan, check the official documentation for your platform.


More platform limits and format rules are collected in the limits hub. Lists quoted from WordPress core's function reference, the Network Admin settings documentation, and the WordPress.com help centre, checked 16 September 2026 — the core set changes between WordPress versions, so verify against your own installation.

Clapr team

Clapr team

WordPress Supported Video File Types: Two Official Lists | Clapr Blog