HTTP Status Codes / 4xx HTTP Status Codes / HTTP 404

404 Not Found

This is an educational reference page about HTTP 404 Not Found. The page itself is served as 200 OK so it can be indexed as HTTP documentation.

The origin server did not find a current representation for the target resource, or is not willing to say that one exists.

Specification

Registered in the IANA HTTP Status Code Registry as Not Found. Defined in RFC 9110, Section 15.5.5.

What it means

HTTP 404 Not Found means the server has no current representation for the requested URL, or does not want to reveal that one exists. A 404 says nothing about whether the condition is temporary or permanent. When the server knows the resource is gone for good, RFC 9110 prefers 410 Gone.

When to use it

Common causes

How to fix it

Examples

API record not found

GET /api/users/999 HTTP/1.1
Host: api.example.com

HTTP/1.1 404 Not Found
Content-Type: application/problem+json

{
  "type": "https://api.example.com/problems/not-found",
  "title": "User not found",
  "status": 404
}

Common mistakes

Developer notes

404 is the safe default when you are unsure. It reveals the least, and it does not commit you to saying the resource is gone forever. Switch to 410 when you know the removal is permanent and you want caches and crawlers to drop the URL.

Questions

What does HTTP 404 Not Found mean?

HTTP 404 means the server has no current representation for the requested URL, or will not say whether one exists.

What is the difference between 404 and 410?

404 does not say whether the resource will come back. 410 says it is gone and the condition is likely permanent.

Is 404 bad for SEO?

No. 404 is the correct response for URLs that do not exist. Redirect URLs that moved, and avoid soft 404s that return 200.

See also

Header and content rules

RFC 9110 adds no header or content rule specific to 404. The 4xx class rules also apply. See 404 in the response obligations table.

4xx client error – the request contains bad syntax or cannot be fulfilled


HTTP status code lookup
REST API status code chooser
cURL command generator
By Ping Now, a website/API/service uptime monitor
Data from Wikipedia