410 vs 301: Gone vs Moved Permanently

410 and 301 can look similar in logs, but they tell clients, crawlers, and API consumers different things.

AspectHTTP 410 — GoneHTTP 301 — Moved Permanently
DefinitionUnlike 404, a 410 explicitly tells clients and crawlers that the resource is gone for good. Search engines delist 410 pages faster than 404s.The resource at the requested URL has permanently moved to the URL in the Location header. Browsers and crawlers update their records. Search engines transfer ranking signals to the destination.
Plain-language summaryThe resource existed at this URL and has been permanently and intentionally removed. Unlike 404 which is ambiguous, 410 explicitly signals permanent deletion. Search engines deindex 410 pages faster than 404 pages.The resource has permanently moved to the URL in the Location header. Browsers and search engine crawlers update their internal records to the new URL. SEO signals (PageRank, links) are transferred to the destination. Use this only when the move is truly permanent — reversing a cached 301 is difficult.
When to useUse 410 when you have definitively removed a resource and do not plan to replace it. Use 404 when you are uncertain about the history or cannot confirm permanent removal. Use 301 when the content moved to a new URL. Do not use 410 for temporarily unavailable resources — that is 503.Use 301 for: permanent domain migrations (http→https, www→non-www, domain renames), permanent URL restructuring, consolidating duplicate URLs to a canonical. Do not use 301 for temporary campaigns, A/B tests, or login flows — use 302 or 307 for those. Use 308 if you need to preserve the HTTP method (POST stays POST) on a permanent redirect.
Client behaviorDo not retry. Crawlers record the permanent removal and dereference the URL from their index faster than they would for a 404.Browsers cache the redirect aggressively and follow it automatically, typically changing POST to GET (historical behavior). Search engine crawlers follow and pass link equity to the destination. Most HTTP clients follow redirects by default; some have a max follow depth (commonly 5–10 hops).
Caching behaviorMay be cached. Clients can cache 410 responses to avoid re-requesting a permanently gone resource.Cached by browsers and CDNs indefinitely unless Cache-Control or Expires specifies otherwise. Once cached, clients will not hit the original URL again until cache expiry. This makes 301s easy to deploy but hard to roll back — test before shipping.
SEO / crawler impactSearch crawlers interpret 410 (client-errors) for indexation and link equity accordingly.Search crawlers interpret 301 (redirect-codes) for indexation and link equity accordingly.
API / backend impactAPI clients branching on 410 expect Gone semantics.API clients branching on 301 expect Moved Permanently semantics.
Safe to retry?Only after fixing the underlying causeFollow redirect, then retry original intent

Common real-world scenarios

When you see HTTP 410

Use 410 for: deprecated API endpoints, permanently archived content, products that have been discontinued. In Search Console, 410s are processed and deindexed faster than 404s — relevant for SEO operations where you want to remove pages from Google quickly.

When you see HTTP 301

Common in access logs during site migrations, HTTPS enforcement, and URL canonicalization. Watch for: redirect chains (A→B→C — each hop adds latency and some crawlers have hop limits), redirect loops (A→B→A — will show as 301 thrashing in logs), and 301s that land on 404 (the redirect was set up but the destination does not exist).

Decision rule

Use 410 when the response should communicate gone behavior; use 301 when moved permanently is the accurate protocol signal.

A frequent mistake is swapping 410 and 301 for convenience; that causes client retry bugs, incorrect cache signals, and misleading monitoring data.

Use 410 when the correct protocol signal is Gone. Use 301 when the correct signal is Moved Permanently. Returning either code for the wrong reason breaks client expectations, cache behavior, and monitoring accuracy.

FAQ

What is the biggest difference between 410 and 301?

410 communicates Gone, while 301 communicates Moved Permanently. Choosing the right one keeps clients and intermediaries predictable.

Do 410 and 301 have SEO or caching impact?

Yes. Search engines and caches interpret status classes differently. Use each code according to its semantics to avoid accidental indexing, stale responses, or crawl inefficiency.

Can APIs safely return 410 instead of 301?

Only when it matches contract semantics. API clients often branch logic by exact code, so swapping them can break retries, auth handling, or user-facing errors.

Full guides

HTTP 410 Gone — full guide · HTTP 410 status reference · HTTP 301 Moved Permanently — full guide · All comparisons · HTTP 301 status reference

Related comparisons