Adding Video to a WordPress Blog Post
WordPress will happily let you upload a video to your media library. Almost nobody should, and the reasons have nothing to do with disk space.
Host the video somewhere built for video and embed it. Do not upload it to WordPress. This is not about storage cost. A video host encodes several quality levels and switches between them as the viewer's connection changes; your web server sends one large file and hopes. That difference decides whether the video plays or buffers.
There is one exception, covered below, and it is narrower than people want it to be.
Embed from a video host
For any video with sound, dialogue or more than a few seconds of running time:
- Upload the video to your video host and set it to public or unlisted.
- Copy the video's page URL — the address you would share, not an iframe snippet.
- In the block editor, click into an empty block on a new line.
- Paste the URL and press Enter.
WordPress recognises URLs from supported services and converts the block into an embed with the correct player. If it stays as plain text, the URL was pasted into an existing paragraph rather than an empty block, or the service is not one WordPress recognises — in that case add the platform's specific Embed block from the inserter, or a Custom HTML block containing the iframe the host provides.
Do not paste an iframe into a paragraph. Use the Custom HTML block, which is what adding code to a WordPress page is for.
When self-hosting is acceptable
Upload to the media library only when all of these are true: the clip is a few seconds long, it has no audio, it is decorative rather than informative, and it is small enough that a mobile visitor would not mind downloading it.
For that case, use the Video block, upload the file, and in the block settings switch on muted, loop and playsinline, and switch off preload so the browser does not fetch the whole file before it is needed. A background loop set to autoplay without muting will simply be blocked by the browser.
Anything else — a tutorial, an interview, a product demo — goes on a video host, even if the video is private. Video hosts support domain-restricted playback for exactly this reason.
The speed problem, and the fix
A single embed typically pulls the player's JavaScript, its stylesheet and a poster image on page load, before anyone decides to watch. Put three embeds in one post and the page has three copies of that overhead.
The fix is a facade: render a static thumbnail with a play button, and load the real player only when the visitor clicks. Several performance plugins offer this, and some video hosts provide a lightweight embed of their own. It is the single most effective change you can make to a video-heavy blog, and it usually removes the video player from the render-blocking resources list entirely.
Two more habits matter:
- Reserve the space. The embed should occupy a fixed aspect ratio from first paint. If the player arrives late and pushes the text down, that is cumulative layout shift, and video embeds are one of its most reliable causes.
- Never autoplay with sound. Browsers block it, visitors leave, and it makes the page hostile to anyone browsing in public.
Accessibility and context
Captions are not optional. Every serious video host generates them; correct the machine transcript rather than accepting it, because names and technical terms are always wrong.
Write a short paragraph above or below the embed saying what the video covers. Search engines cannot watch it, and a fair share of readers will not either. For a long tutorial, a transcript or a summarised list of steps below the video is the difference between a post that ranks and a post that is just a link to a video.
Check it on a real connection
Publish, then open the post on a phone on mobile data, not on your desk over office broadband.
- Confirm the poster image appears without the text jumping.
- Press play and see how long it takes to start.
- Check the player controls are reachable with the keyboard.
- Turn captions on.
- Reload and confirm nothing autoplays with sound.
If the page is slow before the video even starts, the embed overhead is the cause and a facade will fix it — the wider set of causes is in speeding up a WordPress site. If the video itself buffers on a decent connection, you are self-hosting something that should be on a video host, and no amount of hosting upgrading changes that.
Frequently asked
- Only for very short, silent, decorative clips. A real video needs adaptive bitrate streaming so it degrades gracefully on slow connections, and your web server cannot provide that. It also has to serve the whole file to every viewer, which is the fastest way to exhaust a hosting bandwidth allowance.
- Check that the URL was pasted on its own line into an empty block rather than inside a paragraph of text, that the video is public or unlisted rather than private, and that no privacy or consent script is blocking the embed until permission is given.
- Yes, noticeably. A standard embed pulls in the player's scripts, styles and thumbnail on page load whether or not anyone presses play. Use a facade that loads a still image first and only fetches the player on click if the page has several videos.