Soft 404: why a missing page must return a real 404 or 410

A soft 404 is a URL that tells visitors the page does not exist but returns a 200 OK status code. Google asks for meaningful status codes, so serve 404 or 410 for removed content. Single-page apps that cannot set status codes should redirect to a URL that returns 404, or add a noindex robots meta tag to error pages.

The rule: Return real 404/410 for missing pages and keep critical HTML under Googlebot's 2 MB fetch limit

Impact Evidence Applies to Last checked
Medium Official guidance Google, Bing Oct 30, 2026

Why it matters

Google asks for meaningful status codes so it knows whether a URL can be indexed, and soft 404s waste crawl. Since February 2026 Google documents a 2 MB limit for HTML and text files fetched by Googlebot for Search, with 15 MB as the general crawler default. Content past the cutoff is not seen.

How to do it

  1. Serve 404 or 410 for removed content instead of a 200 page that says 'not found'
  2. Check HTML size of your heaviest templates and move inline data or scripts out
  3. Place the main content early in the HTML document

Example

Response for a removed page
HTTP/1.1 410 Gone
Content-Type: text/html; charset=utf-8

Questions

Why are soft 404s bad for SEO?

A 200 status tells Google the URL is a real page, so it cannot tell whether the URL should be indexed and spends crawl on it. Every page that returns 200 is also sent to Google's rendering queue, while non-200 pages such as 404s might skip rendering.

How do I fix soft 404 errors in a single-page app?

Client-side routing often cannot return a real status code. Google suggests either redirecting with JavaScript to a URL that returns a 404 status, such as /not-found, or adding <meta name="robots" content="noindex"> to error pages with JavaScript.

What is Googlebot's file size limit?

Since February 2026, Google documents a 2 MB limit for HTML and supported text files fetched by Googlebot for Search, 64 MB for PDFs, and 15 MB as the default for its crawlers and fetchers. Content past the cutoff is not seen, so move inline data and scripts out of heavy templates and put the main content early in the HTML.

Sources

Change history

Date Change What changed
Oct 30, 2026 Added Added to the rulebook.

Checked against its sources every Monday. Only content changes are listed.