When you permanently remove a page, return a 410 Gone status if you are certain it will never come back, and a 404 Not Found if the URL might return or you are unsure. Both tell crawlers the page is missing, but 410 is an explicit, final signal that gets the URL dropped from indexes faster and stops bots from wasting repeat visits. That single distinction is the whole decision, and most sites get it wrong by serving 404 for everything.
What each status code actually says
A 404 means "not found right now." It is deliberately ambiguous: the resource might be temporarily gone, might return tomorrow, or might never have existed. Because of that ambiguity, search engines keep re-checking 404 URLs for weeks or months before quietly dropping them. AI crawlers behave similarly, retrying URLs they have seen linked elsewhere.
A 410 means "gone, permanently, on purpose." It is the internet's way of saying "we deleted this and it is not coming back." Google has confirmed it treats 410 as a slightly stronger removal signal than 404, and it typically stops crawling those URLs sooner. For a site trying to keep crawl budget focused on live, valuable pages, that difference matters. If you are still unclear on how status codes shape crawling, our guide to HTTP status codes and redirects covers the full set.
When to use 410 instead of 404
Reach for 410 in these situations:
- Expired listings and events that are permanently over — a sold product with no replacement URL, a job posting that closed, a one-time event page.
- Deleted user-generated content — a removed forum thread, a deleted profile, spam you purged and never want re-crawled.
- Pruned thin content you have decided to kill outright rather than merge. If you are consolidating instead, a 301 redirect is better; see our content pruning guide for that decision.
- Old campaign or seasonal URLs that will genuinely never be reused.
Stick with 404 when the URL might legitimately return, when a user mistyped a path, or when you simply cannot tell. A wrong 410 on a page you later revive forces you to wait for re-discovery, so only use it when "permanent" is actually true.
The soft 404 trap that ruins both
The worst outcome is neither 404 nor 410 — it is a soft 404, where a removed page returns HTTP 200 OK with a "sorry, not found" message in the body. Crawlers see a successful response, treat the page as real, and keep it in the index as thin content. This wastes crawl budget and dilutes your site quality signals. Always verify the actual header your server sends, not just what the page looks like in a browser. Our soft 404 guide walks through detecting and fixing these. You can check a header quickly with curl -I https://example.com/removed-page and confirm the first line reads 404 or 410, not 200.
How to implement it correctly
On most stacks the change is small. In Apache, you can send a 410 for a specific path with a Redirect rule using the "gone" keyword. In Nginx, a location block returning 410 does the job. In application code, set the response status to 410 before rendering your standard "this page was removed" template — the body can be friendly for humans as long as the header is honest for machines.
A few rules keep this clean. Do not block removed URLs in robots.txt at the same time — if you disallow crawling, bots never see the 410 and cannot process the removal, so leave them crawlable until they drop; our robots.txt guide explains why crawl-blocking and index-removal are different jobs. Keep your custom 404/410 template lightweight with a search box and links to live sections, and remove dead internal links pointing at the gone URLs so you stop feeding crawlers paths to nowhere.
Getting removals right is quiet, unglamorous technical hygiene that keeps crawlers and AI assistants focused on the pages you actually want cited. To see how your site currently responds to bots, missing pages included, run the CheckMy.site scanner and get a clear read on what crawlers see when they hit your URLs.