
Introduction
HTTP status codes are issued by a server in response to a client's request made to the server. This cheat sheet provides a comprehensive list of HTTP status codes to help you understand their meanings and how to use them.
Informational Responses (100–199)
Code | Message | Description |
---|---|---|
100 | Continue | The server has received the request headers and the client should proceed to send the request body. |
101 | Switching Protocols | The requester has asked the server to switch protocols and the server has agreed to do so. |
102 | Processing | The server has received and is processing the request, but no response is available yet. |
103 | Early Hints | Used to return some response headers before final HTTP message. |
Successful Responses (200–299)
Code | Message | Description |
---|---|---|
200 | OK | The request has succeeded. |
201 | Created | The request has been fulfilled and resulted in a new resource being created. |
202 | Accepted | The request has been accepted for processing, but the processing has not been completed. |
203 | Non-Authoritative Information | The server successfully processed the request, but is returning information that may be from another source. |
204 | No Content | The server successfully processed the request, but is not returning any content. |
205 | Reset Content | The server successfully processed the request, but is not returning any content and requires that the requester reset the document view. |
206 | Partial Content | The server is delivering only part of the resource due to a range header sent by the client. |
207 | Multi-Status | The message body that follows is an XML message and can contain a number of separate response codes. |
208 | Already Reported | The members of a DAV binding have already been enumerated in a previous reply to this request, and are not being included again. |
226 | IM Used | The server has fulfilled a GET request for the resource, and the response is a representation of the result of one or more instance-manipulations applied to the current instance. |
Redirection Messages (300–399)
Code | Message | Description |
---|---|---|
300 | Multiple Choices | Indicates multiple options for the resource that the client may follow. |
301 | Moved Permanently | This and all future requests should be directed to the given URI. |
302 | Found | Tells the client to look at (browse to) another URL. |
303 | See Other | The response to the request can be found under another URI using a GET method. |
304 | Not Modified | Indicates that the resource has not been modified since the version specified by the request headers. |
305 | Use Proxy | The requested resource is available only through a proxy, the address for which is provided in the response. |
306 | Switch Proxy | No longer used. Originally meant "Subsequent requests should use the specified proxy." |
307 | Temporary Redirect | In this case, the request should be repeated with another URI; however, future requests should still use the original URI. |
308 | Permanent Redirect | The request and all future requests should be repeated using another URI. |
Client Error Responses (400–499)
Code | Message | Description |
---|---|---|
400 | Bad Request | The server cannot or will not process the request due to an apparent client error. |
401 | Unauthorized | Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet been provided. |
402 | Payment Required | Reserved for future use. |
403 | Forbidden | indicates the server understood the request but refuses to authorize it. Unlike 401, re-authentication won't help. This error typically means the client lacks necessary permissions. |
404 | Not Found | The requested resource could not be found but may be available again in the future. |
405 | Method Not Allowed | A request was made of a resource using a request method not supported by that resource. |
406 | Not Acceptable | The requested resource is only capable of generating content not acceptable according to the Accept headers sent in the request. |
407 | Proxy Authentication Required | The client must first authenticate itself with the proxy. |
408 | Request Timeout | The server timed out waiting for the request. |
409 | Conflict | Indicates that the request could not be processed because of conflict in the request, such as an edit conflict between multiple simultaneous updates. |
410 | Gone | Indicates that the resource requested is no longer available and will not be available again. |
411 | Length Required | The request did not specify the length of its content, which is required by the requested resource. |
412 | Precondition Failed | The server does not meet one of the preconditions that the requester put on the request. |
413 | Payload Too Large | The request is larger than the server is willing or able to process. |
414 | URI Too Long | The URI provided was too long for the server to process. |
415 | Unsupported Media Type | The request entity has a media type which the server or resource does not support. |
416 | Range Not Satisfiable | The client has asked for a portion of the file (byte serving), but the server cannot supply that portion. |
417 | Expectation Failed | The server cannot meet the requirements of the Expect request-header field. |
418 | I'm a teapot | This code was defined in 1998 as one of the traditional IETF April Fools' jokes, in RFC 2324, Hyper Text Coffee Pot Control Protocol. |
421 | Misdirected Request | The request was directed at a server that is not able to produce a response. |
422 | Unprocessable Entity | The request was well-formed but was unable to be followed due to semantic errors. |
423 | Locked | The resource that is being accessed is locked. |
424 | Failed Dependency | The request failed due to failure of a previous request. |
425 | Too Early | Indicates that the server is unwilling to risk processing a request that might be replayed. |
426 | Upgrade Required | The client should switch to a different protocol such as TLS/1.0, given in the Upgrade header field. |
428 | Precondition Required | The origin server requires the request to be conditional. |
429 | Too Many Requests | The user has sent too many requests in a given amount of time ("rate limiting"). |
431 | Request Header Fields Too Large | The server is unwilling to process the request because either an individual header field, or all the header fields collectively, are too large. |
451 | Unavailable For Legal Reasons | The user-agent requested a resource that cannot legally be provided, such as a web page censored by a government. |
Server Error Responses (500–599)
Code | Message | Description |
---|---|---|
500 | Internal Server Error | A generic error message, given when an unexpected condition was encountered and no more specific message is suitable. |
501 | Not Implemented | The server either does not recognize the request method, or it lacks the ability to fulfill the request. |
502 | Bad Gateway | The server was acting as a gateway or proxy and received an invalid response from the upstream server. |
503 | Service Unavailable | The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state. |
504 | Gateway Timeout | The server was acting as a gateway or proxy and did not receive a timely response from the upstream server. |
505 | HTTP Version Not Supported | The server does not support the HTTP protocol version used in the request. |
506 | Variant Also Negotiates | Transparent content negotiation for the request results in a circular reference. |
507 | Insufficient Storage | The server is unable to store the representation needed to complete the request. |
508 | Loop Detected | The server detected an infinite loop while processing a request with "Depth: infinity". |
510 | Not Extended | Further extensions to the request are required for the server to fulfill it. |
511 | Network Authentication Required | The client needs to authenticate to gain network access. |
Related Posts
Evolution of HTTP: Comparing HTTP/0.9, HTTP/1.0, HTTP/1.1, HTTP/2, and HTTP/3
Explore the evolution of the HTTP protocol, comparing HTTP/0.9, HTTP/1.0, HTTP/1.1, HTTP/2, and HTTP/3. Understand their improvements, drawbacks, and use cases.
Building WebSocket Applications with Spring Boot
Learn how to build real-time applications using WebSockets in Spring Boot. This guide covers both simple WebSocket implementation and STOMP-based messaging, with practical examples of building a chat application.