Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

HTTP 410 Gone means the origin server deliberately says that a requested resource is no longer available and that the absence is likely permanent. It is a client-error response in the 4xx range. If a page simply moved, use a 301 redirect; if the server cannot tell whether the absence is permanent, use 404 Not Found. For a site owner, the correct response depends on what happened to the URL—not on which code seems more forceful.

What does HTTP 410 Gone mean?

An HTTP response has two important parts for this question: the status code and the representation returned with it. The status code 410 Gone tells the requester that the origin server no longer has the target resource and believes that condition is likely to be permanent. The wording comes from RFC 9110, the HTTP Semantics standard published in June 2022.

“Likely permanent” is important. A 410 is not a guarantee that the URL can never exist again, nor does it prove that every cache, crawler or user will immediately receive the new status. It is the server’s current, intentional statement about the resource.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The response can include a useful HTML explanation, links to a category or replacement, and normal cache headers. The explanatory page does not change the status: a custom page that returns 410 is still a 410, while a page that looks like an error but returns 200 is a different and usually problematic result.

410 versus 404 versus 301

Choose the status from the URL’s history and your current intent. These responses are not interchangeable signals.

Situation Response Why
The content moved and has a clear, relevant replacement 301 Moved Permanently Visitors can continue to the replacement, and Google recommends a 301 for moved content.
The content was intentionally retired and the origin knows it is likely permanently unavailable 410 Gone Communicates deliberate, probably permanent removal.
The URL has no current representation, but permanence is unknown 404 Not Found Does not assert that the absence is permanent; RFC 9110 recommends 404 when permanence is unknown.
The removed content has no similar replacement 404 or 410 Google Search Central says either indicates that the page does not exist and is not intended for indexing.

Is 410 the same as 404?

No. Both are 4xx errors and both tell a client that the requested representation is not available, but 410 adds the server’s belief that the condition is likely permanent. A 404 is deliberately less specific: the server does not know, or does not wish to state, whether the absence will last.

That distinction helps HTTP clients, operators and intermediaries make sensible decisions. It does not create a special search-engine shortcut. Google’s current documentation says it treats 410 the same as 404 for Search Console purposes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Is 410 better than 404 for SEO?

Not automatically. Google Search does not index URLs that return 4xx responses and removes previously indexed URLs that return 4xx responses. Google’s crawler documentation also says 4xx responses other than 429 do not affect crawl rate. Therefore, do not promise that 410 removes a URL faster than 404. Use 410 because the resource is intentionally and probably permanently retired, not as an SEO trick.

When should a site return 410?

Use 410 for deliberate, permanent retirement

Examples include an expired campaign page that will never return, a user-requested deletion that your service will not restore, or a discontinued endpoint whose URL must remain visibly retired. Keep an internal record of why the route was removed so a later maintainer does not recreate it accidentally.

Use 404 when the state is uncertain

A typo, an unknown route, a temporarily missing deployment artifact, or a resource that might be recreated is better represented by 404. You can later change a 404 to 410 when the business decision becomes permanent.

Use 301 when visitors have a real destination

If an article has a substantially equivalent successor, redirect that old URL to the successor. Do not send every deleted URL to the home page or an unrelated category. Such redirects do not answer the visitor’s request and can be interpreted as soft 404 behavior.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How to implement HTTP 410

The component that owns the URL—web server, framework router, CMS or edge function—must emit the status. A browser cannot repair a 410 from someone else’s server.

Apache HTTP Server

For a specific retired path, add a rule in the site configuration or an applicable .htaccess file:

Redirect gone /old-campaign

Apache returns 410 for that path. Test the exact URL, including trailing-slash and case variants, because separate routes may still return 200 or 404.

Nginx

Inside the relevant server block, use:

location = /old-campaign {
    return 410;
}

An exact-match location avoids unintentionally retiring similarly named paths. Reload Nginx with your normal privileged service command after validating the configuration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Node.js with Express

app.get('/old-campaign', (req, res) => {
  res.status(410).send(`
    <!doctype html>
    <title>Page retired</title>
    <p>This page is no longer available.</p>
    <a href="/">Go to the home page</a>
  `);
});

Place the route before a broad catch-all 404 handler. If middleware, authentication or a reverse proxy handles the request first, verify which layer actually sets the final status.

Rank #3
Sale
HTTP: The Definitive Guide
  • Used Book in Good Condition

PHP

<?php
http_response_code(410);
header('Content-Type: text/html; charset=UTF-8');
echo '<!doctype html><title>Gone</title>';
echo '<p>This resource has been permanently retired.</p>';

Do not send a 200 status before calling http_response_code(410). Output buffering, a framework exception handler or a proxy can otherwise replace the intended response.

How to verify a 410 response

  1. Request the production URL, not only a local development route.
  2. Inspect the status and headers with a command-line client:
curl -I https://example.com/old-campaign

