Featured Image Not Showing in WordPress

Almost always the theme just skips printing it on that template - here is the one-minute test that confirms it.

The words "Set but skipped" in bold white type over a soft red-and-black wash of light, the featured image for this post. Try this template
Photo by Олег Мороз on Unsplash

When a WordPress featured image will not show, it is almost always the theme not printing it on that template, and the upload itself is fine. Confirm it in three moves: check the image is actually set, switch to a default theme to isolate the theme, then clear your cache. That order finds the cause every time, and it usually lands on the first or second step.

That is the whole answer. The rest is the five things that hide a featured image, ranked by how often they bite, and the one test that tells theme from upload in under a minute. Setting the image is a separate job - how to add a featured image in WordPress covers the panel and the clicks. This post is for the moment after, when you have set it and the page shows nothing.

First, confirm the image is genuinely set

Before you blame the theme, rule out the boring cause: the image is not attached to the post you are looking at. Open the post in the editor, check the Featured image panel in the right sidebar under the Post tab, and confirm a thumbnail sits there. No thumbnail means it was never set, or it was set on a different post, or on a revision you did not publish.

This catches more cases than people admit. You set the image, got distracted, and updated a draft instead of the live post. Or you set it on the wrong post in a long list. Look at the panel on the exact URL that is broken, the live one the reader actually lands on.

Switch to a default theme - this is the real test

Here is the single move that splits the whole problem in two. Activate a default theme like Twenty Twenty-Five, then reload the post. If the featured image appears, your theme was the cause. If it still hides, the problem is the image, the cache, or a plugin.

Setting the image and seeing it are two different things, and the gap between them is your theme. WordPress stores the file and hands it to the theme. The theme decides whether to print it at the top of the article, show it only in the homepage grid, crop it to a strip, or skip it on the single post entirely. In most “not showing” reports the image is attached and the theme simply renders it elsewhere, or not at all - which is why the page you looked at came up blank.

If you cannot freely swap the live theme, do it on a staging copy, or open a private window so you are not testing against a cached page. The point is to see the post with the theme variable removed. Once you know which side of the line you are on, the fix is short.

The five causes, ranked by how often they bite

Most missing featured images trace to one of these. Work down the list - the top two cover the large majority.

#CauseTellConfirm it
1Theme does not output it on this templateShows in the grid, blank on the single postSwitch to a default theme; it appears
2Caching plugin or CDN serving a stale pageSet it, but the old page or no image persistsPurge cache, hard-reload, retest
3Set on the wrong post or an unpublished revisionPanel is empty on the live URLRe-check the Featured image panel on that exact post
4A page builder is overriding placementBuilder-designed post ignores the default spotCheck the builder’s template for the featured-image element
5A lazy-load plugin holding the image backImage loads late, or not at all on first paintExclude featured images from aggressive lazy loading

1. The theme shows it in the grid but skips the single post

This is the one I see most. The featured image appears on the blog index and category pages, then vanishes at the top of the article. That is intended behavior in plenty of themes - they treat the featured image as a list thumbnail and a share card, and they leave the article body alone.

The fix lives in the theme, not the post. Look in the customizer or the theme’s single-post options for a “show featured image” toggle. If you run a block theme, open the site editor, edit the Single template, and drop in a Post Featured Image block where you want the banner to print. That block is the theme-building tool that tells a template where to render whatever featured image a post has.

2. A cache is serving a stale page

You set the image, the page still shows the old one or shows nothing, and you swear you saved. A caching plugin (WP Rocket, W3 Total Cache, LiteSpeed) or your CDN is handing back a snapshot from before your change. Purge the full cache from the plugin, then hard-reload the post with the cache bypassed. The image usually snaps in immediately.

The share card is a separate cache living on the social platform, and it bites people who think the on-page image is broken when the link preview is what is stale. That is its own problem with its own fix - why your link preview is not showing walks the OG tags and the re-scrape.

3. It was set on the wrong post or a revision

Covered above, but worth repeating because it is invisible. The panel on the post you meant to edit is empty, while some other draft holds the image. Open the live URL’s post in the editor and look. If the panel is blank, you found it.

4. A page builder is overriding placement

If the post was built in Elementor, Divi, or a block-theme template, the builder owns the layout, and the default featured-image slot may simply not be in that layout. The image is set in WordPress; the builder is not printing it. Open the builder’s template for that post type and confirm there is a featured-image widget or element where you expect the banner. Add one if it is missing.

5. Lazy loading is holding it back

A lazy-load plugin defers images until they scroll into view, and an aggressive one can defer the featured image past the point where it should have painted, or break it on themes that output it in an unusual way. Exclude featured images from lazy loading in the plugin’s settings, or disable the plugin to test. If the image returns, you found the cause.

Two false leads: the Cover block and sizing

Two confusions send people down the wrong path here.

The first is the Cover block. A Cover block is a banner you drop inside the post body, with text laid over a picture. It is not the featured image, it never appears on a share card, and it will not show in your archive grid no matter what you do. If you added a Cover block expecting it to become the post’s thumbnail, that is the bug. Featured image vs cover image vs OG image untangles all three, because the names overlap and the editor does not help.

The second is sizing. A featured image that is set but invisible is a printing problem, and the file’s dimensions have nothing to do with it. Sizing controls how sharp the image looks once it shows; whether it shows at all comes down to printing. The image not appearing is the theme, the cache, or the wrong post - every time.

A quick checklist

Run this top to bottom when a featured image will not show:

  • Open the live post in the editor and confirm a thumbnail sits in the Featured image panel.
  • Switch to a default theme and reload - if it appears, the cause is your theme.
  • Purge the cache (plugin and CDN), then hard-reload the post.
  • If it shows in the grid but not the article, add a Post Featured Image block to the Single template or flip the theme’s featured-image toggle.
  • Check your page builder template for a featured-image element on builder-designed posts.
  • Exclude featured images from aggressive lazy loading, or disable the plugin to test.
  • If the share card is the stale part, that is a separate cache - re-scrape the URL.

Most of the time it ends at step two. The image was set correctly the whole time, and the theme just was not asked to print it on that view.

Once it is showing, the part WordPress will not do for you is make the image worth featuring - a good featured image reads as a thumbnail and survives the crop. That is what I built Lede for: export the WebP and drop it straight into the Featured image panel, working from presets at 1200×630 and a gallery of templates to start from, with a sharp one-click export every time. Make one, set it, and confirm it on the live post.