Soft 404s
Soft 404 checker for a whole site
A soft 404 is an error page with the wrong status: it says “not found” to the reader and 200 OK to the crawler. Ordinary broken-link checkers pass it, because all they read is the status.
Enter a domain. The crawl reads what each page that answered 200 says about itself, and lists the ones that say they are not there.
What you get
One row per page: the address, its title, its first heading and its word count, so you can see at a glance why it was flagged. The table exports as a CSV, and each address opens in the page inspector, which shows the stored response, its headers and every page that links to it.
That last part is what turns the finding into work. A soft 404 that nothing links to is a leftover. A soft 404 that forty pages link to is forty broken links your broken-link report is not showing you.
How a site ends up with them
Single-page applications. The server sends the same shell for every address and the router draws a “not found” screen in the browser. The status was decided before the app knew the page was missing.
A custom error page served as a normal page. A redirect from every missing address to /not-found, which then answers 200. The error handler has to set the status, not just show the template.
Everything redirects to the home page. A plugin or server rule that sends every unknown address to the front page. Google treats that as a soft 404 too, and the visitor is left wondering where the page went.
Deleted products and expired listings. The template still renders, with “this item is no longer available” where the content was.
Testing your own error handling
The quickest test needs no crawl. Ask for an address that cannot exist and read the status line:
curl -sI https://yourwebsite.com/this-page-should-not-exist-8347 | head -n 1404 or 410 is right. 200 means every mistyped link on your site is a soft 404. A 301 or 302 means missing pages are being redirected somewhere; the redirect chain checker shows where they end up.
Fixing them
The page is gone. Make the server answer 404 or 410 for it, keep the helpful error page as the body, and remove the internal links that lead there.
The page moved. Redirect the old address to the new one with a 301. Redirect to the page that replaced it, not to the home page.
The page is real and only sounds like an error. A page titled “Page not found: what to do” reads like one. Reword the title, or leave it and ignore the row.
It is a single-page app. Render missing routes on the server with a 404 status, or at the least add noindex to the not-found screen so it is not indexed as content.
What this check does not catch
It reads titles and first headings, so an error page with an ordinary title and the apology only in the body is missed. Empty and near-empty pages, the other kind of soft 404, are listed by the thin content check in the same scan, and identical error templates served at many addresses show up in duplicate content. Google's own verdicts, for the pages it has crawled, are in Search Console under Pages.
The crawl runs 37 checks in all, including real broken links with the pages that link to them.
Questions people ask
- What is a soft 404?
- A page that tells the visitor it does not exist while telling the browser everything is fine. The words say “page not found”; the HTTP status says 200 OK. Search engines trust the status first, so they keep crawling and sometimes indexing a page that is an error message.
- Why does Google report soft 404s?
- Because it compares what a page says with the status it sent. Search Console's Pages report lists “Soft 404” for pages Google decided are errors in disguise: an explicit not-found message, an almost empty page, or a redirect of every missing address to the home page.
- How does this check decide a page is a soft 404?
- From the title and the first heading of pages that answered 2xx. If either says the page is not found, missing, no longer available, or shows a bare 404, the page is listed. Body text is deliberately not read, because a perfectly good article about fixing 404 errors mentions them on every line.
- Should a missing page return 404 or 410?
- Either. 404 says not found; 410 says gone on purpose. Search engines treat both as a reason to drop the page, 410 slightly faster. What matters is that it is not 200. If the page moved, a 301 to its real replacement is better than either.
- How many pages does it check?
- Up to 5,000 pages per crawl, free, with no account.
Find the error pages that answer 200
Read next
- Near-duplicate content checker — pages on your own site whose text is 95% the same as another page, grouped, with the closest match named.
- Website spell checker — words an English dictionary does not know, across every page of the site, with how many pages use each one.
- Bulk schema markup validator — JSON-LD, microdata and RDFa on every page: what does not parse, and what a rich result requires that is missing.
- The free site crawler — the crawl all of these checks read from, and what else it records.