410 Gone: When to Use It vs 404
410 Gone means a resource is intentionally, permanently removed - not 404. When to serve it, how Google treats each, verify in 3 checks. Free HTTP check.
Check your domain for this issue now
Free, no sign-up. Runs the exact check this guide describes and shows what to fix.
Problem
A URL returns 410 Gone instead of a page. Unlike most 4xx codes, this one is usually not a bug — it’s the server saying the resource was deliberately removed and isn’t coming back. The question is whether that’s what you intended, and whether you’re the one who set it.
Symptoms
- HTTP Check shows a final status of 410 with no redirect.
- The URL used to work; now it’s Gone — often after a content migration, a CMS cleanup, or a plugin change.
- Search Console reports pages “removed” or dropping out of the index faster than usual.
- Some clients or caches keep returning 410 even after you think you’ve restored the page.
What This Error Actually Means
RFC 9110 §15.5.11 defines 410 as: the resource “is no longer available at the origin server and this condition is likely to be permanent.” That last word is the whole point. A 404 says not found — maybe it never existed, maybe it’s temporarily gone, maybe you typed the URL wrong. A 410 says it existed, we removed it on purpose, stop asking.
The spec is blunt that 410 is optional and intentional: it’s “primarily intended to assist the task of web maintenance by notifying the recipient that the resource is intentionally unavailable.” Servers aren’t required to track what they’ve deleted; if you don’t know or don’t care to signal permanence, 404 is a perfectly valid answer. 410 is a choice you make when you do know the removal is final.
Two consequences fall out of that “permanent” promise. First, well-behaved clients and crawlers treat 410 as a stronger signal to forget the URL than 404. Second — the part that surprises people — 410 is cacheable by default. HTTP’s heuristic caching rules let a cache store a 410 with no explicit cache headers at all, the same way it can cache a 404 or a 301. A permanent-removal code that a CDN is allowed to remember is exactly as sticky as it sounds.
Top 3 Causes
- Intentional, correct removal — You (or your CMS/framework) returned 410 on purpose for content that’s genuinely retired: a discontinued product, a deleted account, an expired campaign with no successor. This is 410 working as designed. Nothing to fix — just confirm the code is reaching crawlers.
- Accidental 410 from a plugin or CMS — A migration, a “trash” state, an SEO plugin’s removal setting, or a bulk edit flipped live URLs to Gone. The tell is that pages you still want are 410-ing, and traffic to them fell off a cliff. This is the dangerous case, because 410 tells Google to drop them faster than a 404 would.
- A stale 410 stuck in a cache — You fixed the origin, but a CDN or proxy is still serving a cached 410 because the code is heuristically cacheable. The origin says 200; visitors and crawlers still see Gone until the cache is purged.
Diagnose with DechoNet
- HTTP Check confirms the final status is really 410 and not a 404, a soft-404 (a “not found” page served as 200), or a redirect chain ending in Gone. It also shows the response headers, so you can see whether a CDN is in the path and whether cache headers are set on the 410.
- Re-run HTTP Check from outside your own network after a fix. If your origin serves 200 but the check still returns 410, the Gone response is cached at an intermediary — that’s your signal to purge the CDN, not to keep editing the origin.
Resolution Checklist
- Decide if the 410 is intentional. Is this URL genuinely retired forever, with no replacement? If yes, 410 is correct — skip to confirming crawlers can reach it. If the content moved, you want a 301 to the new URL, not a 410.
- If it’s accidental: find what set it. Check your CMS’s trash/removed states, SEO plugin removal rules, and any recent bulk edits or migration scripts. Restore the URL to serving real content.
- Purge the cache. Because 410 is cacheable by default, a CDN or proxy may keep serving Gone after you fix the origin. Invalidate the URL at every cache layer and re-test from an external tool.
- Don’t blanket-410 a migration. Retiring a whole section? Map old URLs to their closest new equivalents with 301s; reserve 410 for the ones with truly no successor. A wall of 410s throws away link equity you could have redirected.
- For mass cleanup (hacked/spam URLs): 410 is the right tool — it drops junk from the index slightly faster. But those URLs still need to be crawled to be seen, so submit them or expect a gradual purge, not an instant one.
- Re-run HTTP Check to confirm the final code matches your intent.
When to Escalate
- If pages you rely on are 410-ing and you can’t find the source in your CMS, escalate to whoever owns the deployment or the reverse proxy — a rule at the edge (a WAF, a redirect map, an old rewrite) can return 410 before the request ever reaches your application.
- If Google is dropping URLs you want to keep and the 410 is confirmed accidental, fix the code first, then use Search Console to request re-indexing. Recovery isn’t instant, and the longer wrong 410s ran, the longer rankings take to rebuild.
Related Tools
Related Guides
Share this guide