You added a product demo or a welcome clip to a page, it played in the editor, and now a customer says they only see a black box. Or the play button spins and nothing happens. Or the video works on your laptop and not on your phone.
Sorting out a WordPress video not playing starts with one question, and it is not “which plugin?” It is “where does this video actually live?” A file uploaded to your own media library and a YouTube or Vimeo embed fail for completely different reasons, and the checks for one are useless for the other. So this guide is split in two. Work out which kind you have, then go straight to that half.
Which kind of video is it?
Open the page in the editor and click the video.
- Self-hosted: the block is a Video block, or a page builder video widget, and the source is a file ending in
.mp4,.mov,.webmor similar, with an address on your own domain under/wp-content/uploads/. - Embedded: the source is a link to YouTube, Vimeo, Facebook or another platform. WordPress turns that link into an iframe, a window onto the other site’s player.
If you cannot tell, view the page in a browser, right-click near the video and choose Inspect. A <video> tag means self-hosted. An <iframe> with youtube.com or player.vimeo.com in its address means embedded.
Part one: a self-hosted WordPress video not playing
The file format is the most common culprit
Browsers do not all play the same video formats. The safest choice for the web is an MP4 file using H.264 video and AAC audio, which current major browsers play. The trouble is that a file can end in .mp4 and still use a different codec inside, and phones increasingly record in HEVC (also called H.265) by default. An HEVC video may play perfectly on the iPhone that recorded it and show a black frame, or sound with no picture, in another browser.
Files ending in .mov straight from a phone or camera are the usual offenders. The fix is to re-export the video as MP4 with H.264 video. Most desktop video editors and free converters offer this as a standard preset, often labelled “web” or “H.264”. Upload the new file and replace the old one in the block.
The file is too large for the server, or for the visitor
If the upload itself failed or stopped partway, WordPress may have saved a broken file. Check the file size in the media library against the original. If the upload keeps failing, your hosting limit is the likely cause; see our guide on the maximum upload size in WordPress.
Even when the upload works, a very large file makes visitors on mobile data wait a long time before anything plays. A short page video rarely needs to be more than a modest resolution. Compress it before uploading rather than hoping the server copes.
Autoplay is blocked by the browser
If the complaint is “the video does not start by itself”, that is usually the browser working as designed. Chrome, Safari and Firefox block autoplay with sound in most situations. A video set to autoplay will generally only start on its own if it is also muted. On iPhones, a background video also needs to be set to play inline, otherwise it may try to open full screen or not start at all. In the WordPress Video block, the settings panel has toggles for Autoplay, Muted, Loop and Play inline; page builders have similar switches.
A security or hotlinking rule is blocking the file
Some hosts and security plugins block direct requests to media files from other domains, or treat repeated partial requests as suspicious. Browsers stream video in pieces using range requests, so a strict rule can stop playback after the first few seconds. If the video plays when opened directly in a new tab but not inside the page, or stops at the same point every time, ask your host whether hotlink protection or a firewall rule applies to .mp4 files.
Part two: an embedded video not showing
The video owner turned off embedding, or made it private
YouTube and Vimeo let the uploader decide whether a video may be embedded on other sites, and whether it is public, unlisted or private. A private video, or one with embedding disabled, shows an error message inside the player instead of the video. If you see “Video unavailable” or a similar message inside the frame, open the same video on YouTube or Vimeo directly. If it plays there but not on your site, the embed setting is the likely reason, and it has to be changed by whoever owns that channel.
A cookie consent tool is holding it back
This one is confusing because the video appears to be simply missing. Cookie consent plugins often block third-party iframes, including YouTube, until the visitor accepts marketing or “media” cookies. Visitors who dismissed the banner, or who have not interacted with it yet, see a blank space or a placeholder. You, having accepted months ago, see the video.
Test in a private window. If the video appears only after accepting cookies, it is behaving as configured. Many consent tools can show a placeholder with a short message and a button to load the video, which is far better than an unexplained gap.
The embed link was pasted in the wrong form
WordPress turns a plain YouTube or Vimeo address on its own line, or in an Embed block, into a player. A link pasted into the middle of a paragraph stays a link. A shortened link from a share menu usually works, but a link copied from a playlist page or a search results page sometimes does not. When in doubt, use the plain watch address of the single video in an Embed block.
Mixed content or a strict security header
An old embed code that starts with http:// may be blocked on an HTTPS site. Some security plugins also add a Content-Security-Policy header that limits which outside sites may appear in frames. If the browser console shows a message mentioning “frame-src” or “Refused to frame”, that header is the cause, and the YouTube or Vimeo domain needs adding to its allowed list. If the console shows a different message you cannot place, our map of common WordPress errors may help you name it.
When it works in one browser and not another
For self-hosted files, this usually comes back to the codec, so re-check the format section. For embeds, browser extensions are the usual explanation: ad blockers and privacy extensions block YouTube’s player scripts on some sites. Try the page with extensions turned off before changing anything. If layout or styling also differs between browsers, our guide on why a site looks different from one browser to the next covers that wider problem.
What to note down before asking anyone for help
- The page address and where on the page the video sits.
- Whether it is self-hosted or embedded, and the file name or video link.
- Which browsers and devices fail, and which work.
- Exactly what appears: black box, spinner, error text inside the player, or nothing at all.
- Any red messages in the browser console, copied as text.
- Whether a cookie banner, security plugin or speed plugin was added or changed recently.
This list matters more than it seems. “The video is broken” can take an hour to reproduce. “The self-hosted MP4 shows a black frame in Firefox, plays in Safari, recorded on an iPhone” can be answered almost at once. If you are passing this to someone else, writing up a fault so a developer can act on it explains which details save the most back-and-forth.
Should you host video on your own site at all?
For most small business sites, uploading long videos to your own hosting is the harder path. Video files are large, shared hosting plans are not built to stream them to many people at once, and you take on the format questions above. Putting the video on YouTube or Vimeo and embedding it moves the encoding and delivery to a platform designed for it, at the cost of their branding and, on YouTube, suggested videos at the end.
Short, silent background clips are the exception. They are small, they need to autoplay muted, and a self-hosted MP4 often suits them better than an embed.
When this stops being a quick fix
If the file is a correct H.264 MP4, embeds are allowed, consent is not the issue, and the video still will not play, the cause is likely in the theme, a page builder widget or a server rule. That is the point where a technician reading the console and server responses will find it faster than more trial and error, and video faults like this one are covered by our wordpress bug fixing service, priced from ₹1,499 per incident onwards.
Next time a video on your site will not play, start with the one question this guide opened on: is the file yours, or someone else’s player? Most video problems answer themselves once that is settled.
Next in this series: WordPress Buttons Not Clickable? How to Find the Cause