HTTP 404 vs 410 — Not Found vs Gone Status Code Comparison

http 404 vs 410: Not Found means the resource may exist later, while Gone signals permanent deletion. Learn how Google indexing, CDN caching, and SEO are affected.

Quick Cheat Sheet

Aspect 404 Not Found 410 Gone
Permanence Unknown / temporary Intentional, permanent
SEO signal "Try again later, maybe" "Deindex this URL"
Cacheability (default) Not cacheable by default Cacheable by default
Common use Generic missing resource Sunset endpoints, deleted users

The Semantic Difference

404 Not Found is the catch-all "no resource at this URI" response. The server isn't promising the resource never existed — it might exist tomorrow, it might be a typo, it might have moved without a redirect.

410 Gone is a stronger statement: the resource did exist and has been intentionally and permanently removed, with no forwarding address. Per RFC 9110 § 15.5.11, 410 is "primarily intended to assist the task of web maintenance by notifying the recipient that the resource is intentionally unavailable."

SEO and Crawler Behavior

This is where the difference really matters in production:

  • Google treats 404 and 410 similarly for indexing, but it deindexes 410 URLs slightly faster — typically within days vs. weeks.
  • Bing has historically been more aggressive about respecting 410.
  • For deleted user profiles or sunset blog posts you want gone from search, 410 is the correct signal.

Caching Behavior

By default, 410 is cacheable (RFC 9110 § 15.5.11), while 404 is not. This means a 410 response can be cached by CDNs and browsers without explicit Cache-Control headers, reducing origin load on permanently dead URLs.

When to Use 410 in Practice

  • A user permanently deletes their account → /users/{id} should return 410, not 404
  • You sunset an API version → /v1/* returns 410 with a Deprecation header pointing to v2
  • A blog post or product page is permanently removed (not moved) → 410

For temporary outages, neither code is correct — use 503 Service Unavailable instead.

Why Most Apps Just Use 404

Tracking which URLs were "intentionally" deleted vs. "never existed" requires a tombstone table, which most apps don't bother with. That's fine — 404 is an acceptable default. Reach for 410 only when you have a clear maintenance/SEO reason.

Real-World Use Case

A SaaS app that lets users delete their public profile should hard-delete the database row and ensure /u/{username} returns 410 Gone (with a tombstone record). This tells Google to drop the URL from the index quickly and lets your CDN cache the gone-state, vs. a 404 that crawlers will retry for weeks.

Look Up Any Status Code

Browse all status codes →