You should see an HTTP status line containing 410. With redirects enabled, also test without following them so an intermediate 301 or 302 is not hidden:

curl -I --max-redirs 0 https://example.com/old-campaign
  1. Check the response body in a browser. It should explain the retirement and offer a useful navigation path without claiming that the resource still exists.
  2. Test variants that your application may route differently: a trailing slash, URL-encoded characters, uppercase letters where your platform is case-sensitive, and known query strings.
  3. Review access logs and your sitemap. Remove retired URLs and update internal links so your own site does not keep sending visitors and crawlers to them.

Caching behavior and operational consequences

RFC 9110 classifies 410 as heuristically cacheable unless the method definition or explicit cache controls say otherwise. A cache may therefore continue serving a previously stored 410 for a period chosen from normal HTTP caching rules. Conversely, a status change from 410 to 200 may not appear everywhere immediately if an intermediary still holds the old response.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Set explicit Cache-Control directives when you need a defined retention period, and purge managed CDN or reverse-proxy caches when your platform supports it. Avoid promising an exact propagation time unless you control every cache between the client and origin.

If the resource contains private or user-specific information, apply the appropriate privacy and cache directives to the response. The 410 code itself is not an access-control mechanism; it only describes availability.

Common mistakes and fixes

A deleted page returns 200

Cause: a CMS error template, catch-all route or front-end application returns a successful status while displaying “not found.” Fix: set the actual HTTP status at the server or application layer and confirm it with curl -I.

Rank #4

Every unknown URL returns 410

Cause: a broad rule was used where only a small set of retired routes should be gone. Fix: narrow the match and return 404 for unknown or uncertain paths.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A replacement page is hidden behind 410

Cause: the old route was marked gone even though a substantially equivalent page exists. Fix: replace the 410 with a 301 to the relevant destination, then update internal links.

The browser shows a generic error page

Cause: the server’s default 410 body provides no navigation, or a proxy replaces your custom body. Fix: keep the 410 status but provide a concise explanation and useful links; then check the final response through the public hostname.

Search results still show the URL

Cause: search indexes and caches are not instant mirrors of origin state. Google documents 4xx removal behavior but does not promise a special 410 timeline. Fix: keep the correct 4xx response, remove the URL from sitemaps, repair internal links and use Search Console’s URL tools to inspect where Google discovered it.

A cache keeps returning the old result

Cause: a heuristic or explicitly configured cache lifetime. Fix: inspect Age, Cache-Control and intermediary settings, then purge or wait according to those policies.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How to handle a 410 you did not create

If you are only visiting a site, you generally cannot restore the resource. Try the site’s search, a current category page or the organization’s support channel. If you own a link that points to it, replace the link or remove it. A browser refresh rarely helps when the origin intentionally returns 410.

If the URL should exist for you, contact the site owner with the exact address and the date and time you received the response. The owner can decide whether to restore the resource, publish a replacement and redirect, or keep the 410.

Or skip the browser setup

If your goal is to document how a retired URL responds—for a bug report, migration record or monitoring workflow—you can capture the page without configuring a headless browser. ScreenshotNeo accepts a URL and returns a PNG, JPEG, WebP or PDF. It removes cookie-consent banners, newsletter popups and chat widgets before capture; bot checks, blank pages and failed loads are not billed. Its MCP server provides take_screenshot, get_page_info and capture_pdf tools for AI agents.

Example request (see the ScreenshotNeo API documentation):

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/old-campaign -o gone.webp

ScreenshotNeo includes 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account to try it.

FAQ

Does a 410 mean the domain has been deleted?

No. It applies to the requested target resource. Other pages and APIs on the same domain can continue working normally.

Can a 410 later become a 200?

Yes. “Likely permanent” describes the server’s current intention, not an irreversible protocol lock. If you restore the content, account for cached 410 responses and update any links or caches that still reflect its retirement.

Should an API use 410 for a removed endpoint?

Use it when the endpoint was intentionally retired and clients should stop treating that route as available. If the route may return after a temporary deployment problem, 404 or an appropriate server-error response better describes the situation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Frequently Asked Questions

Can users fix an HTTP 410 in their browser?

No. The origin server controls the response. A visitor can look for a replacement or contact the site owner, but refreshing cannot restore an intentionally retired resource.

Is returning a custom 410 page enough?

Only if the HTTP status remains 410. A visually similar page that returns 200 is a soft 404 and does not communicate the intended protocol result.

Will every cache immediately forget a 410?

No. Because 410 is heuristically cacheable, intermediaries can retain it according to cache rules unless explicit controls or a purge change that behavior.

Quick Recap

SaleBestseller No. 3
HTTP: The Definitive Guide
HTTP: The Definitive Guide
Used Book in Good Condition
$26.04
SaleBestseller No. 4
HTTP Pocket Reference: Hypertext Transfer Protocol
HTTP Pocket Reference: Hypertext Transfer Protocol
Used Book in Good Condition
$6.94
Bestseller No. 5

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.