HTTP status codes: lookup and full list

An HTTP status code is the three-digit number a server sends back with every response: 2xx means success, 3xx a redirect, 4xx a problem with the request and 5xx a problem on the server. Type a code to see what it means, where it is defined and when an API should use it.

Type a code such as 429, a class such as 5xx, or words from the reason phrase such as “not found”.

HTTP status code

404 Not Found

4xx Client Error · RFC 9110, Section 15.5.5

Code
404
Reason phrase
Not Found
Class
4xx Client Errorthe request has a problem the client has to fix
What it means
The server has no current representation for the URL, or won't say that one exists.
When an API should use it
An unknown route or resource ID. If you know the resource was removed for good, 410 is more precise.
Defined in
RFC 9110, Section 15.5.5
Registry status
Registered in the IANA HTTP Status Code Registry
Caching
Cacheable by default: RFC 9110 lists it as heuristically cacheable
HTTP/1.1 status line
HTTP/1.1 404 Not Found

What do HTTP status codes mean?

Every HTTP response starts with a three-digit status code, and the first digit is its class: 1xx informational (an interim response before the final one), 2xx successful, 3xx redirection, 4xx client error and 5xx server error. RFC 9110, the HTTP Semantics standard, defines most of them, and the IANA HTTP Status Code Registry is the official list of every code and the document that defines it.

A client has to understand the class of any code even if it doesn't know the code itself: RFC 9110 says an unrecognised code is treated as the x00 code of its class, so an unknown 4xx is handled like 400 Bad Request. That is why picking the right class matters more than picking an exotic code.

The words after the number, such as Not Found, are the reason phrase. They are for people: RFC 9112 says an HTTP/1.1 client should ignore them, and an HTTP/2 response carries only the number, in its :status field. Your API's error body is where the real explanation goes.

The lookup reads a code (404), a class (4xx), a status line (HTTP/1.1 404 Not Found) or words from the reason phrase. Its list is the IANA registry as last updated on 2025-09-15, checked 2026-10-20: 64 entries, of which 62 name a status and two, 306 and 418, are marked (Unused). 418 I'm a teapot comes from an April 1 joke RFC and is reserved, not a real status. The advice on when an API should use each code is ours, built on the defining documents.

1xx  Informational   interim response, more to come
2xx  Successful      200 OK, 201 Created, 204 No Content
3xx  Redirection     301, 302, 303, 304, 307, 308
4xx  Client Error    400, 401, 403, 404, 409, 422, 429
5xx  Server Error    500, 502, 503, 504
unknown code → treated as x00 of its class (RFC 9110 §15)

Which HTTP status codes are registered?

