Ever came across a 404 page or 502 gateway time out error while browsing your favorite website? Some of these errors just goes away as soon as you reload the page. But some stays forever, even if you visit the same page after years. What are they? Why do web pages display those numbers? If you want to know the answer, this is the right place. Before we get into the details, let’s just introduce the term “HTTP Status Code”. That’s what you are seeing on the web page in the form of a number and a description.
What are HTTP Status Codes?
HTTP status codes are the response codes shown by the web browser when a certain problem happens either on the website or the web server. These status codes help to identify the problem and to take the necessary measurements to fix the issue. Commonly, the HTTP status code is put together with the HTTP reason phrase to let users know more about the issue. For example, the 404 error is usually displayed as “404 Not Found.” As you can see, it is a great way to explain the error in a short manner.
There are 5 series of HTTP status codes ranging as 1xx, 2xx, 3xx, 4xx, and 5xx. The “xx” will be replaced by the number corresponding to the error. Here is a simple table to let you know more about them.
|1xx||Informational||The request has been received by the server, and the process is continuing.|
|2xx||Success||The action was successfully received, understood, and accepted by the server.|
|3xx||Redirection||Further actions must be taken in order to complete the request.|
|4xx||Client Error||The request contains incorrect syntax or cannot be fulfilled by the server.|
|5xx||Server Error||The server failed to fulfill an apparently valid request due to some problems.|
We sorted this HTTP return codes list in the same order as the above table. So that you will be able to find and start diagnosing the error as soon as possible. So, have a look at these HTTP status codes.
Table of Contents
- 100 Continue
- 101 Switching Protocols
- 102 Processing
- 200 OK
- 201 Created
- 202 Accepted
- 203 Non-authoritative Information
- 204 No Content
- 205 Reset Content
- 206 Partial Content
- 207 Multi-Status
- 208 Already Reported
- 226 IM Used
- 300 Multiple Choices
- 301 Moved Permanently
- 302 Found
- 303 See Other
- 304 Not Modified
- 305 Use Proxy
- 307 Temporary Redirect
- 308 Permanent Redirect
- 400 Bad Request
- 401 Unauthorized
- 402 Payment Required
- 403 Forbidden
- 404 Not Found
- 405 Method Not Allowed
- 406 Not Acceptable
- 407 Proxy Authentication Required
- 408 Request Timeout
- 409 Conflict
- 410 Gone
- 411 Length Required
- 412 Precondition Failed
- 413 Payload Too Large
- 414 Request-URI Too Long
- 415 Unsupported Media Type
- 416 Requested Range Not Satisfiable
- 417 Expectation Failed
- 418 I’m a teapot
- 421 Misdirected Request
- 422 Unprocessable Entity
- 423 Locked
- 424 Failed Dependency
- 426 Upgrade Required
- 428 Precondition Required
- 429 Too Many Requests
- 431 Request Header Fields Too Large
- 444 Connection Closed Without Response
- 451 Unavailable For Legal Reasons
- 499 Client Closed Request
- 500 Internal Server Error
- 501 Not Implemented
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
- 505 HTTP Version Not Supported
- 506 Variant Also Negotiates
- 507 Insufficient Storage
- 508 Loop Detected
- 509 Bandwdith Limit Exceeded
- 510 Not Extended
- 511 Network Authentication Required
- 599 Network Connect Timeout Error
Informational HTTP Status Codes (1xx)
Informational HTTP status codes are the informational responses provided by the server. Which means, if the request is accepted and being processed, the server sends the 1xx status codes to tell the user to wait. Seeing a 1xx response means there will be an additional status after the processing completes. The 1xx message consists only of the status line and optional header fields. Also, it will be terminated by an empty line.
100 Continue HTTP status implies that the server received the initial part of the request made by the browser but the process is still ongoing. The server intends to send the final notification after the process is successfully completed at the server end. During the process, it is not recommended to the discard the current action or reset the browser screen.
101 Switching Protocols
101 Switching Protocols means that the server understands the browser’s request and is willing to comply with it via the Upgrade header field, for a change in the application protocol being used on the connection. For this, the server should generate an upgrade header field in the response that indicates which protocol will be switched.
In most of the cases, the server will be willing to change the protocol only if there is an advantage by doing so. For example, switching from an old HTTP version to the newer version is an advantage. So, the server will be willing to do so.
This is another HTML status code used to notify the client that the server has completely received the request, but it is still processing. The requester will see this message only if the server thinks that the request will take a considerable amount of time to complete. To be exact, usually, if a request takes more than 20 seconds to process, the server will return a 102 Processing status code.
Success HTTP Response Codes (2××)
The 2xx will be outputted once the request sent by the user has been accepted, processed, and succeeded. That’s why these status codes are called the success responses.
This is the status code which the server outputs once the request has successfully completed. 200 status pages are cacheable by default unless there is any restriction.
The 201 Created means the request has been fulfilled and as a result, one or more additional resources are created. The created resources will be recognized by either a Location header field or the effective request URI. Usually, the 201 status code will describe and link to the generated resources.
The client’s request has accepted by the server for processing. But the processing is still taking place on the server. The request may or may not be disallowed by the server during the processing. The purpose of the 202 status code is to allow the server to accept a request for some extra process without requiring the connection between the user agent and the server persist.
203 Non-authoritative Information
203 HTTP status code implies that the client’s request was successful but the enclosed payload got modified from that of the server’s 200 OK status by a transforming proxy. When a new transformation has applied, the 203 Non-authoritative Information status code allows the proxy to notify clients. Like the 200 OK, this one is also cacheable by default unless there is a restriction.
204 No Content
204 No Content is to notify the client that the server has successfully fulfilled the request. Additionally, there is no pending content to send in the response payload body. The document editing interfaces often make use of the 204 status code. In such document editing interfaces, the document will be available for editing without changing the document view even after the saving function is completed. The web pages with this status code are cacheable.
205 Reset Content
The server has fulfilled the request by the client and desires that the user-agent reset the document view. This caused the request to be sent again and the file is reset to its original state. The 205 Reset Content is utilized in the online forms and applications which accept entries. After submitting the entry and the origin server receives the data, the form will be reset to its default.
206 Partial Content
206 Partial Content implements that the server is processing a range request for the selected resource by transferring one or more parts of the selected representation which is corresponding to the satisfiable range found in the request’s range header field.
This is an example of the selected Content-Range header field.
HTTP/1.1 206 Partial Content Date: Sat, 25 Mar 2017 12:25:24 GMT Last-Modified: Sat, 25 Mar 2017 19:25:24 GMT Content-Range: bytes 11119-52788/52788 Content-Length: 41669 Content-Type: image/gif ... 41669 bytes of partial image data ...
As the name itself says, the 207 is a status code shown by your browser when multiple status codes are appropriate for the situation. In other words, the 207 Multi-Status is used as an overall status code where two or more statuses are suitable.
208 Already Reported
The 208 Already Reported is used inside a DAV: propstat response element to avoid enumerating the internal members of multiple bindings to the same collection again and again. The 208 will only occur for the “Depth: infinity” requests
226 IM Used
226 IM Used will be displayed when 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 Status Codes (3××)
The 3xx status codes indicate that the server needs to take additional actions to complete the request. In other words, the URI redirections are using these statuses to tell the user-agent that it should divert to get into the right destination. The user-agent should be able to recognize the proper redirects to avoid any repeated redirection cycles.
300 Multiple Choices
It implies the target has more than one representation to choose from. The 300 Multiple Choices could be used to present multiple video format options or to list files with different extensions.
301 Moved Permanently
The target URI has been moved permanently to a new URI. Any future references to this URI should use the new URI. This is one of the most heard HTTP codes. Most SEOs recommend 301 redirection from moving the content on a URI to another one.
The target currently resides on a temporary URI which may be altered in future. The users are ought to use the effective request URI for future requests.
303 See Other
The 303 redirection HTTP status implies that the response to the request can be found under another URI using a GET method. In other words, the server is redirecting the user-agent to another URI.
304 Not Modified
HTTP status 304 Not Modified implies that the conditional GET or HEAD request has been received. It would have resulted in a 200 response if it were not for the fact that the condition evaluated to false. Also note that, the 304 Not Modified HTTP response cannot contain a message-body
305 Use Proxy
The requested resource is only available through a proxy. Due to the security concerns, few resources may need a specific proxy to allow the entrance.
307 Temporary Redirect
307 response code says that the requested URI is currently residing at a temporary address. But the user-agent must not change the request method if performing an automatic redirection.
308 Permanent Redirect
The target resource has been changed to a new URl which the user-agent should use in any future references. The only difference between the 301 and 308 is that it will not allow changing the request method from POST to GET.
Client Error HTTP Statuses (4××)
The 4xx HTTP codes are usually shown when something wrong with the request or resources. The server will output the possible causes and solutions for the error to guide the users to fixing it. The 404 Not Found is such a most seen 4xx HTTP status.
400 Bad Request
Status code 400 means that the server cannot fulfill the request due to an incorrect request syntax, deceptive request routing, or invalid request message.
The request cannot be completed due to missing or invalid credentials required to access the target resources. If the request already contains the authentication credentials, the user may recheck and resubmit the request in order to access the resources.
402 Payment Required
HTTP 402 Payment Required is an unused status code currently. In other words, it is reserved for future use.
HTTP status codes 403 Forbidden implies that the server successfully understood the request but somehow refused to authorize it. The main difference of 403 vs. 401 is that in 401, the credentials are either missing or invalid, but in the 403, the credentials may be correct, but the server refused to accept it.
404 Not Found
The requested URI or resource is no more available at the requested location. It may be either removed or moved to a different location. This is one of the most discussed HTTP errors these days. The 404 Not Found is cacheable.
405 Method Not Allowed
405 means that the request method is understood by the server, but the resource doesn’t support it. For example, the PUT request on a read-only resource. By default, the 405 error is cacheable.
406 Not Acceptable
406 error means that the target resource does not have a current representation. According to the proactive negotiation header fields received in the request, it is not acceptable by the user-agent. So, the server is unwilling to supply a default representation for the resource. In such cases, the server will generate a list of available representation characteristics from which the user-agent will select the most appropriate one.
407 Proxy Authentication Required
It means that the client needs to authenticate itself to use a proxy. It is very similar to the 401 error.
408 Request Timeout
The request wasn’t received completely within a provided time by the server. The 408 Request Timeout error is very common during the server overloads.
409 Conflict states that the request cannot be completed due to the current resource state. In such situations, users may resubmit the request again.
410 Gone HTTP error represents that the target resource is not available at the provided location and the error might be permanent. The main difference between the 404 and 410 is that the 404 is a temporary error and the 410 is permanent.
411 Length Required
The origin server refused to accept the request due to the lack of a defined content length. The user may resubmit the request after providing a content length.
412 Precondition Failed
412 Precondition Failed states that one or more conditions given in the request header fields evaluated to false.
413 Payload Too Large
When you see the 413 HTTP status code, it means that the request payload is larger than the server’s capacity. So, the server is unwilling to process the request. The server will retry to process the request.
414 Request-URI Too Long
The requested resource URI is too longer than the server can process. So, the server is not willing to process the request. 414 error is cacheable.
415 Unsupported Media Type
The payload is in a format which is not supported by the target resource. So, the origin server is refusing to accept the request.
416 Requested Range Not Satisfiable
416 Requested Range Not Satisfied means that the client request a specific portion of the resource, but the server is unable to provide that portion. The reasons may be excessive requests or invalid ranges in the request.
417 Expectation Failed
417 Expectation Failed means that the server was unable to meet the requirements of the Expect in the request header field.
418 I’m a teapot
HTTP 418 was actually an April Fools’ joke. HTTP 418 RFC specification is that the error should be implemented as the teapots requested to brew coffee. This error code is used as Easter egg is some websites.
421 Misdirected Request
The request by the client was directed to a server which was unable to meet the requirements. Thus the server failed to produce a response. The 420 status code must not be generated by proxies.
422 Unprocessable Entity
HTTP 422 implies that the server was successfully understood the content type and the syntax of the request, but was not able to process the contained instructions in the request.
The source or the destination resource is locked which is preventing the server from accessing it.
424 Failed Dependency
The requested action depends on an another action which is failed. It caused the current action to stay incomplete. In other words, if an action need the result from another action to complete, and that action is failed to provide the result, then the first action cannot be completed.
426 Upgrade Required
420 Upgrade Required states that the current protocol of the client should be upgraded in order to complete the request.
The upgrade header field might look something like this.
HTTP/1.1 426 Upgrade Required Upgrade: HTTP/3.0 Connection: Upgrade Content-Length: 78 Content-Type: text/plainThis service requires This service requires use of the HTTP/3.0 protocol.
428 Precondition Required
If you see the 428 Precondition Required error, it means that the server requires the request to be conditional. Responses with the 428 HTTP status code must not be stored by the cache.
429 Too Many Requests
429 shows up because the client has sent too many requests to the server within a specific time. It is also known as the rate limiting.
431 Request Header Fields Too Large
431 HTTP response codes mean that the header fields are too large in the request. So, the server is unwilling to perform the action. User may resubmit the request after reducing the size of the header fields.
444 Connection Closed Without Response
The 444 is commonly used by the NGINX servers to deny the entrance of the malicious or malformed requests. It is a non-standard status code and is used to tell the NGINX server to close the connection without sending a response.
451 Unavailable for Legal Reasons
451 Unavailable for Legal Reasons mean, the server denied the access to the resource due to some legal restrictions.
499 Client Closed Request
499 is another non-standard status code which the NGINX returns if the client closed the connection while the NGINX still processing the request.
Server Error HTTP Status Codes (5××)
If anything wrong with the server, it will output the 5xx HTTP status code. In other words, if you see the 5xx errors, it means that the server failed to complete the request. To fix some of these errors, you may have to contact the server administrators. But few of them are just temporary errors due to the problems like server overload.
500 Internal Server Error
HTTP status code 500 is happening due to an unexpected condition which preventing server from fulfilling your request. The 500 error code shows up when the server couldn’t identify the exact problem caused the interruption.
501 Not Implemented
The functionality required to fulfill the request is not supported by the server. In other words, the server doesn’t recognize the request from the client.
502 Bad Gateway
502 Bad Gateway HTTP status code occurs when the server was acting as a gateway or proxy and received an invalid response from the upstream server while attempting to fulfill the request.
503 Service Unavailable
The server is experiencing a server overload or currently undergoing maintenance which caused the request to not complete successfully. This error will be removed automatically after the server comes to the normal load state.
504 Gateway Timeout
504 Gateway Timeout occurs while the server acting as a gateway or proxy, it didn’t receive a timely response from the upstream server which caused it to halt the request. Users may retry after a few minutes.
505 HTTP Version Not Supported
The server doesn’t support the HTTP version on the request. Users may retry the request after fixing the problem by upgrading to a supported HTTP version.
506 Variant Also Negotiates
The server encountered an internal error. The given variant resource is configured to engage in transparent content negotiation itself which result in a circular reference.
507 Insufficient Storage
The server doesn’t meet the storage requirement in order to store the data required by the request. the 507 Insufficient Storage error is temporary which could be easily resolved.
508 Loop Detected
The 508 Loop Detected error occurs when the server terminated an operation because it encountered an infinite loop while processing the request.
509 Bandwidth Limit Exceeded
This is not a typical HTTP status code. But widely used by web servers such as Apache, 509 usually means that the bandwidth of the web server is exceeded. Only the webmaster will be able to fix the issue by upgrading the server.
510 Not Extended
The 510 Not Extended HTTP status error implies that further extensions to the request are required for the server for fulfilling it. The server should send back the information for the user to resubmit a new request.
511 Network Authentication Required
The user or client need to authenticate to gain the network access to the resource.
599 Network Connect Timeout Error
The 599 Network Connect Timeout Error is not specified in any RFCs. Even though, few HTTP proxies utilize this code to signal a network connection timeout.
You liked this HTTP status codes cheat sheet, right? If you have any doubt regarding any of the HTTP response example shown above, feel free to contact us. We will always be happy to help you in any doubt regarding the HTTP status codes.