410 Gone
Client Error
The target resource is no longer available at the origin server and the condition is expected to be permanent. 410 is a stronger statement than 404: it claims the resource existed in the past and has been deliberately removed with no plan to restore it. Search engines de-index 410 URLs faster than 404 URLs because the signal is unambiguous, which makes 410 the right choice for content you have intentionally retired.
When does this happen?
Return 410 when you have deliberately removed content and want crawlers to drop it from the index quickly. Typical scenarios include expired marketing campaigns, deleted user accounts that should not be recoverable, deprecated API versions that have been fully sunsetted, and legal takedowns where you want a clean, permanent signal. Browsers handle 410 the same way they handle 404. There is no special UI treatment. The response body can include a custom page explaining the removal, but the status code is what matters for crawlers. Do not use 410 for transient outages or content you might restore later; that is a misuse and 503 or 404 is more appropriate. If you are removing content but have a relevant replacement, prefer 301 to that replacement so users and link equity both flow to the new URL.
Common causes
- Marketing campaign or seasonal promotion ended and the landing page is deliberately taken down.
- API version (e.g., /v1) was deprecated and is now fully retired. Every old endpoint returns 410 with a pointer to /v2.
- User account was deleted at the user's request and the profile page is permanently gone.
- Legal takedown. Content removed in response to a DMCA notice or court order, where you want a permanent signal.
- Forum thread or comment that violated terms of service and was removed without replacement.
- Discontinued product or service whose page should drop out of search results quickly.
- Archived news article that was retracted rather than corrected.
How to fix it
- If the content moved rather than disappeared, switch to 301. Leaving 410 in place when there is an obvious replacement wastes link equity.
- Remove internal links pointing at the 410 URL. Search engines should not still be following references from your own pages.
- Update sitemap.xml to exclude 410 URLs so crawlers stop trying to revisit them.
- Use Search Console's removal tool to accelerate de-indexing for URLs you want gone immediately.
- Confirm any third-party syndication or feed exporters have dropped the 410 URLs.
- Add a helpful body to the 410 response so users who arrive via old links understand what happened and can navigate elsewhere.
- Distinguish 410 from 404 in your routing. A wildcard 404 handler will swallow URLs you meant to mark gone, weakening the SEO signal.
Real-world examples
- Black Friday landing page at /promos/black-friday-2023 is intentionally removed in February 2024.
- Server returns 410 with a body suggesting users visit the current promotions page. Search engines drop the URL within a few weeks.
- API v1 reached end-of-life and every endpoint at /v1/* is now permanently gone.
- Server returns 410 with {"error":"api_version_removed","current_version":"v2"}. Old clients see the message and migrate.
- User exercises a right-to-be-forgotten request and their profile is deleted with no replacement.
- Server returns 410 on every URL that referenced the profile. Search engines de-index references to the user within crawl cycles.
- Article retracted after a legal review. No replacement, no redirect.
- Server returns 410. Internal and external links to the article eventually resolve to a clean removal page.
- Forum thread containing spam is deleted by a moderator.
- Server returns 410. The URL drops out of search results faster than if the thread had returned 404.
How it differs from related codes
HTTP 404
404 makes no claim about whether the resource ever existed or might come back. 410 explicitly says it existed, is gone, and is not returning. Search engines de-index 410 faster.
HTTP 301
301 says the resource moved to a new URL. Link equity transfers. 410 says it is gone with no replacement. Use 301 if you have somewhere relevant to send people; use 410 if you do not.
HTTP 451
451 is a specialized 410-style code for content removed due to legal demands. Use 410 for ordinary retirements and 451 only when the cause is a court order or regulatory requirement.
Related status codes
See HTTP 410 in your redirect chains?