What each code actually says
Both codes mean the page is not there. They differ in one word: certainty.
404 Not Found says: I have nothing at this URL. It does not say why, and it does not say whether something will be there tomorrow. It is the honest default when a server simply has no match for a path.
410 Gone says something narrower and stronger: this URL had content, that content was deliberately removed, and it is not coming back. The specification describes 410 as intentional, and expects the owner to know it is permanent.
That is the whole semantic difference, and everything below follows from it. A 404 is a
shrug; a 410 is a statement. Neither is an error you need to fix — a correct 404 for a URL that
never existed is exactly right, and the pages in your Not found (404) report in
Search Console are usually working as intended.
What Google actually does with each
Here is where expectation and reality part company, and it is worth being precise, because most advice on this overstates the difference.
- Both get the URL removed from the index. Neither code leaves a dead page ranking. The destination is the same.
- 410 is treated as slightly more final. Google has said it treats 410 a little faster than 404 — the URL is dropped sooner, and it is retried less. “A little” is doing real work in that sentence: the difference is measured in a crawl cycle or two, not in weeks.
- Both get recrawled anyway. Google will come back to a 410 to check that you meant it. A 410 is not a permanent instruction never to visit again, and a URL that starts returning 200 after a 410 will be reindexed.
So the honest summary: choosing 410 over 404 buys you a marginally faster removal and a clearer signal, not a different outcome. It is worth doing when you know the answer, and not worth re-engineering your application for. Where real damage happens is the two mistakes below — redirecting everything to the homepage, and serving a “page not found” screen with a 200 status.
When 410 is the right answer
Use 410 when you made a decision and you are willing to stand behind it:
- A product, listing or event that is over and has no successor. An expired job posting, a finished auction, a discontinued SKU with no replacement.
- Content you deliberately deleted — a retired landing page, a thin page removed during a content prune, an article taken down on purpose.
- User-generated content that was removed: a deleted account's profile, a removed post, anything taken down for policy reasons.
- URLs from an old structure you are certain about, where no equivalent page exists and a redirect would be a lie.
- Cleaning up after a hack or a spam injection, where thousands of junk URLs were indexed and you want them gone as decisively as possible.
That last case is the one where 410 genuinely earns its keep. When a crawler has discovered tens of thousands of URLs that should never have existed, the marginal speed-up and the reduced retry rate add up.
When 404 is the right answer
Use 404 when you are not sure, which is more often than people admit:
- A typo'd or guessed URL. Nothing was ever there. 404 is literally correct.
- A page that might come back — a seasonal category, a product out of stock that you will restock, a temporarily unpublished article.
- Anything where you are not the one who decided, or where you cannot tell whether the removal was deliberate. A framework returning 404 for an unmatched route is doing the right thing.
- Bulk cleanup you have not verified. If you would have to guess which of 10,000 URLs were deliberately removed, 404 is the safer answer for all of them.
404 is the default for a reason. It is never wrong in the way an incorrect 410 is wrong: a 410 on something you later restore is a claim you have to walk back.
Soft 404: the one that actually costs you
A soft 404 is a page that says “not found” to a human while
returning 200 OK to the crawler. It is by far the most expensive mistake in this
whole topic, and it is almost always accidental.
Three ways sites produce them:
- A custom error page served with a 200. The template renders, the status code was never set, and every dead URL on the site now looks like a real page.
- Redirecting all dead URLs to the homepage. The homepage returns 200, so each retired URL now reports as a live page with content that has nothing to do with what was requested. Google calls this out explicitly and treats it as a soft 404.
- A client-rendered app that fetches, finds nothing, and renders an empty state — while the HTML document itself was served with a 200.
The cost is real: crawl budget spent on pages that do not exist, duplicate thin content in the
index, and a Soft 404 report in Search Console that grows quietly. The fix is always
the same — make the status code match what the page says. Check what your error page actually
returns with an
HTTP status code checker; the
browser will not tell you, because a 404 page and a 200 page look identical on screen.
Deciding what to serve for a dead URL
Four options, in the order you should consider them.
1. Redirect, if there is a real equivalent
If another page genuinely replaces this one — the new URL after a restructure, the successor product, the merged article — a 301 is better than either error code, because it preserves the link signals the old URL earned. The guide to 301 and 302 redirects covers which code to use. The test is whether a visitor landing on the new page would feel they got what they clicked for. If not, do not redirect.
2. Return 410 if you removed it on purpose
No equivalent, and you know the removal was deliberate and permanent. Say so.
3. Return 404 if you are unsure
No equivalent, and you are not certain the page is gone for good. The default is correct and costs you nothing.
4. Or keep the page, if it still has value
Worth asking before deleting anything: does this URL still have inbound links or traffic? A page that earns visits is often better updated than removed. Deleting it and serving a perfect 410 is still throwing away whatever it had accumulated.
The codes people reach for by mistake
A few neighbours get used in place of 404 and 410, and all of them say something different:
- 403 Forbidden means the resource exists but you are not allowed to see it. Returning 403 for missing content tells a crawler the page is real and withheld, which is not what you meant.
- 451 Unavailable For Legal Reasons is for content removed under legal demand specifically. It is a real, registered code, not a joke, and it should not be used as a general “we took it down”.
- 503 Service Unavailable is the right code for planned downtime and maintenance — it says come back later, which is exactly what you want during a migration, and it is wrong for a page that is permanently gone.
- 200 with an empty page is the soft 404 above, and the worst of the set.
If you are not sure what your application returns in each of these situations, check it rather than assume — the complete guide to HTTP status codes walks through every class.
Common mistakes
- Redirecting every dead URL to the homepage. Google treats an irrelevant destination as a soft 404, so you get neither the removal nor the link equity.
- A custom 404 page served with a 200 status. Looks right to humans, lies to crawlers.
- Using 410 for something seasonal, then restoring the page and wondering why recovery is slow.
- Treating the Search Console 404 report as a list of bugs. Most of those URLs are typos, old scraper links and dead external references. A 404 for a URL that never existed is not a problem to fix.
- Deleting pages that still earn traffic or links because they are old. Check before you prune.
- Leaving dead URLs in the sitemap. A sitemap should list only URLs you want indexed; a 404 or 410 in there wastes crawl budget and is flagged.
- Removing internal links last. If your own navigation still points at a URL you have 410'd, you are telling Google both things at once.
The short version
404 says “nothing here”; 410 says “this was here, I removed it, it is not coming back”. Both drop the URL from the index, and 410 does it marginally faster with fewer retries — useful for mass cleanup after a hack or a content prune, and not worth rebuilding your app for. Redirect instead when a genuine equivalent exists, use 404 whenever you are unsure, and above all make sure your error pages return an error status: a “page not found” screen served with 200 is a soft 404, and it costs more than picking the wrong one of these two ever will. Check what any URL actually returns with the free HTTP status code checker.
Related tools and guides:
- HTTP Status Code Lookup - A quick reference for every HTTP status code and what it means.
- 301 vs 302 Redirects: Which to Use and What SEO Sees - When to use a 301 and when a 302
Frequently Asked Questions
Should I use 404 or 410 for a deleted page?⌄
Use 410 when you deliberately removed the page and it is not coming back, and 404 when you are unsure or the page might return. Both remove the URL from the index; 410 is dropped marginally faster and retried less often, which matters most when you are clearing out a large number of URLs at once.
Does a 410 remove a page from Google faster than a 404?⌄
Slightly. Google has said it treats 410 as a little more final than 404, so the URL is dropped sooner and recrawled less. The difference is a crawl cycle or two, not weeks, and Google will still revisit a 410 occasionally to confirm you meant it.
Are 404 errors bad for SEO?⌄
No, not in themselves. A 404 for a URL that never existed is correct behaviour, and most entries in the Search Console Not found report are typos, scraper links and old external references. What does hurt is a soft 404 — a not-found page served with a 200 status — and redirecting dead URLs to an irrelevant page such as the homepage.
What is a soft 404?⌄
A page that tells a human the content is missing while returning 200 OK to the crawler. It happens when a custom error template is served without setting the status code, when dead URLs are redirected to the homepage, or when a client-rendered app shows an empty state inside a 200 document. Fix it by making the status code match what the page says.
Should I redirect a deleted page instead?⌄
Only when another page genuinely replaces it — the new URL after a restructure, a successor product, a merged article. A 301 then preserves the link signals the old URL earned. If no real equivalent exists, redirecting anyway is treated as a soft 404, so return 404 or 410 instead.
15+ years of hands-on experience in web development and security. Focused on practical web security: keeping websites secure, reliable and easy to troubleshoot. BuildToolForge exists to make these checks free, private and understandable. Tools run in your browser wherever possible, and nothing you enter into a tool is stored.
How we write our guides: Every guide is written from hands-on experience, checked against the official standards, and tested with our own tools on real domains. We update guides when standards or tools change. Found a mistake? Email contact@buildtoolforge.com.