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.
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?
| Code | Reason phrase | Class | Defined in |
|---|---|---|---|
| 100 | Continue | 1xx Informational | RFC 9110, Section 15.2.1 |
| 101 | Switching Protocols | 1xx Informational | RFC 9110, Section 15.2.2 |
| 102 | Processing | 1xx Informational | RFC 2518 |
| 103 | Early Hints | 1xx Informational | RFC 8297 |
| 104 | Upload Resumption Supported (temporary registration, expires 2026-11-13) | 1xx Informational | draft-ietf-httpbis-resumable-upload-05 (Internet-Draft) |
| 200 | OK | 2xx Successful | RFC 9110, Section 15.3.1 |
| 201 | Created | 2xx Successful | RFC 9110, Section 15.3.2 |
| 202 | Accepted | 2xx Successful | RFC 9110, Section 15.3.3 |
| 203 | Non-Authoritative Information | 2xx Successful | RFC 9110, Section 15.3.4 |
| 204 | No Content | 2xx Successful | RFC 9110, Section 15.3.5 |
| 205 | Reset Content | 2xx Successful | RFC 9110, Section 15.3.6 |
| 206 | Partial Content | 2xx Successful | RFC 9110, Section 15.3.7 |
| 207 | Multi-Status | 2xx Successful | RFC 4918 |
| 208 | Already Reported | 2xx Successful | RFC 5842 |
| 226 | IM Used | 2xx Successful | RFC 3229 |
| 300 | Multiple Choices | 3xx Redirection | RFC 9110, Section 15.4.1 |
| 301 | Moved Permanently | 3xx Redirection | RFC 9110, Section 15.4.2 |
| 302 | Found | 3xx Redirection | RFC 9110, Section 15.4.3 |
| 303 | See Other | 3xx Redirection | RFC 9110, Section 15.4.4 |
| 304 | Not Modified | 3xx Redirection | RFC 9110, Section 15.4.5 |
| 305 | Use Proxy | 3xx Redirection | RFC 9110, Section 15.4.6 |
| 306 | (Unused) | 3xx Redirection | RFC 9110, Section 15.4.7 |
| 307 | Temporary Redirect | 3xx Redirection | RFC 9110, Section 15.4.8 |
| 308 | Permanent Redirect | 3xx Redirection | RFC 9110, Section 15.4.9 |
| 400 | Bad Request | 4xx Client Error | RFC 9110, Section 15.5.1 |
| 401 | Unauthorized | 4xx Client Error | RFC 9110, Section 15.5.2 |
| 402 | Payment Required | 4xx Client Error | RFC 9110, Section 15.5.3 |
| 403 | Forbidden | 4xx Client Error | RFC 9110, Section 15.5.4 |
| 404 | Not Found | 4xx Client Error | RFC 9110, Section 15.5.5 |
| 405 | Method Not Allowed | 4xx Client Error | RFC 9110, Section 15.5.6 |
| 406 | Not Acceptable | 4xx Client Error | RFC 9110, Section 15.5.7 |
| 407 | Proxy Authentication Required | 4xx Client Error | RFC 9110, Section 15.5.8 |
| 408 | Request Timeout | 4xx Client Error | RFC 9110, Section 15.5.9 |
| 409 | Conflict | 4xx Client Error | RFC 9110, Section 15.5.10 |
| 410 | Gone | 4xx Client Error | RFC 9110, Section 15.5.11 |
| 411 | Length Required | 4xx Client Error | RFC 9110, Section 15.5.12 |
| 412 | Precondition Failed | 4xx Client Error | RFC 9110, Section 15.5.13 |
| 413 | Content Too Large | 4xx Client Error | RFC 9110, Section 15.5.14 |
| 414 | URI Too Long | 4xx Client Error | RFC 9110, Section 15.5.15 |
| 415 | Unsupported Media Type | 4xx Client Error | RFC 9110, Section 15.5.16 |
| 416 | Range Not Satisfiable | 4xx Client Error | RFC 9110, Section 15.5.17 |
| 417 | Expectation Failed | 4xx Client Error | RFC 9110, Section 15.5.18 |
| 418 | (Unused): reserved; RFC 2324 joke “I'm a teapot”, not a real status | 4xx Client Error | RFC 9110, Section 15.5.19 |
| 421 | Misdirected Request | 4xx Client Error | RFC 9110, Section 15.5.20 |
| 422 | Unprocessable Content | 4xx Client Error | RFC 9110, Section 15.5.21 |
| 423 | Locked | 4xx Client Error | RFC 4918 |
| 424 | Failed Dependency | 4xx Client Error | RFC 4918 |
| 425 | Too Early | 4xx Client Error | RFC 8470 |
| 426 | Upgrade Required | 4xx Client Error | RFC 9110, Section 15.5.22 |
| 428 | Precondition Required | 4xx Client Error | RFC 6585 |
| 429 | Too Many Requests | 4xx Client Error | RFC 6585 |
| 431 | Request Header Fields Too Large | 4xx Client Error | RFC 6585 |
| 451 | Unavailable For Legal Reasons | 4xx Client Error | RFC 7725 |
| 500 | Internal Server Error | 5xx Server Error | RFC 9110, Section 15.6.1 |
| 501 | Not Implemented | 5xx Server Error | RFC 9110, Section 15.6.2 |
| 502 | Bad Gateway | 5xx Server Error | RFC 9110, Section 15.6.3 |
| 503 | Service Unavailable | 5xx Server Error | RFC 9110, Section 15.6.4 |
| 504 | Gateway Timeout | 5xx Server Error | RFC 9110, Section 15.6.5 |
| 505 | HTTP Version Not Supported | 5xx Server Error | RFC 9110, Section 15.6.6 |
| 506 | Variant Also Negotiates | 5xx Server Error | RFC 2295 |
| 507 | Insufficient Storage | 5xx Server Error | RFC 4918 |
| 508 | Loop Detected | 5xx Server Error | RFC 5842 |
| 510 | Not Extended (OBSOLETED) | 5xx Server Error | RFC 2774 (now Historic) |
| 511 | Network Authentication Required | 5xx Server Error | RFC 6585 |
How to look up an HTTP status code
- 1Type 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”.
- 2Read 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.
- 3Check 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.
- 4Browse 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?
Should an API return 200 or 201 after creating a resource?
What is the difference between a 301, 302, 307 and 308 redirect?
Is 418 I'm a teapot a real HTTP status code?
Which status code should an API return for validation errors?
Sources
- IANA, Hypertext Transfer Protocol (HTTP) Status Code Registry (last updated 2025-09-15) (checked 20 Oct 2026)
- RFC 9110, HTTP Semantics, Section 15 (status codes, classes, unrecognised codes, 418 reserved) (checked 20 Oct 2026)
- RFC 9112, HTTP/1.1, Section 4 (clients should ignore the reason phrase) (checked 20 Oct 2026)
- RFC 9113, HTTP/2, Section 8.3.2 (the :status pseudo-header) (checked 20 Oct 2026)
- RFC 6585, Additional HTTP Status Codes (428, 429, 431, 511) (checked 20 Oct 2026)
- RFC 8297, An HTTP Status Code for Indicating Hints (103, Experimental) (checked 20 Oct 2026)
- RFC 4918, WebDAV (207, 422 as Unprocessable Entity, 423, 424, 507; removal of 102) (checked 20 Oct 2026)
- RFC 2518, WebDAV (102 Processing) (checked 20 Oct 2026)
- RFC 5842, Binding Extensions to WebDAV (208, 508, Experimental) (checked 20 Oct 2026)
- RFC 3229, Delta encoding in HTTP (226) (checked 20 Oct 2026)
- RFC 2295, Transparent Content Negotiation in HTTP (506, Experimental) (checked 20 Oct 2026)
- RFC 2774, An HTTP Extension Framework (510; status now Historic) (checked 20 Oct 2026)
- RFC 8470, Using Early Data in HTTP (425) (checked 20 Oct 2026)
- RFC 7725, An HTTP Status Code to Report Legal Obstacles (451) (checked 20 Oct 2026)
- RFC 6455, The WebSocket Protocol (101 ends the opening handshake) (checked 20 Oct 2026)
- RFC 2324, Hyper Text Coffee Pot Control Protocol (418, 1 April 1998, Informational) (checked 20 Oct 2026)
- RFC 7168, HTCPCP for Tea Efflux Appliances (418, 1 April 2014, Informational) (checked 20 Oct 2026)
- IETF draft-ietf-httpbis-resumable-upload, Resumable Uploads for HTTP (104, Internet-Draft) (checked 20 Oct 2026)
- RFC 7231, HTTP/1.1 Semantics and Content (earlier name Payload Too Large) (checked 20 Oct 2026)
- RFC 2616, HTTP/1.1 (earlier names Request Entity Too Large, Request-URI Too Long, Requested Range Not Satisfiable) (checked 20 Oct 2026)
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