Soft 404
Where you see it: Search Console → Indexing → Pages → Why pages aren’t indexed
Your server answered 200 OK for this URL, but what Google saw looked like an error page or had next to nothing on it, so Google treated it as missing and kept it out of search. The fix is to make the code and the content agree: a real 404, a redirect to a replacement, or a page with something on it.
Worth fixing, but first decide whether the page should exist.
On a post or product you want to rank, it stays out of search until Google sees real content. On a URL that is gone anyway, such as an unused tag, it is less urgent, but an honest 404 stops Google treating it as a page. Check Google’s screenshot first: a blank render and a thin page need different fixes.
Check the URL Search Console listed
Paste the URL from the report. The indexability checker reads the final status code, the page title, robots.txt, noindex and your sitemaps, and on WordPress it recognises archive and search pages from the body classes.
Indexability report
Enter a URL to see whether Google can crawl and index it, and which Search Console status any problem causes.
What each finding means in Search Console
The Page indexing report in Search Console names the reason a page is not indexed. This is the setting behind each reason, and the guide that fixes it on WordPress. For the full list, see Search Console Errors: Fixes for WordPress.
| What the checker finds | Search Console status | Fix guide |
|---|---|---|
| robots.txt Disallow rule matches the URL | Blocked by robots.txt | Blocked by robots.txt on WordPress: How to Fix |
| noindex in robots meta or X-Robots-Tag | Excluded by ‘noindex’ tag | Excluded by Noindex Tag in WordPress: How to Fix |
| Canonical points to another URL | Alternate page with proper canonical tag | Alternate Page With Proper Canonical Tag: Meaning |
| No canonical, duplicates exist | Duplicate without user-selected canonical | Fix Duplicate Without User-Selected Canonical |
| Conflicting canonicals or weak signals | Duplicate, Google chose different canonical than user | Fix Google Chose Different Canonical Than User |
| URL redirects elsewhere | Page with redirect | Page With Redirect: What It Means on WordPress |
| Returns 404 or 410 | Not found (404) | Fix 404 Errors in Search Console on WordPress |
| Error page that returns 200 | Soft 404 | Soft 404 Errors on WordPress: Causes and Fixes |
| Returns 5xx or times out | Server error (5xx) | Fix 404 Errors in Search Console on WordPress |
| Redirect loop or overly long chain | Redirect error | Fix 404 Errors in Search Console on WordPress |
| Nothing blocks it, but few links or thin content | Discovered – currently not indexed / Crawled – currently not indexed | Discovered – Currently Not Indexed on WordPress |
Reading the result
- HTTP status 200 with Looks like an error page that answers 200: the title reads like “Page not found”, so an error template went out without the 404 code. A soft 404 by definition.
- This is a WordPress search results page, or a tag or category archive: the URL is a listing, and an empty one explains the status.
- Nothing blocks indexing: the checker spots error pages only by their title, so a thin post with a normal title passes. Judge the content.
- HTTP status 404 or 410: the URL now says plainly that it is gone, so once Google recrawls it, it can no longer be a soft 404. Google treats the two codes alike.
- A redirect chain ending on your homepage: Google can read that as a soft 404. Aim it at the closest match instead.
The same tool with its full guide: Indexability Checker
Why it happens on WordPress
Google judges what it sees after rendering, not the status code alone. WordPress core sends a 404 for a post that doesn’t exist, but answers 200 for several kinds of empty page, and plugins add more.
Empty archives that core still answers with 200
Core returns 404 only when a request matches nothing. A category or tag with no published posts, an author who never published, and the blog page of a new site all answer 200 and print the theme’s “Nothing found” message.
Search pages that found nothing
A link to /?s=blue-widget answers 200 even when the search is empty, and Google names empty internal search results as a typical soft 404. Spam bots that publish links to searches can fill the report with them.
A not-found message with the wrong code
A plugin that sends every missing URL to your homepage, or to a “not found” page built as an ordinary WordPress page, turns each 404 into a redirect ending on 200. Google warns that redirects to an unrelated page may count as soft 404s.
Sold-out and discontinued WooCommerce products
A product page cut down to a title and “Out of stock” can read as empty. So can a shop category emptied by WooCommerce → Settings → Products → Inventory → Hide out of stock items from the catalog.
Pages that are mostly template
A heading above a form shortcode, a one-line thank-you page, or an attachment page holding one image, which sites installed before WordPress 6.4 may still have switched on. Google’s advice for a page that should exist is to add enough that it can’t pass for an error.
Content Googlebot never received
A blank render lands here too; Google lists a missing JavaScript file and a broken database connection among the causes. On WordPress, suspect a security or CDN rule blocking a page builder’s scripts, or a cache holding a broken copy.
How to fix it
Each URL here should end up as one of three things: a real page, a real 404, or a redirect. Decide which before you change anything.
1. Look at what Google rendered
In URL Inspection, click Test live URL, then View tested page. The Screenshot tab shows what Googlebot saw; More info lists resources that failed to load. Blank means blocking or rendering; complete but sparse means content.
2. Gone for good: send a real 404 or 410
Trash the post or product rather than leaving an empty shell, then confirm the final status reads 404 in the redirect checker. Rank Math’s Redirections module and Yoast SEO Premium’s redirect manager can send a 410 for a chosen URL instead.
3. Replaced: 301 to the nearest match
When a newer post, product or category covers the same thing, redirect the old address to it. Never use the homepage as a catch-all.
- Rank Math: turn on Redirections in Rank Math SEO → Dashboard → Modules, then add the rule in Rank Math SEO → Redirections.
- Yoast SEO Premium: Yoast SEO → Redirects, or the prompt it shows when you trash a post.
- Redirection plugin: Tools → Redirection, old path as source, new page as target.
4. Empty listings: take them out of search
Core won’t 404 an existing empty category, so noindex empty listings or delete unused terms, whose addresses then return 404.
- Rank Math: Titles & Meta → Global Meta → Noindex Empty Category and Tag Archives; Titles & Meta → Misc Pages → Noindex Search Results.
- Yoast SEO: search results are noindexed automatically; delete empty categories and tags, using the Count column under Posts → Categories and Posts → Tags.
5. Worth keeping: give the page something to say
Add what a searcher came for: details, the answer, a description, links to related posts. Keep a temporarily sold-out product live and marked out of stock, as Google recommends, with its description and alternatives. Drop “no results” wording from live pages.
6. Blank for Googlebot: unblock what the page needs
Allow the scripts and styles URL Inspection lists as failed, loosen the security or CDN rule that blocks them, purge page and CDN caches, and test the live URL again.
7. Check your own 404 template
Run https://example.com/zz-no-such-page/, using your own domain, through the redirect checker. If Final status reads 200 instead of 404, every mistyped link to your site becomes a soft 404.
Check the fix in Search Console
Confirm fixes on live URLs, then decide whether to ask Google to recheck the group.
- Run Test live URL: a kept page should show its real content in the screenshot; a removed one should report not found.
- Click Request indexing on the rewritten pages that matter most.
- Validation passes only if no URL Google rechecks still looks like a soft 404, and it stops with Failed at the first one that does. If you dealt with every listed URL, open Soft 404 in Indexing → Pages and click Validate fix; Google’s help puts a typical run at up to about two weeks.
- If you are leaving some alone, such as spam searches on /?s=, skip validation. The report moves each fixed URL as Google recrawls it anyway.
- URLs that now answer 404 move to Not found (404), redirected ones to Page with redirect. Both mean the fix worked.
Can RankHive fix this?
Partly. On posts and pages, RankHive can write the content a thin page is missing, or a 301 from a retired address to its replacement. Archives, search pages, products and theme status codes are beyond it.
What it writes, once you approve
- A rewrite or expansion of a thin post or page body.
- Links from related posts to a page you’re keeping.
- An exact-path 301 from a retired post’s address to its replacement.
What it can’t do here
- Make your theme send a real 404, or send a 410 itself.
- Noindex empty archives or search results; it can’t set noindex anywhere.
- Edit WooCommerce products or product categories.
- Unpublish, trash or delete a post.
- Change firewall, CDN, cache or security-plugin settings.
Every change is drafted next to the current value and waits for your approval. Each one written is logged in the Change Log, with Revert.
Check the rest of your site while you’re here
The free site check reads your public pages for titles, meta descriptions, headings, canonical tags and schema, and shows what needs fixing. If you sign up, RankHive reads your Google Search Console data every week, drafts the fixes, and writes the ones you approve to WordPress. Nothing changes on your site until you say yes.
Related issues
- Not found (404)Fix the 404s that had traffic or links; leave the rest.
- Crawled – currently not indexedWorth fixing for real posts; expected for archives and extras.
- Page with redirectUsually leave it; tidy your own links that still use the old address.
- URL Inspection toolNothing to fix: it’s the tool you diagnose and confirm fixes with.
Common questions
Is a soft 404 bad for SEO?
For a page you want in Google, yes: it won’t be indexed while Google reads it as empty. For a page that is gone anyway, the cost is wasted crawling of an address that should have said 404.
Why does Google call my page a soft 404 when it has content?
Usually because Google didn’t see the content. Open the live test screenshot in URL Inspection: blank means something blocked the render; if the content is there, the page probably reads like an error, with lines such as “no products found”.
Should I redirect soft 404 pages to my homepage?
No. Google’s redirect documentation says pointing many old URLs at one unrelated page may itself count as a soft 404. Redirect each to a close match, or return a 404.
Do empty category pages cause soft 404s?
They can. WordPress answers 200 for a category with no posts, showing only a “nothing found” message. Fill it, delete it, or noindex empty terms with Rank Math’s setting.
Sources
Checked against these pages on .
- Google Search Console Help: Page indexing report
- Google: How HTTP status codes affect Google’s crawlers
- Google Search Central: Troubleshoot crawling errors
- Google Search Central: Redirects and Google Search
- WordPress Developer Reference: WP::handle_404()
- Rank Math: Fix the soft 404 error
- WooCommerce: Products settings