Every entry in the IANA HTTP Status Code Registry (last updated 2025-09-15, checked 2026-10-20), with IANA's description and the document that defines it
CodeReason phraseClassDefined in
100Continue1xx InformationalRFC 9110, Section 15.2.1
101Switching Protocols1xx InformationalRFC 9110, Section 15.2.2
102Processing1xx InformationalRFC 2518
103Early Hints1xx InformationalRFC 8297
104Upload Resumption Supported (temporary registration, expires 2026-11-13)1xx Informationaldraft-ietf-httpbis-resumable-upload-05 (Internet-Draft)
200OK2xx SuccessfulRFC 9110, Section 15.3.1
201Created2xx SuccessfulRFC 9110, Section 15.3.2
202Accepted2xx SuccessfulRFC 9110, Section 15.3.3
203Non-Authoritative Information2xx SuccessfulRFC 9110, Section 15.3.4
204No Content2xx SuccessfulRFC 9110, Section 15.3.5
205Reset Content2xx SuccessfulRFC 9110, Section 15.3.6
206Partial Content2xx SuccessfulRFC 9110, Section 15.3.7
207Multi-Status2xx SuccessfulRFC 4918
208Already Reported2xx SuccessfulRFC 5842
226IM Used2xx SuccessfulRFC 3229
300Multiple Choices3xx RedirectionRFC 9110, Section 15.4.1
301Moved Permanently3xx RedirectionRFC 9110, Section 15.4.2
302Found3xx RedirectionRFC 9110, Section 15.4.3
303See Other3xx RedirectionRFC 9110, Section 15.4.4
304Not Modified3xx RedirectionRFC 9110, Section 15.4.5
305Use Proxy3xx RedirectionRFC 9110, Section 15.4.6
306(Unused)3xx RedirectionRFC 9110, Section 15.4.7
307Temporary Redirect3xx RedirectionRFC 9110, Section 15.4.8
308Permanent Redirect3xx RedirectionRFC 9110, Section 15.4.9
400Bad Request4xx Client ErrorRFC 9110, Section 15.5.1
401Unauthorized4xx Client ErrorRFC 9110, Section 15.5.2
402Payment Required4xx Client ErrorRFC 9110, Section 15.5.3
403Forbidden4xx Client ErrorRFC 9110, Section 15.5.4
404Not Found4xx Client ErrorRFC 9110, Section 15.5.5
405Method Not Allowed4xx Client ErrorRFC 9110, Section 15.5.6
406Not Acceptable4xx Client ErrorRFC 9110, Section 15.5.7
407Proxy Authentication Required4xx Client ErrorRFC 9110, Section 15.5.8
408Request Timeout4xx Client ErrorRFC 9110, Section 15.5.9
409Conflict4xx Client ErrorRFC 9110, Section 15.5.10
410Gone4xx Client ErrorRFC 9110, Section 15.5.11
411Length Required4xx Client ErrorRFC 9110, Section 15.5.12
412Precondition Failed4xx Client ErrorRFC 9110, Section 15.5.13
413Content Too Large4xx Client ErrorRFC 9110, Section 15.5.14
414URI Too Long4xx Client ErrorRFC 9110, Section 15.5.15
415Unsupported Media Type4xx Client ErrorRFC 9110, Section 15.5.16
416Range Not Satisfiable4xx Client ErrorRFC 9110, Section 15.5.17
417Expectation Failed4xx Client ErrorRFC 9110, Section 15.5.18
418(Unused): reserved; RFC 2324 joke “I'm a teapot”, not a real status4xx Client ErrorRFC 9110, Section 15.5.19
421Misdirected Request4xx Client ErrorRFC 9110, Section 15.5.20
422Unprocessable Content4xx Client ErrorRFC 9110, Section 15.5.21
423Locked4xx Client ErrorRFC 4918
424Failed Dependency4xx Client ErrorRFC 4918
425Too Early4xx Client ErrorRFC 8470
426Upgrade Required4xx Client ErrorRFC 9110, Section 15.5.22
428Precondition Required4xx Client ErrorRFC 6585
429Too Many Requests4xx Client ErrorRFC 6585
431Request Header Fields Too Large4xx Client ErrorRFC 6585
451Unavailable For Legal Reasons4xx Client ErrorRFC 7725
500Internal Server Error5xx Server ErrorRFC 9110, Section 15.6.1
501Not Implemented5xx Server ErrorRFC 9110, Section 15.6.2
502Bad Gateway5xx Server ErrorRFC 9110, Section 15.6.3
503Service Unavailable5xx Server ErrorRFC 9110, Section 15.6.4
504Gateway Timeout5xx Server ErrorRFC 9110, Section 15.6.5
505HTTP Version Not Supported5xx Server ErrorRFC 9110, Section 15.6.6
506Variant Also Negotiates5xx Server ErrorRFC 2295
507Insufficient Storage5xx Server ErrorRFC 4918
508Loop Detected5xx Server ErrorRFC 5842
510Not Extended (OBSOLETED)5xx Server ErrorRFC 2774 (now Historic)
511Network Authentication Required5xx Server ErrorRFC 6585

How to look up an HTTP status code

  1. 1
    Type the code or wordsEnter a code such as 429, a class such as 5xx, a status line from a log, or words such as “too many requests” or “teapot”.
  2. 2
    Read what it meansThe result gives the reason phrase, its class, what the code means and which RFC defines it, with any header the response must carry.
  3. 3
    Check when to use itThe “When an API should use it” line says when to return the code, and points to the better code where a common one is misused.
  4. 4
    Browse a whole classType 2xx, 3xx, 4xx or 5xx, or scroll to the full table, to see every registered code side by side.

Frequently asked questions

What is the difference between HTTP 401 and 403?
401 Unauthorized means the request isn't authenticated: credentials are missing or invalid, and the response must include a WWW-Authenticate challenge. 403 Forbidden means the server knows who you are, or doesn't need to, and still refuses; sending the same credentials again won't help.
Should an API return 200 or 201 after creating a resource?
201 Created. RFC 9110 defines it for requests that created a resource, identified by the Location header, so send Location with the new resource's URL and usually the resource itself in the body. 200 is for successes that didn't create anything.
What is the difference between a 301, 302, 307 and 308 redirect?
301 and 308 are permanent moves, 302 and 307 temporary ones. With 301 and 302 a client may switch a POST to GET when it follows the redirect, for historical reasons; 307 and 308 keep the original method and body.
Is 418 I'm a teapot a real HTTP status code?
No. It comes from RFC 2324, an April 1 joke protocol for coffee pots. The IANA registry lists 418 as (Unused), and RFC 9110 reserves it because it was used as a joke often enough that it can't be given a real meaning for now.
Which status code should an API return for validation errors?
422 Unprocessable Content when the body is well-formed but its values fail your rules, such as an invalid email address. Use 400 Bad Request when the body can't be parsed at all, and explain each error in the response body either way.

Sources

Related tools

See all 73 free tools

Need a custom dev tool for your team?

We build internal tools, dashboards, APIs, and SaaS platforms. If you can describe it, we can ship it.

Built by CountryDevs · No signup · No ads · We count visits, never what you enter