410 Gone: telling search engines a page is removed for good
410 Gone means a page was removed on purpose and won’t return; Google removes 410 URLs from its index just like 404s.
410 Gone says a page has been removed on purpose and isn’t coming back. Where 404 means “nothing here, reason unknown,” 410 is a deliberate, permanent statement, useful for expired content, discontinued products and cleaning up after a hack.
What the standard says
RFC 9110, section 15.5.11 defines 410 as access to the resource being “no longer available at the origin server” with the condition “likely to be permanent.” The code exists mainly to help web maintenance: it tells recipients the resource is intentionally unavailable and that the owner would like links to it removed. If you don’t know whether the removal is permanent, the spec says to use 404. It also says you don’t have to mark every removed page as gone, or keep the 410 forever. A 410 is cacheable by default.
410 vs 404 for SEO
Google’s documentation on HTTP status codes treats all 4xx codes except 429 alike: the URL is removed from the index if it was there, and newly found URLs with that status aren’t processed. In practice 404 and 410 lead to the same outcome. Google representatives have said in the past that a 410 may be acted on slightly faster, but the difference is small, so choose the code that honestly describes the situation.
What 410 won’t do is preserve value. If a removed page had backlinks or traffic and a genuinely equivalent page exists, a 301 redirect to it is the better choice.
When to use 410
- Discontinued products with no replacement.
- Expired job posts, events, listings or limited-time offers.
- Content you’ve deliberately withdrawn.
- Spam URLs injected by a hack; a 410 says clearly that they never belonged on your site.
For content removed because of a legal demand, 451 is the more precise code.
How to return 410
Apache
# single URL (mod_alias)
Redirect gone /spring-sale-2025/
# a whole pattern, e.g. spam URLs from a hack
RedirectMatch gone ^/cheap-[a-z-]+\.html$
# mod_rewrite equivalent
RewriteRule ^old-catalog/ - [G]
Nginx
location = /spring-sale-2025/ { return 410; }
location ^~ /old-catalog/ { return 410; }
Applications and CMSs
In PHP, call http_response_code(410); before any output. In a CMS, use a redirect manager that supports 410 rules. Either way, serve a helpful page body, such as links to related content or a search box, since visitors still land there.
How to verify
After deploying the rules, paste the removed URLs into the HTTP status checker and confirm each returns 410, not a 200 error page or a redirect. Then remove those URLs from your sitemap and internal links; the broken link checker flags any links you missed. For anything urgent, Search Console’s Removals tool hides a URL temporarily while Google processes the 410.
HTTP/1.1 410 Gone
Content-Type: text/html; charset=utf-8
Cache-Control: public, max-age=86400 Frequently asked questions
Is 410 better than 404 for SEO?
Not meaningfully. Google handles both as signals that the page doesn’t exist and removes the URL from the index. Use 410 when the removal is deliberate and permanent, 404 when you’re unsure.
How long should I keep returning 410?
The spec doesn’t require you to keep it forever. In practice, keep the rule as long as the URLs still receive requests; it costs almost nothing and keeps the message consistent.
Should I return 410 for spam pages created by a hack?
Yes. After cleaning the site and closing the security hole, return 410 for the injected URLs. If Google applied a manual action for hacked content, request a review in Search Console once the cleanup is done.