HTTP 404 Not Found

HTTP 404 Not Found is the most recognized status code outside of developer circles. When a user sees it, a page did not load. When a developer sees it in logs, a URL returned nothing. The cause is always that no resource matches the URL — the question is whether that is expected or a bug.

For live sites, unexpected 404s on URLs that previously returned 200 usually mean: a deployment broke routing, a page was deleted without a redirect, or a URL was renamed without updating internal links. In e-commerce and CMS systems, product deletions and page archives are the most common source of new 404s.

For crawl health, 404s are preferable to soft 404s. A real 404 tells Googlebot the page is gone. A soft 404 (200 with "not found" content) keeps the URL in the index, diluting crawl budget and creating thin-content entries.

Quick reference

Code404
NameNot Found
Category4xx client errors
SpecificationRFC 9110
IANA statusAssigned
When to useReturn 404 when no resource exists at the requested URL. Use 410 Gone when the resource existed and has been intentionally, permanently removed (helps crawlers delist faster). Use 403 when the resource exists but access is denied. Avoid soft 404s (returning 200 with "page not found" content) — search engines treat them as indexed pages.
Client behaviorNo automatic retry. Browser displays the 404 error page. Crawlers record the URL as not found and typically delist it after repeated 404 responses. API clients should surface the error and not retry.
CachingMay be cached if the server includes a Cache-Control header, but this is rarely appropriate. Most servers do not cache 404s. CDNs may cache 404s if Cache-Control: max-age is present — be careful with CDN 404 caching for dynamic routes.
Quick referenceHTTP 404 status reference →

Common causes

  • Broken or outdated internal link
  • Deleted or unpublished page
  • URL typed incorrectly by the user
  • Routing misconfiguration in the application
  • Missing rewrite or redirect rule after a URL change

How to fix it

  • Verify the URL is correct
  • Restore the resource if removed unintentionally
  • Add or correct server routing rules
  • Set up a 301 redirect if the page moved permanently
  • Update all internal links pointing to the old URL

Example exchange

GET /missing-page HTTP/1.1
Host: example.com

HTTP/1.1 404 Not Found
Content-Type: text/html

<h1>Page Not Found</h1>

When you see this in production

Monitor 404 rates in CDN logs and web server access logs. Differentiate between:

- External 404s: URLs linked from external sites that no longer exist (expected, track and optionally redirect)

- Internal 404s: URLs linked from your own site that return 404 (always a bug to fix)

- Systematic 404 patterns: /old-path/*, /api/v1/* (routing migration issue)

Cross-reference your 404 log URLs with Search Console's "Not Found" report to prioritize which 404s have the most organic traffic impact.

What developers usually do next

  • Handling 404s:
  • 1. Check web server / application routing configuration
  • 2. Verify the deployment did not remove or rename route files
  • 3. Check for missing redirect rules on renamed URLs
  • 4. Crawl your site with a crawler (Screaming Frog, sitebulb) to find all internal links pointing to 404s
  • 5. Set up 404 logging to capture the Referer header (tells you which page linked to the broken URL)
  • 6. For deliberately removed pages, evaluate whether to add a 301 redirect to the most relevant replacement or a 410 if the content is truly gone

When NOT to use this code

Do not use 404 as a "soft" response by returning 200 with a "not found" message — this creates soft 404s that stay in search indexes. Do not use 404 for authentication failures (use 401 or 403). Do not use 404 to hide a resource that exists but is access-restricted (use 403 — or 404 if you intentionally want to hide existence). Do not return 404 for a resource that existed and was permanently removed — use 410 to speed up crawl deindexation.

Related status codes

HTTP 404 quick reference · HTTP 400 Bad Request · HTTP 403 Forbidden · HTTP 410 Gone · HTTP 410 quick reference

Comparisons

HTTP 404 vs 400 · HTTP 404 vs 401 · HTTP 404 vs 403 · HTTP 404 vs 410 · HTTP 404 vs 451

Frequently asked questions

Does a 404 mean the server is down?

No. A 404 means the server is running fine but cannot find the resource at that URL. If the server were down, you would see a connection error or 502/503.

What is the difference between 404 and 410?

404 means the resource is not found — it may or may not have existed. 410 Gone is an explicit signal that the resource existed and has been permanently removed. Use 410 when you want to signal permanent deletion to crawlers.

Should I redirect all 404 pages to the homepage?

Generally no. Bulk-redirecting 404s to the homepage is considered a soft 404 by Google and does not help users. Only redirect when there is a genuinely relevant replacement resource.

Standards reference

This definition is derived from the IANA HTTP Status Code Registry and RFC 9110. Human-readable operational guidance by ErrorLookup.