Soft 404s: missing pages that answer 200 OK
A soft 404 is a page that tells visitors it does not exist, or shows next to nothing, while the server answers 200 OK. Make missing pages answer 404, or 410 if they are gone for good, and redirect a page that moved to the page that replaced it, never to the home page. Your friendly not-found page can stay; only its status code changes.
Why it matters
Google judges a page by its content as well as its status code. When a page answers 200 but its content looks like an error, an empty page or an error message, Search Console reports a soft 404, and its Page indexing report lists Soft 404 among the reasons pages are not indexed. Google's advice is to return a 404 for pages that really are not found, and to add information to a page it misjudged.
A real 404 does no harm. Google's help on 404 errors says that, in general, they do not hurt a site's indexing or ranking. A URL that answers 404 or 410 is dropped from the index and crawled less and less often, and Google currently treats 410 the same as 404. Its crawl budget guide, written for very large sites, says soft 404 pages go on being crawled and waste that budget.
Sending missing pages to the home page is not a fix. Google lists it among the things not to do for missing pages, and its site-move guide warns that redirecting many old addresses to one irrelevant page, such as the home page, can confuse visitors and may be treated as a soft 404.
When every made-up address on a site answers 200, every mistyped link and every removed page looks like a working page. Tools that judge a link by its status code, our own broken-link check included, cannot tell a dead link from a live one there. Apache's documentation makes the same point about error pages served through a redirect: the client never receives the error code, which confuses robots that use it to decide whether a URL is valid.
SERPCompass rates both findings as warnings. Pages that say they do not exist are counted one by one; a site whose missing addresses answer 200 is one finding for the whole site.
The audit findings this guide fixes: Soft 404 pages (an error page that returns 200); Missing pages answer 200 instead of 404.
Find every page with this problem
Run the free scan on your domain. On every page it crawls that answers 200, it reads the title and the first H1 headings for words that say the page does not exist, such as "Page not found" or "Error 404", in English and more than ten other languages, and flags the page when its main content, without the menus, header and footer, has fewer than 200 words. It also asks your site once for an address that cannot exist, /serpcompass-check- followed by a code and /no-such-page, unless your robots.txt disallows it. It follows any redirect, flags the site if the final answer is 200 and names the page that answered, such as your home page; crawled pages with the same text as that answer are flagged too. The scan shows your most urgent findings with the number of pages each affects; the Gap Report and a SERPCompass workspace list the pages. To test an address yourself, run curl -sI followed by it: the first line of the reply is the status code, and -L follows redirects to the end. In Google Search Console, the Page indexing report lists the URLs Google judged to be soft 404s.
How to fix it on your platform
WordPress (no SEO plugin)
- WordPress answers an address that matches no post, page or archive with a 404 status and your theme's 404 template (
404.php, or its HTML counterpart in a block theme). Search results pages are the exception: they answer 200 even when nothing matches. - If the scan reports that your missing pages answer 200, something has overridden WordPress: a plugin can take over its status handling through the
pre_handle_404filter, and a redirect plugin can send missing addresses elsewhere. Deactivate plugins one at a time and test a made-up address again until it answers 404. - When you delete a post that has a replacement, redirect its address to the replacement with an SEO plugin's redirect manager (below) or your web server; when it has none, let it answer 404.
Sources: WP::handle_404() (WordPress developer reference); Template hierarchy (WordPress theme handbook).
WordPress with Yoast SEO
- When you trash a post, Yoast SEO Premium asks what should happen to its address: redirect it to another URL or serve a 410 Content Deleted. Redirect only to a page that replaces the post; otherwise choose 410.
- For an address that is already gone, open the Redirects section under Yoast SEO, choose 410 Content Deleted as the Redirect Type, enter the address under Old URL and click Add redirect.
- Delete, from the same Redirects screen, any redirect that sends removed pages to your home page.
Sources: What does the Redirect Manager in Yoast SEO do? (Yoast); How to redirect a post or page in Yoast SEO Premium (Yoast).
WordPress with Rank Math
- With the Redirections module on, go to Rank Math SEO > Redirections and click Add New. For a page removed with no replacement, choose the maintenance code 410 Content Deleted instead of a redirect type, and save.
- In Rank Math SEO > General Settings > Redirections, Fallback Behaviour decides what happens when a redirect's destination is not found. Choose the 404 option rather than the home page or a custom URL.
- To see which old addresses people still request, turn on the 404 Monitor module in Rank Math SEO > Dashboard (it needs Advanced Mode). Rank Math SEO > 404 Monitor then lists the addresses that answered 404 with their hits: redirect the ones that have a replacement, most visited first.
Sources: Setting up redirections (Rank Math); Rank Math general settings (Rank Math); How to monitor 404 errors with Rank Math (Rank Math).
Shopify
- Shopify shows your theme's 404 template (
templates/404.json) to visitors who enter an address that does not exist. Make it say clearly that the page could not be found and offer a way on: links to popular pages, a search bar, the home page or a collection. - When you delete a product or page that has a replacement, go to Content > Menus, click View URL Redirects, then Create URL redirect, and send the old address to the replacement. A redirect only works on an address that no longer loads a page.
- If your store has a redirect from
/404to/, delete it: Shopify says it can stop the theme editor from showing your 404 page.
Sources: 404 template (Shopify.dev); URL redirects (Shopify Help Center).
Wix
- To make the not-found page helpful, open your editor, click Pages & Menu, then Add Menu Item, New Page and (404) Error Page. Hover over a template, click Add Page, customize it and publish. Wix needs a premium plan for this.
- Go to SEO & GEO in your site's dashboard, scroll to Tools and settings and click URL Redirect Manager. Hover over any redirect that sends a removed page to your home page: click Edit to send it to a page that replaces it, or the Delete icon if there is none. A deleted redirect cannot be recovered.
Sources: Customizing your 404 error page (Wix Help Center); Setting up a 301 redirect for a page on your site (Wix Help Center).
Squarespace
- Open the Pages panel, scroll to the bottom, click System Pages, then 404 Page, and choose System default or a custom page you made in the Not linked section.
- A custom 404 page is also an ordinary page at its own address, and Squarespace says it may trigger a Soft 404 alert in Search Console. Its two fixes: use the System default page, or hide the custom one from search engines. To hide it, hover over it in the Pages panel, click the gear icon, open the SEO tab and switch on Hide page from search results.
Sources: Creating a custom 404 page (Squarespace Help Center); The Pages panel (Squarespace Help Center); Hiding your site from search results (Squarespace Help Center).
Apache
- Give the error page as a local path:
ErrorDocument 404 /404.html. Never as a full address such ashttps://www.example.com/404.html: Apache then answers with a redirect, and the visitor and crawlers never receive the 404. - Remove rewrite or redirect rules that send every unknown address to the home page; Google asks you not to redirect missing pages there.
Sources: ErrorDocument directive (Apache HTTP Server documentation); 404 (Page Not Found) errors (Search Console Help).
NGINX
- Use
error_page 404 /404.html;, which keeps the 404 status. - Remove
=200from anerror_pageline, as inerror_page 404 =200 /index.html;: it changes the status to 200. An error page given as a full address is answered with a 302 redirect instead. Both turn missing pages into soft 404s.
JavaScript apps with client-side routing
- Have the server answer addresses your app has no page for with a real 404 where you can; Google asks for a meaningful status code, like 404 for a page that could not be found.
- Where the router decides in the browser, Google gives two ways to avoid soft 404s: send the browser to an address your server answers with 404, such as
/not-found, or add<meta name="robots" content="noindex">to the error view with JavaScript.
Source: Understand the JavaScript SEO basics (Google Search Central).
Examples
-
Bad
GET /products/blue-teapot HTTP/1.1 200 OK <title>Page not found | Example Store</title>The page says it is missing while the server says all is well: a soft 404.
-
Good
GET /products/blue-teapot HTTP/1.1 404 Not Found <title>Page not found | Example Store</title>The same friendly page, with the status that matches it.
-
Bad
/products/blue-teapot 301 -> / (200)A removed product sent to the home page. Google lists this among the things not to do.
-
Good
/products/blue-teapot 301 -> /products/blue-teapot-2 (200)A product that was replaced goes to its replacement.
-
Bad
ErrorDocument 404 https://www.example.com/404.htmlA full address makes Apache answer with a redirect, so the 404 never arrives.
-
Good
ErrorDocument 404 /404.htmlA local path: visitors see your page, and the answer is a 404.
-
Bad
error_page 404 =200 /index.html;=200turns every missing address into a page that answers 200. -
Good
error_page 404 /404.html;Your own not-found page, served with the 404 status.
Common mistakes
- Sending every missing address to the home page, with a plugin, a catch-all redirect rule or a CDN rule.
- Pointing Apache's
ErrorDocumentat a full address, or NGINX'serror_pageat an address or a=200response. - Keeping a page for a discontinued product or past event with only a line saying it is no longer available. Redirect it to a replacement, let it answer 404 or 410, or give it content worth a visit.
- Making the custom not-found page an ordinary, indexable page at its own address, which Search Console then reports as a soft 404.
- Blocking missing pages in robots.txt. Google asks you not to; let them answer 404.
- Checking only in a browser. The friendly page looks the same whatever its status code: check the status with
curl -sIor the Network panel of your browser's developer tools.
Questions and answers
Do 404 errors hurt my Google rankings?
Not in general. Google says 404s do not harm a site's indexing or ranking. A URL that answers 404 is dropped from the index and crawled less often over time. The 404s worth fixing are links on your own pages that lead to them, and old addresses of pages that moved, which should redirect to the new page.
Should I redirect missing pages to my home page?
No. Google lists redirecting missing pages to the home page among the things not to do, and its site-move guide says that sending many old addresses to one irrelevant page, such as the home page, may be treated as a soft 404. Redirect a page that moved to the page that replaced it, and let a page that is gone answer 404 or 410.
Should a deleted page return 404 or 410?
Either works. Google currently treats 410 the same as 404: both say the page does not exist, and the URL is removed from the index. Use 410 if you want to say the removal was deliberate. The redirect managers of Yoast SEO Premium and Rank Math offer it as 410 Content Deleted.
Why does Search Console report a soft 404 for a page that exists?
Google judged its content to look like an error or an empty page, for example because it has very little text or says something is unavailable. Add the content the page should have, then run the URL Inspection tool's live test and open View tested page to see the page as Google renders it. If the page really is gone, let it answer 404.
How do I check which status code a page returns?
Run curl -sI followed by the address: the first line of the reply shows the status, and adding -L follows redirects to the end. In a browser, open the developer tools, choose the Network panel and reload the page: the Status column shows the code of each request.
More guides
- Broken links to pages that answer an error
- Redirect chains, loops and other redirect problems
- Pages blocked from Google by noindex or robots.txt
- Thin, duplicate and near-duplicate pages
- All guides
- Free tools: checks for robots.txt and llms.txt that need no account.
Sources
- How HTTP status codes, and network and DNS errors affect Google Search (Google Search Central)
- 404 (Page Not Found) errors (Search Console Help)
- Page indexing report (Search Console Help)
- Site moves with URL changes (Google Search Central)
- Understand the JavaScript SEO basics (Google Search Central)
- Optimize your crawl budget (Google Crawling Infrastructure)
- Network features reference (Chrome for Developers)
- ErrorDocument directive (Apache HTTP Server documentation)
- error_page directive (nginx documentation)
- WP::handle_404() (WordPress developer reference)
- Template hierarchy (WordPress theme handbook)
- What does the Redirect Manager in Yoast SEO do? (Yoast)
- How to redirect a post or page in Yoast SEO Premium (Yoast)
- Setting up redirections (Rank Math)
- Rank Math general settings (Rank Math)
- How to monitor 404 errors with Rank Math (Rank Math)
- 404 template (Shopify.dev)
- URL redirects (Shopify Help Center)
- Customizing your 404 error page (Wix Help Center)
- Setting up a 301 redirect for a page on your site (Wix Help Center)
- Creating a custom 404 page (Squarespace Help Center)
- The Pages panel (Squarespace Help Center)
- Hiding your site from search results (Squarespace Help Center)
Start with a free scan of your site.
Two to five minutes, no account. You get your three most urgent findings, and the exact count of everything else.