HTTP 410 Gone

HTTP 410 Gone is the deliberate, unambiguous way to tell clients and search engines that a resource has been permanently removed and will not return. Where 404 Not Found is ambiguous — the server does not explain whether the resource ever existed or might appear in the future — 410 removes all ambiguity. The server is declaring: "This resource existed, it has been intentionally removed, and it is not coming back." That distinction matters deeply for how search engines respond, how API clients behave, and how you manage content removal at scale.

Quick reference

Code410
NameGone
Category4xx Client Errors
SpecificationRFC 9110, Section 15.5.11
RetryingClients should not retry — the removal is permanent
CachingCacheable by default — caches may store the 410 response
Search enginesTreated as a definitive permanent removal signal; faster deindexing than 404

What HTTP 410 Gone means

RFC 9110 defines 410 as indicating that "the target resource is no longer available at the origin server and that this condition is likely to be permanent." The phrase "likely to be permanent" is intentional — 410 is a strong signal, not an absolute guarantee. But for practical purposes, both clients and search engines treat 410 as a final, non-reversible state.

Unlike 404 Not Found, which can mean anything from "this URL never existed" to "we deleted it last week," a 410 is a purposeful declaration from the server operator. If you are serving 410, you are saying: we know this URL existed, we removed it, and we have no plans to restore it. RFC 9110 explicitly states that clients receiving 410 should "remove any links to the target resource."

When 410 is appropriate

410 is the right choice in any situation where you are deliberately removing content that was previously published and indexed, and you want to send a clear, fast signal to crawlers and clients. Common cases include discontinued products, deleted blog posts or articles with no planned replacement, deprecated API endpoint versions, withdrawn legal notices or press releases, and expired promotional pages that will not return.

If you are unsure whether the content might come back, or you do not know whether the URL was ever crawled and indexed, use 404 instead. 404 is the appropriate default for missing resources; 410 is the explicit upgrade for confirmed, intentional removal.

410 vs 404: the practical differences

Search engine deindexing speed

This is the most significant practical difference. When Google encounters a 404, it re-crawls the URL at increasing intervals — days, then weeks — to confirm the 404 is permanent before removing the URL from the index. The full deindexing cycle can take weeks to months. When Google encounters a 410, it treats the signal as definitive and removes the URL from the index considerably faster — sometimes within days of the next crawl. For content you are deliberately removing (especially content you do not want ranking), 410 is the more effective tool.

Crawl budget impact

Both 404 and 410 responses waste crawl budget when Googlebot requests a URL. But 410 is more efficient: because Google does not re-crawl 410 URLs as persistently as it does 404 URLs, a site with many removed pages can recover crawl budget more quickly by serving 410 instead of 404. This matters most on large sites with frequent content churn.

Client behavior

Well-implemented API clients and HTTP clients that follow RFC 9110 will remove 410 URLs from any stored lists and will not retry them, whereas a 404 might prompt retries or continued reference. For API versioning and endpoint deprecation, 410 is the correct signal to send when an endpoint has been permanently removed.

When to use each

Use 410 when: the resource existed, you have deliberately removed it, it will not return, and you want immediate action from crawlers and clients. Use 404 when: the resource was never published or you are unsure, the removal may be temporary, or the infrastructure does not allow granular per-URL status code control.

How to implement HTTP 410

Apache (.htaccess)

To return 410 for a specific URL or pattern in Apache:

# Return 410 for a specific deleted page
<Location "/old-product-page/">
  Redirect gone /old-product-page/
</Location>

# Or using RewriteRule for pattern matching
RewriteRule ^deleted-section/(.*)$ - [G]

The Redirect gone directive and the [G] flag both cause Apache to return a 410 response.

Nginx

In Nginx, return 410 for specific locations:

location = /old-product-page/ {
    return 410;
}

# Pattern-based 410 for a removed section
location ~ ^/legacy-blog/ {
    return 410;
}

Cloudflare (Transform Rules)

