By SitemapFixer Team
Updated September 2026

Soft 404 Errors: What They Are and How to Fix Them

Check your sitemap for 404s and redirects freeFind My Sitemap

Short answer: a soft 404 is a URL that answers 200 OK but shows a page that looks like an error, or has no main content. Google treats it as missing and keeps it out of search. Search Console lists these URLs as “Soft 404” under Indexing > Pages. The fix depends on the page: send a real 404 or 410 if it’s gone, a 301 if it moved, and if it’s a real page, find out why Google saw it as empty.

Soft 404 vs 404: What’s the Difference?

The difference is the status code. A real 404 tells browsers and crawlers the truth: nothing is here. A soft 404 says “success” while the page itself says “not found” (or shows nothing useful). Google has to guess from the content, and when it guesses “error page,” you get a soft 404.

Real 404 (or 410)Soft 404
Status code404 or 410200 OK
What the page showsA “not found” pageAn error message, an empty page, or a page missing its main content
What Google doesRemoves the URL from the index if it was indexed, and crawls it less over timeLeaves the URL out of search
Search Console labelNot found (404)Soft 404
Is it a problem?No, if the page really is goneYes. The code and the page disagree

404 or 410? Google’s documentation says all 4xx codes except 429 are treated the same way. So in Google Search, a 410 does not remove a page faster than a 404. Use the one that’s accurate: 410 when you removed the page on purpose, 404 for everything else.

Why Google Flags a Page as a Soft 404

Google’s own list of typical causes is short: an empty internal search results page, a broken database connection, a missing server-side include file, or a JavaScript file that didn’t load. On real sites, those show up as a handful of patterns:

  • A custom error page that returns 200. The page says “Page not found,” but the server config sends it with a success code.
  • Deleted items kept alive. A removed product or post shows “no longer available” at its old URL, still with a 200.
  • Empty listings. Search results with no matches, or a category or tag page with zero items.
  • Mass redirects to the home page. Google’s site-move guide warns that sending many old URLs to one unrelated page, such as the home page, “might be treated as a soft 404.”
  • Real pages that render blank for Googlebot. Google’s docs point to resources that can’t load: scripts or CSS blocked by robots.txt, too many resources, server errors, or slow and very large files. If the main content depends on them, Google may see an empty shell.
  • Stripped-down pages. An out-of-stock product page reduced to the words “out of stock” can look like an error page. Keep the description, photos and details, and state the availability clearly.

How to Find and Confirm Soft 404s

1. Open the report. In Search Console, go to Indexing > Pages. Under “Why pages aren’t indexed,” click “Soft 404” to see example URLs. Look for a shared pattern, such as one template (product pages, search results, tag archives).

2. Check the status code yourself. A soft 404 always starts with a 200. One command settles it:

curl -sI https://example.com/old-product | head -1
# HTTP/2 200  -> the server says "fine" (soft 404 territory)
# HTTP/2 404  -> a real 404; Search Console will list it as "Not found (404)"

3. See what Google saw. Inspect one URL in Search Console, click Test live URL, then View tested page. Google’s help recommends exactly this: the screenshot and HTML show how Googlebot rendered the page. If the main content is missing there, the problem is rendering, not your text.

4. Sort each group into one of three cases, below. The right fix depends on whether the page should exist.

How to Fix a Soft 404

Case 1: The page is gone, with no replacement

Return a 404 or 410. You can still show a friendly, branded error page with search and links; just make sure it’s served with the error code, not 200. Then remove the URL from your sitemap.

Case 2: The content moved

Add a 301 redirect to the specific new URL, such as the replacement product or the updated article. Don’t send everything to the home page; that pattern is itself a soft 404 risk.

Case 3: The page is real and should be indexed

Make the main content reach Googlebot. Unblock any scripts and CSS the page needs in robots.txt. Put the main content in the server-rendered HTML where you can, or make sure client-side rendering works without errors. Fix failing API or database calls. Remove error-like messages that flash during loading. For thin listings, add real content, or treat them as not found until they have items.

Server and Framework Fixes

Apache

Point ErrorDocument at a local path. The Apache docs warn that a full URL makes the server send a redirect instead, so the client never gets the 404 code.

# Good: keeps the 404 status
ErrorDocument 404 /404.html

# Bad: Apache answers with a redirect, not a 404
ErrorDocument 404 https://example.com/404.html

Nginx

A plain error_page keeps the 404. The =200 form rewrites the code to success, which is exactly how a soft 404 is made.

# Good: custom page, 404 status kept
error_page 404 /404.html;

# Bad: turns every 404 into a 200
error_page 404 =200 /404.html;

Next.js (App Router)

Call notFound() when a record doesn’t exist. One catch from the Next.js docs: the 404 status only sticks if the response hasn’t started streaming. Streaming starts when a loading.tsx fallback renders or a Server Component suspends inside a Suspense boundary (a loading.tsx wraps the whole page in one). After that the status is already 200. Next.js then adds a noindex tag, so the URL won’t be indexed, but some crawlers still label it a soft 404. So call notFound() before any await that may suspend, or reject unknown slugs in proxy.ts.

// app/products/[slug]/page.tsx
import { notFound } from 'next/navigation';

export default async function Product({ params }: { params: Promise<{ slug: string }> }) {
  const { slug } = await params;
  const product = await getProduct(slug); // your data call
  if (!product) notFound(); // real 404 only if this route has no loading.tsx
  return <ProductView product={product} />;
}

WordPress

WordPress sends a 404 for missing posts by default. Soft 404s usually come from a plugin or theme setting that redirects every 404 to the home page. Turn that off, and add 301s only for URLs that have a real replacement.

Empty Search and Category Pages

Internal search results are the classic case. A common approach is to keep them out of crawling with a robots.txt rule such as Disallow: /search. Pick one method, though: Google can’t see a noindex tag on a URL that robots.txt blocks. For an empty category, either add items and a useful intro, return a 404 until it has products, or add a noindex tag and leave it crawlable.

After You Fix It

Re-run the curl check on a few URLs from each group. Then open the Soft 404 issue in the Page indexing report and click Validate fix, which asks Google to recheck the listed URLs. Google doesn’t promise a date, and the count only drops as it recrawls. Keep only live, indexable pages in your sitemap while you wait.

Soft 404 FAQ

What does “Soft 404” mean in Google Search Console?

Google fetched the URL, got a 200 status, and judged the content to be an error page or empty. It excluded the URL from search. Search Console’s help recommends a real 404 for pages that are truly not found, and more on-page information for pages that are real.

Is a soft 404 bad for SEO?

It’s not a penalty. The affected URL just won’t be indexed, so if it’s a real page you lose its traffic. On large sites there’s a second cost: Google’s crawl budget guide lists soft 404 pages among the things that waste crawling, and says to return a 404 when a page no longer exists.

Why is a real page marked as a soft 404?

Usually because Google didn’t see its main content: rendering failed, key resources were blocked or slow, or an error message showed up while the page loaded. The live test’s “View tested page” screenshot shows you what Google got.

Will the Soft 404 count go down on its own?

Only after Google recrawls each URL and sees the fixed response. Validating the fix asks Google to recheck, but it doesn’t speed up the index by a set amount.

Check Your Sitemap

Soft 404s often sit next to other broken URLs in a sitemap: real 404s, redirects, and pages with a noindex tag. The free sitemap finder reads your robots.txt, loads your sitemap, and tests 30 of its URLs for those problems. It checks status codes and tags, not what the page says, so confirm suspected soft 404s with URL Inspection.

Find 404s and redirects in your sitemap
Free - finds your sitemap and tests 30 URLs live
Find My Sitemap Free

Related Guides