Blog

Soft 404 errors: what they are and how to fix them

A soft 404 is a page that tells visitors it doesn't exist, or has almost nothing on it, while the server reports success. Google spots the mismatch, treats the page as an error and leaves it out of search.

What a soft 404 is

Every response carries a status code. A missing page should answer 404 Not Found or 410 Gone; a working page answers 200 OK. A soft 404 is the bad combination: the status says 200, but the content says "not found", or is empty or so thin that it looks like an error page.

Google describes it as content that suggests an error returned with a 2xx status. In Search Console's Page indexing report these URLs are listed under Soft 404 as a reason the page isn't indexed.

What the page showsStatus codeResult
Real content200Can be indexed
"Page not found"404 or 410A normal 404, dropped from the index
"Page not found", empty or near-empty200Soft 404

Soft 404s cause two problems. Pages you want in search can be wrongly flagged and left out, and real error pages answering 200 keep getting crawled as if they were pages, which wastes requests on a large site.

The common causes

How to find them

Start in Search Console: Indexing → Pages, then open Soft 404 to see the example URLs. Search Console only shows a sample, so check the rest of your site too.

  1. Open a few of the listed URLs in a browser and note what each one shows.
  2. Check the status code each one really returns. Browsers hide it, so use a checker that shows the code and every redirect hop:
  1. Test your error page: request a URL that can't exist, such as /this-page-does-not-exist-123/. If it returns 200, every mistyped or deleted URL on your site is a soft 404.
  2. For listing pages, pull every URL from your sitemap with the Sitemap URL Extractor and look for categories and tags with no items.

The Website SEO Audit runs the made-up URL test for you as part of its site-wide checks.

How to fix each cause

The fix depends on whether the page should exist.

SituationFix
The page is gone and nothing replaces itReturn 404 or 410. Keep the friendly design; just change the status.
The page moved, or a close equivalent exists301 redirect to that specific page, not the homepage.
An empty category or search pageReturn 404 while it's empty, or add noindex to empty listing pages.
A product that is temporarily out of stockKeep it at 200 with full details and a clear stock message, so it isn't just "unavailable".
A real page that Google sees as emptyFix rendering, and check it with the URL Inspection tool's live test. Add enough content to be useful.

Google's own advice for truly missing pages is to return a 404. Google treats 404 and 410 the same way for indexing, so either is fine.

Returning a real 404

Most platforms already get this right for their built-in error page. Problems come from custom setups.

Apache: point the error document at a local path. A full URL makes Apache redirect to it, which loses the 404:

ErrorDocument 404 /404.html

Nginx: the same rule applies; use a path, and mark the page as internal:

error_page 404 /404.html;
location = /404.html { internal; }

WordPress: the theme's 404.php is served with a 404 status by default. Soft 404s usually come from a plugin that redirects all 404s to the homepage. Turn that option off, and handle moved pages with individual redirects instead.

Shopify: missing URLs return a 404 automatically. Soft 404s on Shopify are usually empty collections or discontinued product pages; redirect old products in Content → Menus → URL redirects (or Online Store → Navigation, depending on your admin version) to their closest replacement.

Single-page apps (React, Vue and similar): the server returns the same 200 shell for every URL. Either have the server return a 404 for routes it doesn't know, or, when the app finds no content, add <meta name="robots" content="noindex"> or redirect to a URL that does return 404.

Telling Google it's fixed

  1. Check every fixed URL again with the Bulk HTTP Status Code Checker, and confirm each returns the status you intended.
  2. In the Soft 404 report, click Validate fix. Google rechecks the affected URLs, which usually takes up to about two weeks.
  3. URLs that now return 404 move to "Not found (404)", which is expected and not a problem.

Questions

What is the difference between a soft 404 and a 404?

A 404 is a correct answer: the server says the page doesn't exist. A soft 404 is an error page that claims to be fine by returning 200, or a page so empty that Google treats it as an error. Real 404s are normal; soft 404s are the ones to fix.

Is soft 404 in Google Search Console bad for SEO?

It doesn't penalise the rest of your site. The flagged pages simply aren't indexed. It matters when the flagged pages are ones you want in search, or when thousands of error pages at 200 are using up crawling on a large site.

Why is a page with real content flagged as a soft 404?

Google judged it as empty or as an error. Check how Googlebot renders it with URL Inspection's live test: content loaded by JavaScript may be missing, or phrases like "not found" or "no results" may dominate a thin page. Add content or fix rendering, then validate.

Should I redirect 404 pages to the homepage?

No. Google commonly treats a redirect to an irrelevant page, such as the homepage, as a soft 404. Redirect a URL only when a page with the same purpose exists; otherwise let it return 404.