In the Cloudflare dashboard, use Transform Rules or a Redirect Rule to return 410. Under Rules → Redirect Rules, add a rule matching the URL path and set the status code to 410. Note that Cloudflare does not natively support 410 in the standard Redirect Rules UI — use a Cloudflare Worker for precise 410 control:

export default {
  async fetch(request) {
    const url = new URL(request.url)
    if (url.pathname === '/old-product-page/') {
      return new Response('Gone', { status: 410 })
    }
    return fetch(request)
  }
}

Application-level (Node.js / Express)

app.get('/deprecated-endpoint', (req, res) => {
  res.status(410).json({
    error: 'Gone',
    message: 'This endpoint has been permanently removed.',
    docs: 'https://docs.example.com/migration-guide'
  })
})

Verify the response

Always verify that the correct status code is being served:

curl -I https://yourdomain.com/old-product-page/

The first line of the response should read HTTP/2 410 or HTTP/1.1 410 Gone.

How 410 differs from similar status codes

CodeNameKey difference from 410
404 Not Found Ambiguous about whether the resource ever existed or might return. 410 is explicit: it existed, it is gone, it will not return. Search engines delist 410 faster than 404.
301 Moved Permanently Use 301 when the content has moved to a new URL. Use 410 when the content is gone with no replacement. Both are permanent signals, but 301 passes link equity to the new URL while 410 discards it.
451 Unavailable For Legal Reasons The resource has been removed due to a legal obligation (DMCA, court order). A 451 is a specialised form of unavailability; a 410 is a general permanent removal signal with no specific stated reason.
403 Forbidden The resource exists but access is denied. A 403 does not indicate removal — the resource is present but restricted. A 410 indicates the resource no longer exists at all.

For a detailed side-by-side breakdown, see the 404 vs 410 comparison and the 410 vs 301 comparison.

Frequently asked questions about HTTP 410

What is the difference between 404 and 410?

HTTP 404 Not Found means the server cannot find the resource — it may or may not have existed before. HTTP 410 Gone is an explicit signal that the resource existed and has been permanently removed. Use 410 when you want search engines to delist a URL quickly without the repeated re-crawl cycle that a 404 triggers.

Does Google delist 410 pages faster than 404?

Yes. Google treats 410 as a definitive permanent removal signal and deindexes 410 URLs faster than 404 URLs. A 404 causes Googlebot to re-crawl at increasing intervals before removing the URL from the index, while a 410 is treated as a final and intentional signal that no further crawling is needed.

When should I use 410 instead of 404?

Use 410 when you have intentionally deleted content and want search engines to remove it promptly. Typical cases: discontinued products, deleted blog posts or articles with no replacement, deprecated API endpoints, removed legal pages, and expired campaigns. If the content might return or you are unsure whether it was ever indexed, use 404 instead.

Should a 410 page have a body?

Yes — RFC 9110 allows (and recommends) a response body explaining the removal. A useful 410 page tells the visitor why the content is gone, links to related content on the site, and avoids leaving users stranded. The 410 HTTP status code handles the crawler signal; the body handles the human experience.

Can a 410 be reversed?

Technically yes — if you restore content at the URL and return a 200, search engines will re-crawl and index it again. But semantically, 410 is a declaration of permanent removal. Using 410 for temporary removal and then restoring the page undermines the signal's value. If the removal might be temporary, use 404.

Related resources

Related status codes: HTTP 404 Not Found · HTTP 301 Moved Permanently · HTTP 451 Unavailable For Legal Reasons · HTTP 403 Forbidden · HTTP 308 Permanent Redirect

Comparisons: 404 vs 410 · 410 vs 301

Guides: In-depth 410 Gone guide · 404 Not Found guide · 301 Moved Permanently guide

Browse by category: All 4xx Client Errors · Full Status Code Reference

Standards: Defined in RFC 9110, Section 15.5.11 · IANA HTTP Status Code Registry · MDN Web Docs — 410