301 vs 302 Redirects: Permanent and Temporary Explained
The difference between 301, 302, 307 and 308, Google's strong versus weak signal distinction, redirect methods...
Read
A 404 is the server's way of saying "there is nothing here". Two myths follow this code around in SEO: first, that 404s "penalise" a site; second, that redirecting all of them to the home page is the fix. Both are wrong.
The reality is simpler. A 404 is a normal, useful response. The real problem appears when the code and the content disagree — the page does not exist, yet the server returns 200. That is a soft 404, and it quietly eats your crawl budget.
404 (Not Found) is the best known member of the client error family (4xx). The server is saying the request was valid but there is nothing at that address.
Google's documentation describes the behaviour precisely:
The crawl budget guide adds a direct recommendation: return 404 or 410 for permanently removed pages. The reasoning is practical — a 404 is a strong signal to the crawler not to visit that URL again, whereas blocked URLs linger in the crawl queue much longer.
The short answer: not in themselves. A 404 is not a penalty mechanism — Google simply removes the URL from the index.
That does not mean you should ignore them. The real losses lie elsewhere:
So the question is not "there are 404s, is that dangerous?" but "was there value behind this particular 404?"
410 (Gone) means "this page has been permanently removed" — a more definitive statement than 404.
For SEO the practical difference is close to zero. Google's documentation groups the two together and the outcome is identical: the URL is removed from the index and crawl frequency drops. The crawl budget guide recommends either one.
| Criterion | 404 Not Found | 410 Gone |
|---|---|---|
| Meaning | Not found (no reason given) | Permanently removed |
| Google's behaviour | Removes from the index | Removes from the index |
| When to choose it | The page might return, or you are unsure | The removal is final |
| Setup | Usually the CMS default | Configured manually |
Practical advice: use 410 where you are certain, 404 everywhere else. It is not worth rebuilding a system just to serve 410s — the outcome is almost the same.
A soft 404 is a page that returns status code 200 while its content says "this does not exist". It is not a code the server sends; it is a label Google applies after comparing the code with the content.
Google's crawl budget guide for large sites states it plainly: "soft 404 pages will continue to be crawled, and waste your budget."
The usual sources:
The fix: align the code with reality. If the page does not exist, return 404 at the server level rather than merely changing the text.
This is the most frequently asked practical question. The decision tree is simple:
When you do decide to redirect, follow the rules in the 301 redirect guide: direct, chain-free and relevant in content.
A good 404 page keeps the visitor on the site. It should contain:
The critical technical condition: this page must return a 404 status code. A beautifully designed 404 page that returns 200 is exactly what a soft 404 is.
To check:
curl -I https://example.com/this-page-does-not-exist
# expected: HTTP/2 404
| Source | What it shows | Its strength |
|---|---|---|
| Search Console → Pages report | The "Not found (404)" and "Soft 404" categories | What Google actually saw |
| Server logs | Every 404 request, with frequency | The most complete source; separates bots from users |
| A site crawler (e.g. Screaming Frog) | Broken links inside the site | Finds internal problems quickly |
| Analytics | Visitors landing on the 404 page | Shows the real user impact |
The most valuable combination: Search Console plus server logs. The first gives you Google's view, the second the real traffic.
Fixing every 404 is neither possible nor necessary. In priority order:
1. URLs with external links. If a page that earned links from other sites was removed, that is a direct loss — 301 it to the closest match.
2. URLs still receiving traffic. Removed pages that still show impressions in analytics or Search Console.
3. URLs linked from within the site. These are the easiest fix: update the link and no redirect is needed at all.
4. URLs still in the sitemap. A removed page has no business being there.
Not worth fixing: invented URLs that never existed, addresses probed by spam bots (/wp-admin, /.env and the like), and old test pages. For those, 404 is precisely the right answer.
1. Redirecting every 404 to the home page. The most repeated mistake of all. Google frequently classifies irrelevant redirects as soft 404s.
2. Serving the 404 page with a 200 code. Right design, wrong code — the result is a soft 404.
3. Keeping removed pages alive with noindex. The crawl budget guide advises against it: the page still has to be crawled and then discarded, which wastes crawling time. For a removed page, 404/410 is cleaner.
4. Never cleaning the sitemap. If removed URLs stay in it, Google keeps rechecking them.
5. Leaving broken internal links in place. Fixing the link is better than building a redirect around it.
The number alone says nothing. What matters is what those URLs are: if they are real pages that used to earn traffic and links, prioritise and redirect them. If they are invented addresses or bot probes, 404 is the correct answer.
No — it is unnecessary and meaningless: the 404 code already tells Google the page will not be indexed. noindex only makes sense on pages that return 200.
The difference is very small. Google removes the URL from the index either way. A 410 states the intent more clearly, but it is not worth reworking your whole system for.
If the product will return, keep the page and show an "out of stock" status (200 is correct here, because there is real content). If it is gone for good, 301 to the closest alternative or return 404.
Open the "Soft 404" category in the Search Console Pages report. Then run the URL through the URL Inspection tool: you will see a 200 code with empty or "not found" content.
The difference between 301, 302, 307 and 308, Google's strong versus weak signal distinction, redirect methods...
Read
What HTTP status codes are, what the five families mean and how Google interprets them: indexing, canonical si...
Read
How to connect entities with JSON-LD: @id references, the @graph structure, sameAs corroboration, Organization...
Read