HTTP status codes

created onMay 29, 2026

HTTP status codes are defined in RFC 9110 / HTTP Semantics

Most of the descriptions of status codes below have been taken directly from RFC 9110, with some shortening, and some minor changes that preserve the meaning.

informational 1xx

status code description
100 (Continue) the initial part of a request has been received and has not yet been rejected by the server. The server intends to send a final response after the request has been fully received and acted upon.
101 (Switching Protocols) the server understands and is willing to comply with the client’s request, via the Upgrade header field, for a change in the application protocol being used on this connection.

successful 2xx

status code description
200 (OK) the request has succeeded. The content sent in a 200 response depends on the request method.
201 (Created) the request has been fulfilled and has resulted in one or more new resources being created. The primary resource created by the request is identified by either a Location header field in the response or, if no Location header field is received, by the target URI.
202 (Accepted) the request has been accepted for processing, but the processing has not been completed. The request might or might not eventually be acted upon, as it might be disallowed when processing actually takes place.
203 (Non-Authorative Information) the request was successful but the enclosed content has been modified from that of the origin server’s 200 (OK) response by a transforming proxy.
204 (No Content) the server has successfully fulfilled the request and that there is no additional content to send in the response content.
205 (Reset Content) the server has fulfilled the request and desires that the user agent reset the “document view”, which caused the request to be sent, to its original state as received from the origin server.
206 (Partial Content) the server is successfully fulfilling a range request for the target resource by transferring one or more parts of the selected representation.

redirection 3xx

status code description
300 (Multiple Choices) the target resource has more than one representation, each with its own more specific identifier, and information about the alternatives is being provided so that the user (or user agent) can select a preferred representation by redirecting its request to one or more of those identifiers.
301 (Moved Permanently) the target resource has been assigned a new permanent URI and any future references to this resource ought to use one of the enclosed URIs.
302 (Found) the target resource resides temporarily under a different URI. Since the redirection might be altered on occasion, the client ought to continue to use the target URI for future requests.
303 (See Other) the server is redirecting the user agent to a different resource, as indicated by a URI in the Location header field, which is intended to provide an indirect response to the original request
304 (Not Modified) a conditional GET or HEAD request has been received and would have resulted in a 200 (OK) response, but the condition evaluated to false.
305 (Use Proxy) this status code is deprecated.
307 (Temporary Redirect) the target resource resides temporarily under a different URI. The user agent must not change the request method when accessing that URI. The redirection can change over time, the client should continue using the original target URI for future requests.
308 (Permanent Redirect) the target resource has been assigned a new permanent URI and any future references to this resource ought to use one of the enclosed URIs.

client error 4xx

status code description
400 (Bad Request) the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
401 (Unauthorized) the request has not been applied because it lacks valid authentication credentials for the target resource.
402 (Payment Required) this status code is reserved for future use.
403 (Forbidden) the server understood the request but refuses to fulfill it. If authentication credentials were provided in the request, the server considers them insufficient to grant access.
404 (Not Found) the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
405 (Method Not Allowed) the method received in the request-line is known by the origin server but not supported by the target resource. A 405 response must contain an Allow header field containing a list of the target resource’s currently supported methods.
406 (Not Acceptable) the target resource does not have a representation acceptable to the user agent, according to the content negotiation header fields in the request, and the server is unwilling to supply a default representation.
407 (Proxy Authentication Required) similar to 401 (Unauthorized), but it indicates that the client needs to authenticate itself in order to use a proxy for this request.
408 (Request Timeout) the server did not receive a complete request message within the time that it was prepared to wait.
409 (Conflict) the request could not be completed due to a conflict with the current state of the target resource.
410 (Gone) the target resource is no longer available at the server and this condition is likely to be permanent.
411 (Length Required) the server refuses to accept the request without a defined Content-Length.
412 (Precondition Failed) one or more conditions given in the request header fields evaluated to false when tested on the server.
413 (Content Too Large) the server is refusing to process a request because the request content is larger than the server is willing or able to process.
414 (URI Too Long) the server is refusing to service the request because the target URI is longer than the server is willing to interpret. Very rare, can occur, i.e., if a client has improperly converted a POST request to a GET request with long query information.
415 (Unsupported Media Type) the origin server is refusing to service the request because the content is in a format not supported by this method on the target resource. The problem might be due to the request’s indicated Content-Type or Content-Encoding.
416 (Range Not Satisfiable) the set of ranges in the request’s Range header field (Section 14.2) has been rejected either because none of the requested ranges are satisfiable or because the client has requested an excessive number of small or overlapping ranges (a potential denial of service attack).
417 (Expectation Failed) the expectation given in the request’s Expect header field could not be met by at least one of the inbound servers.
418 (I’m a Tea Pot) – unused defined in the April’s Fools Day joke RFC 2324 / Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0). the definition of an application-specific 418 status code has been deployed as a joke often enough for the code to be unusable for any future use.
421 (Misdirected Request) the request was directed at a server that is unable or unwilling to produce an authoritative response for the target URI.
422 (Unprocessable Content) the server understands the content type of the request content, the syntax of the request content is correct, but it was unable to process the contained instructions. I.e., an XML request content contains well-formed, but semantically erroneous XML instructions.
426 (Upgrade Required) the server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol.

server error 5xx

status code description
500 (Internal Server Error) some weird shit prevented the server from fulfilling the request.
501 (Not Implemented) the server does not support the functionality required to fulfill the request.
502 (Bad Gateway) the server, while acting as a gateway or proxy, received an invalid response from an inbound server it accessed while attempting to fulfill the request.
503 (Service Unavailable) the server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.
504 (Gateway Timeout) the server, while acting as a gateway or proxy, did not receive a timely response from an upstream server it needed to access in order to complete the request.
505 (HTTP Version Not Supported) the server does not support, or refuses to support, the major version of HTTP that was used in the request message.

reference

IETF, RFC 9110 / HTTP Semantics

x