410 Gone
A 410 Gone is unusual among HTTP errors because it is often not an error at all. It is a deliberate answer: this existed, we removed it on purpose, it is not coming back, and there is nothing else to send you to. Where a 404 shrugs, a 410 commits. That difference matters more for crawlers and for your own logs than most people expect.
Updated August 2026 · 7 min read
-
Written by
Andrian Valeanu
Founder of Pulsetic
Andrian Valeanu founded Pulsetic and, before it, Designmodo. Across 15-plus years he has shipped web products, design tools, and monitoring software teams around the world rely on.
-
Reviewed by
Ionut Caval
Technical reviewer
Ionut Caval reviews Pulsetic's technical guides for accuracy. He works hands-on with web servers, networking, and uptime monitoring day to day, and makes sure the causes and fixes here hold up in production.
The short version: If you are a visitor, there is nothing to fix. The page was removed deliberately and no replacement exists, so search the website or use its navigation instead. If you own the website, confirm the 410 is intentional; where a genuine replacement exists, serve a 301 to that specific URL rather than a 410.
Key takeaways
- 410 Gone means the resource was here, has been removed deliberately and permanently, and no forwarding address exists. It is a statement of intent, which is exactly what a 404 is not.
- A 404 is agnostic: the server cannot find anything at that URL and does not claim to know why, or whether it ever existed. A 410 says the removal was on purpose and is not going to be reversed.
- Google treats 410 as a marginally stronger removal signal than 404 and such URLs tend to leave the index slightly sooner, but both eventually get there. Speed is not the main reason to use it.
- Use 301 instead when a genuine replacement exists. Redirecting a deleted page somewhere loosely related is worse than a clean 410, and search engines discount irrelevant redirects as soft 404s regardless.
- A high count of 410s is not a problem in itself. It is a correct response, so a site retiring expired listings properly will produce many. A sudden spike on URLs that should still work is the thing to investigate.
- Error type
- HTTP 4xx client error
- Whose side
- Almost always the website, and usually on purpose
- Fix difficulty
- Easy
- Common cause
- The resource was permanently removed
How did you find out this time?
Pulsetic is website uptime monitoring. It checks your URL from outside your network as often as every 30 seconds, confirms any failure from another region, then emails you.
10 monitors free, email alerts on failure and recovery. No credit card.
What does 410 Gone mean?
A 410 Gone is an HTTP status code telling the client that the resource was available at this URL, has been intentionally removed, and will not be available again. RFC 9110 frames it as the origin server knowing the condition is likely permanent, and recommends it where the removal is deliberate and the owner wants remote links to that resource to be removed as well. That last part is the point of the code. A 404 says only that nothing was found, which could mean a typo, a broken link, a resource that never existed, or one that is temporarily missing. A 410 removes the ambiguity by stating that the absence is intentional and settled.
For search engines the difference is real but modest. Google treats 410 as a slightly stronger removal signal than 404, and URLs returning it tend to fall out of the index a little sooner, though both arrive at the same destination in the end. The stronger argument for using it correctly is operational. Expired job listings, discontinued products, deleted user content, and sunset API versions are all genuinely gone, and saying so plainly stops crawlers and clients retrying indefinitely, keeps your own error reporting honest, and makes a spike of unexpected 410s a signal worth acting on rather than noise mixed in with ordinary 404s.
- 410
- HTTP status code
- 4xx
- Client-side error class
- 301
- Use this instead when a replacement exists
How the 410 Gone error appears
The wording changes depending on your browser, device, or server. Here is how this error commonly shows up:
410
Gone
This resource has been permanently removed.
410 GoneHTTP Error 410Error 410HTTP 410410 Gone nginxStatus 410
410 vs 404, 301 and 503
These are the four honest answers for a URL that is not serving its usual content, and they differ on permanence and replacement.
| Code | What it means | When to choose it |
|---|---|---|
| 410 Gone | The resource was here and has been deliberately removed for good, with nothing to replace it. | Expired listings, discontinued items, sunset API versions, deleted content. |
| 404 Not Found | Nothing was found at that URL. The server makes no claim about whether it ever existed or might return. | A typo, a broken link, or any absence you are not certain is permanent. |
| 301 Moved Permanently | The resource now lives at a different URL, and clients should use that one from now on. | A genuine, specific replacement exists. Do not redirect to the homepage as a substitute. |
| 503 Service Unavailable | The resource is temporarily unavailable and should be requested again later. | Planned maintenance or a transient outage. Add Retry-After where you can. |
Choosing between 410, 404, 301 and 503
All four are legitimate answers for a URL that is not serving its usual content, and the right one depends on whether the resource is coming back and whether anything replaces it.
| Code | Use it when | What crawlers do |
|---|---|---|
410 Gone | Removed on purpose, permanently, no replacement | Drop the URL, slightly sooner than a 404 |
404 Not Found | Missing, or you are not certain it is permanent | Drop the URL after retrying for longer |
301 Moved Permanently | A genuine replacement exists at another URL | Follow it and transfer signals to the target |
503 Service Unavailable | Temporarily down, planned or otherwise | Retry later; add Retry-After to say when |
What causes 410 Gone?
- Content retired on purpose: an expired job posting, a discontinued product, a closed event, or an old promotion that the website removes as a matter of routine.
- A user or author deleting their own content, where the website chooses to record the removal as permanent rather than serving a generic 404.
- An API version being sunset, where the endpoint answers 410 to make clear the version is withdrawn rather than temporarily broken.
- A deliberate cleanup of URLs that were indexed by mistake, using 410 to have them dropped rather than waiting out repeated 404 crawls.
- A rewrite rule, plugin, or CDN configuration returning 410 by accident on URLs that should still be live, which is the one case where a 410 really is a fault.
- A migration that removed a whole section of the website and mapped it to 410 wholesale, including URLs that did have valid replacements and should have been redirected.
How to find the cause fast
- Run
curl -Ion the URL to confirm the status is genuinely 410 rather than a 404 or a soft 404 page returning 200. - Check the URL against your own list of retired content. If it should still be live, the 410 is coming from a rule rather than from your application logic.
- Look at whether a specific replacement exists. A URL that has a direct successor should be serving a 301 to it rather than a 410.
- Watch the trend rather than the count. A steady stream of 410s from expiring content is healthy; a sudden spike is a deployment or configuration problem.
How 410 Gone looks from the outside
A 410 is a valid response, so the server looks entirely healthy from outside and an up-or-down check will report the website up. That is usually correct, because most 410s are deliberate. The failure worth catching is the inverse: a rule or a deployment that starts returning 410 on URLs that should be serving content, which silently removes those pages from search results while every infrastructure dashboard stays green. Watching the actual status code on the URLs that matter, rather than whether the host answers, is what separates an intentional 410 from an accidental one.
To confirm the exact code a URL returns, or to re-test several at once after a fix, run them through the free bulk URL status checker.
How to fix 410 Gone
If you are a visitor
- Accept that the page is gone. A 410 is deliberate, so reloading, clearing cache, or trying another browser will not bring it back.
- Use the website's search or navigation to look for a current equivalent, such as a newer listing or a replacement product.
- Check an archive service if you need the old content for reference rather than for a live transaction.
- If you reached the page from a link on another website, that link is simply out of date, and the website owner cannot fix it from their side.
If you run the website
- Confirm each 410 is intentional. Compare the URLs returning it against the content you actually retired, and treat anything unexpected as a configuration fault.
- Serve a
301instead wherever a genuine, specific replacement exists. Redirecting to the homepage is not a replacement and will be treated as a soft 404. - Return a helpful body with the 410 for anything a person may land on: a short explanation plus a link to the relevant category or a search box.
- Do not use 410 for content that might return. Use 404 where you are unsure and 503 with
Retry-Afterfor planned downtime. - For a sunset API version, include a body naming the replacement version and announce the date well ahead of the change, so callers are not diagnosing it in production.
- Make sure your custom error page returns the 410 status itself rather than a 200. A page that says the item is gone while returning 200 is a soft 404.
- Exclude deliberate 410s from your error alerting thresholds, so a real spike stands out instead of being buried under routine expiry.
Still not fixed? Next steps
- Confirm the 410 is deliberate. Run
curl -Ion the URL and check whether your application meant to send it or whether a rule, plugin, or deployment is returning it by accident. - If a spike appears in your logs or in Search Console, compare the affected URLs against what you actually retired. Anything on the list that should still be live points at a bad rewrite rule or a failed deploy.
- Check whether a replacement exists for each removed URL. Where one does, a 301 to the specific successor serves visitors and preserves ranking signals far better than a 410.
- For API versions being sunset, pair the 410 with a body naming the replacement version, and announce the date in advance. A caller who hits an undocumented 410 has no way to know what to do next.
- Make sure the 410 is not being served with a 200 status by a custom error page. A page that says the item is gone while returning 200 is a soft 404, and search engines treat it as one.
Code & configuration
Copy-paste starting points. Replace example.com and the paths with your own, and test changes on staging before production.
Return 410 for a retired path in nginx
# a single retired section, answered without hitting the app
location /promotions/summer-2024/ {
return 410;
}
# use "return 301 /promotions/current/;" instead when a replacement exists
Return 410 with a useful body from the application
http_response_code(410);
header("Content-Type: application/json");
echo json_encode([
"error" => "This API version was retired on 2026-01-31.",
"use" => "https://api.example.com/v3/",
]);
// a bare 410 leaves the caller with nowhere to go
Check the status rather than trusting the page text
curl -I https://example.com/jobs/expired-listing
# HTTP/1.1 410 Gone <- correct
# HTTP/1.1 200 OK <- soft 404: the page says gone, the status disagrees
How to prevent 410 Gone
The 410 worth catching is the one you did not intend, where a rule or a deployment starts returning it on pages that should be serving content and quietly removes them from search results. Nothing about that looks like an outage, so infrastructure dashboards stay green while traffic drains away. Pulsetic checks your website from multiple locations every 30 seconds and alerts you by email, SMS, voice call, Slack, Discord, Telegram, or webhook the moment a URL stops returning the status code you expect, so an accidental 410 surfaces in minutes rather than in next month's traffic report.
Learn how Pulsetic's uptime monitoring detects this from the outside, across 15+ locations.
Sources and further reading
The specifications and vendor documentation this guide is written from, plus deeper reading on the parts it only summarises.
Frequently asked questions
-
What is the difference between 404 and 410?
A 404 Not Found says only that nothing was found at that URL, without claiming to know why. It could be a typo, a broken link, a page that never existed, or one that is temporarily missing. A 410 Gone is a stronger statement: the resource was here, it was removed deliberately, and it is not coming back. The status codes describe the same absence, but 410 adds intent and permanence that a 404 deliberately withholds.
-
Does using 410 remove pages from Google faster?
Marginally. Google has said it treats 410 as a slightly stronger removal signal, and those URLs tend to drop out of the index a little sooner than 404s, but both end up removed. If you are hoping for a dramatic difference you will be disappointed. The better reason to use 410 is accuracy: it records that the removal was intentional, which keeps your logs honest and makes unexpected 410s a signal worth acting on.
-
Should I redirect deleted pages instead of returning 410?
Only when a genuine replacement exists, and then redirect to that specific URL rather than to the homepage. A 301 to a closely equivalent page serves visitors well and passes ranking signals. A redirect to something loosely related is worse than a clean 410, because visitors land somewhere they did not want and search engines are likely to treat the irrelevant redirect as a soft 404 anyway.
-
Are lots of 410 errors bad for my website?
Not in themselves. A 410 is a correct, deliberate response, so any website that retires expired listings properly will accumulate a large number and remain perfectly healthy. Error dashboards that lump 410s in with genuine faults make this look alarming when it is not. What deserves attention is a sudden spike, particularly on URLs that should still be live, since that points at a bad rule or a failed deployment.
-
Can a 410 be temporary?
By definition it should not be. 410 means permanently gone, and a client that believes you may stop requesting the URL altogether. For content that is temporarily unavailable, a 404 keeps the option open, and a 503 with a
Retry-Afterheader is the correct answer for planned maintenance. Using 410 for something you intend to restore risks having it dropped from indexes you then have to earn back. -
How do I return a 410 without breaking the page for visitors?
Serve a real page alongside the status code. RFC 9110 permits a 410 to include a representation, so return a short explanation of what was removed plus a link to the relevant category or a search box. The important detail is that the HTTP status stays 410. A friendly page returned with a 200 status is a soft 404, which is the outcome you were trying to avoid.
-
Does a 410 hurt my SEO?
Not when it is intentional. Removing content you no longer want indexed is a normal part of running a website, and 410 is the clearest way to say so. The URL will lose its rankings, but that is the point. The genuine SEO risk is an accidental 410 on pages you still want indexed, which quietly removes them from search results while nothing else looks wrong, so it is worth monitoring the status codes of URLs that matter.
-
Does Google really treat 410 differently from 404?
Slightly, and the difference is smaller than most people assume. Google has said publicly that a 410 is treated as a marginally stronger removal signal and that such URLs tend to drop out of the index a little sooner than 404s, but both end in the same place. The practical value of 410 is not the speed. It is that you are recording an intention: this was removed on purpose and is not coming back. That distinction is worth having in your own logs and for any crawler that respects it, even when the ranking outcome is identical.
-
Should I use 410 or 301 for a page I deleted?
Use a 301 when there is a genuine replacement, and 410 when there is not. Redirecting a removed page to a loosely related one, or worse to the homepage, is unhelpful to visitors and search engines treat an irrelevant redirect as a soft 404 anyway. If a discontinued product has a direct successor, redirect to it. If it simply no longer exists, 410 is the honest answer and it stops the URL being retried indefinitely.
-
Is it bad to have a lot of 410s?
No, and this trips people up because error-count dashboards lump them in with genuine faults. A 410 is a deliberate, correct response, so a site that retires expired listings properly will accumulate thousands of them and be perfectly healthy. What matters is whether the 410s are intentional. A sudden spike on URLs that should still work points at a bad deployment or a broken rule, and that is worth investigating immediately.
-
Can I use 410 for content that might come back later?
You should not. 410 means permanently gone, and a crawler that takes you at your word may stop requesting the URL. For content that is temporarily unavailable, a 404 leaves the door open, and a 503 with a
Retry-Afterheader is the correct answer for planned downtime. Reserve 410 for the cases where you are certain, such as an expired job posting or a sunset API version. -
Do I need a response body on a 410?
It is not required, but it is worth having for anything a person might land on. RFC 9110 allows a 410 to carry a representation explaining the situation, and a short page saying the item was removed, with a link to a category or a search, turns a dead end into something navigable. For an API, a small JSON body naming the sunset version and pointing at its replacement saves the caller a support ticket.
Trusted by teams at companies around the world
-
Catch the next outage before your visitors do.
2-minute setup · Cancel any time
-
No credit card needed