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.

CodeNameSectionGuide
100Continue§15.2.1Guide
101Switching Protocols§15.2.2Guide
200OK§15.3.1Guide
201Created§15.3.2Guide
202Accepted§15.3.3Guide
203Non-Authoritative Information§15.3.4Guide
204No Content§15.3.5Guide
205Reset Content§15.3.6Guide
206Partial Content§15.3.7Guide
300Multiple Choices§15.4.1Guide
301Moved Permanently§15.4.2Guide
302Found§15.4.3Guide
303See Other§15.4.4Guide
304Not Modified§15.4.5Guide
305Use Proxy§15.4.6Guide
306(Unused)§15.4.7Guide
307Temporary Redirect§15.4.8Guide
308Permanent Redirect§15.4.9Guide
400Bad Request§15.5.1Guide
401Unauthorized§15.5.2Guide
402Payment Required§15.5.3Guide
403Forbidden§15.5.4Guide
404Not Found§15.5.5Guide
405Method Not Allowed§15.5.6Guide
406Not Acceptable§15.5.7Guide
407Proxy Authentication Required§15.5.8Guide
408Request Timeout§15.5.9Guide
409Conflict§15.5.10Guide
410Gone§15.5.11Guide
411Length Required§15.5.12Guide
412Precondition Failed§15.5.13Guide
413Content Too Large§15.5.14Guide
414URI Too Long§15.5.15Guide
415Unsupported Media Type§15.5.16Guide
416Range Not Satisfiable§15.5.17Guide
417Expectation Failed§15.5.18Guide
418(Unused) — “I'm a Teapot”§15.5.19Guide
421Misdirected Request§15.5.20Guide
422Unprocessable Content§15.5.21Guide
426Upgrade Required§15.5.22Guide
500Internal Server Error§15.6.1Guide
501Not Implemented§15.6.2Guide
502Bad Gateway§15.6.3Guide
503Service Unavailable§15.6.4Guide
504Gateway Timeout§15.6.5Guide
505HTTP Version Not Supported§15.6.6Guide

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.

CodeNameSectionGuide
428Precondition Required§3Guide
429Too Many Requests§4Guide
431Request Header Fields Too Large§5Guide
511Network Authentication Required§6Guide

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.

CodeNameGuide
207Multi-StatusGuide
423LockedGuide
424Failed DependencyGuide
507Insufficient StorageGuide

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

CodeNameGuide
208Already ReportedGuide
508Loop DetectedGuide

Single-code and niche RFCs

Several codes each come from their own focused specification:

CodeNameDefining RFCGuide
103Early HintsRFC 8297Guide
226IM UsedRFC 3229Guide
425Too EarlyRFC 8470Guide
451Unavailable For Legal ReasonsRFC 7725Guide
506Variant Also NegotiatesRFC 2295Guide

Deprecated, obsolete, and draft codes

A few codes carry special status in the registry and are worth flagging explicitly:

CodeNameStatusGuide
102ProcessingDefined by RFC 2518; deprecated for general useGuide
104Upload Resumption SupportedIETF draft (not yet a final RFC)Guide
510Not ExtendedRFC 2774 — marked OBSOLETED in the registryGuide

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.

CodeStatusGuide
427UnassignedGuide
430UnassignedGuide
509UnassignedGuide

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 →