A 404 means the server understood the request perfectly and found nothing at that address. Unlike most errors, it is not a malfunction — it is a correct answer to a question about something that does not exist.
That is why "fix all your 404s" is bad advice. Most 404s are harmless and some are actively desirable. The ones worth your attention are a small subset: pages that used to exist and still have links pointing at them, and the sneaky variant that returns a success code while displaying an error. This guide covers how to tell them apart.
404 vs 403, 410 and Soft 404
These four are related and Google treats each of them differently, which matters if you are deciding what to return for a page you are removing.
| Code | What it means | How Google reads it |
|---|---|---|
| 404 Not Found | Nothing here — may or may not come back | Retries for a while, then drops the URL |
| 410 Gone | It was here and it is permanently removed | Drops it faster than a 404 — use when you mean it |
| 403 Forbidden | It exists but you may not have it | Cannot assess the page; keeps trying |
| Soft 404 | Shows "not found" but returns status 200 | Confused — wastes crawl budget on an empty page |
The Usual Causes, Most Likely First
- A typo in the URL, or a link that was mistyped when it was written. Harmless and by far the most common.
- A page that was deleted or renamed without a redirect. This is the one that costs you traffic, because the links pointing at it still exist.
- A changed permalink structure. Reorganising URLs without redirecting every old address turns your whole archive into 404s overnight.
- A missing image, script or stylesheet. These do not show as an error page but they fill your logs and can break the layout.
- A site migration that lost URL paths. Moving platforms rarely preserves URLs exactly unless someone plans for it.
- Links from other sites to pages you never had. Nothing to fix — someone else made a mistake.
- Bots probing for /wp-admin, /.env, /phpmyadmin and similar. Your logs will be full of these. A 404 is the correct response and nothing needs doing.
Work Through It in This Order
- Confirm your error page actually returns 404. Run "curl -I https://yoursite.com/this-does-not-exist" and read the status line. If it says 200, fix that before anything else — it is the only entry on this list that is silently harmful.
- Open Google Search Console, go to Pages, and look at "Not found (404)". This is the authoritative list of 404s Google has actually encountered, as opposed to every random bot probe in your logs.
- Sort by whether the URL ever existed. Pages you deleted deserve a redirect; addresses that were never real deserve nothing.
- Redirect the ones that matter to the closest equivalent page with a 301. Do not redirect everything to the homepage — Google treats that as a soft 404 and it is a poor experience besides.
- Fix internal links pointing at dead pages. A 404 reached from your own navigation is entirely your own doing and the easiest kind to fix.
- Use 410 rather than 404 for content you have deliberately removed for good. It tells Google the decision is final and gets the URL out of the index faster.
- Leave the rest alone. A long tail of 404s from bots and mistyped links is normal for every site on the internet.
How Much Do 404s Actually Hurt Rankings?
Far less than most people assume. Google has said repeatedly that 404s are a normal part of the web and that having them does not directly penalise a site. A page returning 404 simply drops out of the index, which is the correct outcome for a page that no longer exists.
The real cost is indirect and it is about links. When a page that earned backlinks starts returning 404, the value those links carried has nowhere to go. That is a genuine loss, and it is why redirecting removed pages to a relevant replacement is worth doing — not to avoid a penalty, but to keep the link equity you already earned.
The second real cost is crawl budget, and it mostly applies to large sites. If Googlebot spends its visits crawling thousands of dead URLs, it has less time for the pages you care about. On a site with a few hundred pages this is not worth worrying about; on one with a hundred thousand it is.
Soft 404s are the exception that genuinely does harm. Serving a "page not found" message with a 200 status invites Google to index unlimited near-identical empty pages, which is far worse than any number of honest 404s.
What a Good 404 Page Contains
- A plain statement that the page does not exist, in normal language rather than a status code.
- A search box. It is the single most useful element, because the visitor knows what they wanted and you do not.
- Links to your main sections, so there is an obvious next step rather than a dead end.
- The site header and navigation intact — a stranded page with no way out sends people straight back to the search results.
- The correct 404 status code in the HTTP header, regardless of how friendly the page looks.
- No automatic redirect to the homepage. It is disorienting, and it hides the fact that a link is broken from both the visitor and from you.
When a 404 Is the Right Answer
Sometimes the correct action is to leave it broken, and recognising those cases saves a lot of pointless work.
Content that was genuinely removed and has no equivalent should return 404 or 410. Redirecting it somewhere vaguely related to avoid the error is worse for the visitor, who now lands on a page that does not answer their question and has no idea why.
Bot probes for admin panels and configuration files should return 404 forever. Those requests are looking for vulnerabilities, and a 404 is both correct and the least informative reply you can give.
Expired listings, sold products and finished events are legitimate 404s once there is nothing sensible to show. If a good replacement exists, redirect to it; if it does not, let the URL die honestly.
Need full control over redirects and error pages?
Cloud VPS with full root access — configure your own rewrite rules, status codes and error handling. From ฿150/month.
Frequently Asked Questions
Should I redirect every 404 to the homepage?
No. Google treats mass redirects to the homepage as soft 404s, and visitors find it disorienting — they clicked something specific and got somewhere generic. Redirect only where a genuinely equivalent page exists; otherwise let the 404 stand.
How do I find which 404s actually matter?
Search Console's Pages report shows the URLs Google encountered, and your server access log shows which ones real visitors hit and where they came from. A 404 with inbound links from other sites is worth redirecting; one that only bots ever request is not.
What is the difference between 404 and 410 in practice?
404 means "not here", which leaves open the possibility it returns. 410 means "gone, deliberately, permanently". Google drops 410 URLs from the index noticeably faster. Use 410 when you are certain the content is never coming back.
My 404 page looks fine but Search Console reports soft 404s. Why?
Because the page returns status 200 while displaying an error message. How it looks to a human is irrelevant — Google reads the HTTP status. Check it with "curl -I" and configure your framework or CMS to send a real 404 header.
Do broken images and scripts count as 404s?
They generate 404 responses and fill your logs, but they are not indexed pages so they do not appear in Search Console's page reports. They still matter — a missing stylesheet can break your layout, and a missing script can break functionality — so they are worth fixing for different reasons.
GUIDES
Related articles
Keep reading on similar topics
403 Forbidden — What It Means and How to Fix It
A 403 is not a broken server. It is a server that understood exactly what you asked for and decided you are not allowed to have it. This guide covers how 403 differs from 401, the causes in order of likelihood, and the cases where a 403 is the server doing its job properly.
Read more500 Internal Server Error — Causes and How to Fix It
A 500 is the least informative error on the web: it means "something went wrong and I am not telling you what". The good news is that the server almost always wrote the real reason to a log file. This guide shows you where that log lives and how to work through the causes in the order that finds the culprit fastest.
Read moreERR_CONNECTION_TIMED_OUT — What It Means and How to Fix It
The page just hangs and then Chrome says ERR_CONNECTION_TIMED_OUT. This guide shows you how to work out in two minutes whether the problem is on your side or the server side, then walks through the fixes for each — plus how this error differs from the similar-looking ones people confuse it with.
Read more