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.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
High Performance Browser Networking: What every web developer should know about networking and web... | $31.84 | Buy on Amazon |
| 2 |
|
Learning HTTP/2: A Practical Guide for Beginners | $18.11 | Buy on Amazon |
| 3 |
|
HTTP: The Definitive Guide | $26.04 | Buy on Amazon |
| 4 |
|
HTTP Pocket Reference: Hypertext Transfer Protocol | $6.94 | Buy on Amazon |
| 5 |
|
HTTP/2 in Action | $49.99 | Buy on Amazon |
“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.
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.
#1 Best Overall
- Used Book in Good Condition
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.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallIs 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.
Rank #2
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.
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.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsNode.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
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
- Request the production URL, not only a local development route.
- 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
- 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.
- 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.
- 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.
Recommended Free Tools
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.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →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.
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.
Best Value
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):
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.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →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
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.

