HTTP Status Codes by RFC
HTTP status codes are not defined in one place. The core set lives in RFC 9110, but many codes you meet in production — 429, 451, the WebDAV codes — were added by separate extension RFCs over two decades. This page groups every registered code by the specification that defines it, so you can see a code's provenance at a glance: which document standardized it, which section to cite, and whether it is core HTTP, an extension, a draft, or obsolete.
The groupings below follow the reference column of the IANA HTTP Status Code Registry, the authoritative source of truth. For the same codes grouped by class (1xx–5xx) instead, see the complete status code list.
RFC 9110 — HTTP Semantics
The current core HTTP specification (June 2022), which obsoleted the older RFC 7231 / RFC 2616 series. It defines the great majority of the codes in everyday use across all five classes. Cite it as RFC 9110, Section 15.
| Code | Name | Section | Guide |
|---|---|---|---|
| 100 | Continue | §15.2.1 | Guide |
| 101 | Switching Protocols | §15.2.2 | Guide |
| 200 | OK | §15.3.1 | Guide |
| 201 | Created | §15.3.2 | Guide |
| 202 | Accepted | §15.3.3 | Guide |
| 203 | Non-Authoritative Information | §15.3.4 | Guide |
| 204 | No Content | §15.3.5 | Guide |
| 205 | Reset Content | §15.3.6 | Guide |
| 206 | Partial Content | §15.3.7 | Guide |
| 300 | Multiple Choices | §15.4.1 | Guide |
| 301 | Moved Permanently | §15.4.2 | Guide |
| 302 | Found | §15.4.3 | Guide |
| 303 | See Other | §15.4.4 | Guide |
| 304 | Not Modified | §15.4.5 | Guide |
| 305 | Use Proxy | §15.4.6 | Guide |
| 306 | (Unused) | §15.4.7 | Guide |
| 307 | Temporary Redirect | §15.4.8 | Guide |
| 308 | Permanent Redirect | §15.4.9 | Guide |
| 400 | Bad Request | §15.5.1 | Guide |
| 401 | Unauthorized | §15.5.2 | Guide |
| 402 | Payment Required | §15.5.3 | Guide |
| 403 | Forbidden | §15.5.4 | Guide |
| 404 | Not Found | §15.5.5 | Guide |
| 405 | Method Not Allowed | §15.5.6 | Guide |
| 406 | Not Acceptable | §15.5.7 | Guide |
| 407 | Proxy Authentication Required | §15.5.8 | Guide |
| 408 | Request Timeout | §15.5.9 | Guide |
| 409 | Conflict | §15.5.10 | Guide |
| 410 | Gone | §15.5.11 | Guide |
| 411 | Length Required | §15.5.12 | Guide |
| 412 | Precondition Failed | §15.5.13 | Guide |
| 413 | Content Too Large | §15.5.14 | Guide |
| 414 | URI Too Long | §15.5.15 | Guide |
| 415 | Unsupported Media Type | §15.5.16 | Guide |
| 416 | Range Not Satisfiable | §15.5.17 | Guide |
| 417 | Expectation Failed | §15.5.18 | Guide |
| 418 | (Unused) — “I'm a Teapot” | §15.5.19 | Guide |
| 421 | Misdirected Request | §15.5.20 | Guide |
| 422 | Unprocessable Content | §15.5.21 | Guide |
| 426 | Upgrade Required | §15.5.22 | Guide |
| 500 | Internal Server Error | §15.6.1 | Guide |
| 501 | Not Implemented | §15.6.2 | Guide |
| 502 | Bad Gateway | §15.6.3 | Guide |
| 503 | Service Unavailable | §15.6.4 | Guide |
| 504 | Gateway Timeout | §15.6.5 | Guide |
| 505 | HTTP Version Not Supported | §15.6.6 | Guide |
RFC 6585 — Additional HTTP Status Codes
A short 2012 RFC that added four widely used codes, most notably 429 Too Many Requests for rate limiting. These were defined outside the core spec and remain in RFC 6585.
RFC 4918 — WebDAV
The Web Distributed Authoring and Versioning extension. It introduced several codes for collection and locking semantics that some general APIs also reuse — 423 and 207 in particular.
| Code | Name | Guide |
|---|---|---|
| 207 | Multi-Status | Guide |
| 423 | Locked | Guide |
| 424 | Failed Dependency | Guide |
| 507 | Insufficient Storage | Guide |
Note: 422 Unprocessable Content originated in WebDAV but was moved into the core spec and is now defined by RFC 9110 §15.5.21.
RFC 5842 — Binding Extensions to WebDAV
Single-code and niche RFCs
Several codes each come from their own focused specification:
Deprecated, obsolete, and draft codes
A few codes carry special status in the registry and are worth flagging explicitly:
Unassigned codes
Some numbers in the registry have no assigned meaning. A compliant client treats an unrecognized code as the x00 of its class (e.g. an unknown 4xx behaves like 400). If you see one of these in production, it is almost always a custom or misconfigured signal — see the guide for what to use instead.
Standards reference
Groupings follow the reference column of the IANA HTTP Status Code Registry, the authoritative source for status code assignments. Core definitions are in RFC 9110. Human-readable guidance by ErrorLookup. · Browse all codes by class →