Articles on: Getting Started
This article is also available in:

What do the different HTTP error codes mean?

There are dozens of different http server status codes, although you are probably familiar with only a few. Below, we have covered the most common codes, as well as some of the lesser known codes that can be encountered.

Understanding HTTP status code classes

HTTP status codes are divided into five “classes”. These are groups of errors of similar nature and related to the same element.

Understanding the basis of these categories can help you quickly determine the general nature of a status code before searching for its specific meaning.

The five classes include:

100 to 199: Information codes indicating that the browser-initiated request continues.
200 to 299: Success codes returned when the browser request was received, understood and processed by the server.
300 to 399: redirect codes returned when a new resource has replaced the requested resource.
400 to 499: Customer level error codes indicating there was a problem with the application.
500 to 599: Server-level error codes indicating that the request was accepted but an error on the server prevented the request from being processed.

In each of these classes, there are a number of status codes that a server can return. Each code has a specific and unique meaning, which we will discuss in the more complete list below.

Status codes 100

A level 100 status code tells you that the request you made to the server is still in progress for some reason. It’s not necessarily a problem, just a delay.

100: “Continue.” This code indicates that the server in question has received the query headers from your browser, and is now ready to send the query body.
101: “Change protocol”. Your browser asked the server to change protocol, and the server complied.
103: “Early hints.” This returns a few response headers before the rest of the server response is ready.

Status codes 200

This class represents the best HTTP status codes to receive. A class response of 200 levels means that everything works exactly as it should.

200: “Everything is fine.” This is the code that is delivered when a web page or resource acts exactly as expected.
201: “Created”. The server responded to the browser’s request and therefore created a new resource.
202: "Accepted." The server has accepted your browser’s request, but it is still being processed. The request may or may not result in a complete response.
203: “Information not enabling”. This status code means that a proxy server received a status code 200 “All is well” from the original server, but changed the response before sending it to your browser.
204: “No content”. This code means that the server has successfully processed the request but will not return any content.
205: “Reset content”. Like code 204, this means that the server has processed the request but will not return content. However, your web browser must reset the content display.
206: "Partial content". You can see this status code if your HTTP client uses range headers (including allowing your browser to resume interrupted downloads). A 206 code is sent when a range header only allows the server to send part of the requested resource.

Status codes 300

A redirect is a process used to communicate that content has been moved to a new location. There are several HTTP status codes that indicate redirects, in order to provide visitors with information about the location of the content they are looking for.

300: “Multiple Choice”. A 300 status code means that your browser must now choose between several possible resources with which the server can respond to your browser’s request.
301: “The requested resource has been permanently relocated.” This code is provided when a Web page or resource has been permanently replaced by another resource. Code 301 is used for permanent URL redirection.
302: “The requested resource moved but was found.” This code is used to indicate that the requested resource was found, but not exactly where it was expected. Code 302 is used for temporary URL redirection.
303: “See Other.”: A code 303 tells your browser that it has found the resource your browser requested via POST, PUT or DELETE. However, to recover it using GET, the appropriate request must be addressed to a different URL than the one used.
304: “The requested resource has not changed since you last accessed it.” This code tells the browser that the content stored in the browser cache has not changed.
307: “Temporary Reroute”. Status code 307 is the successor to the 302 “Found” as an appropriate action when a resource has been temporarily moved to a different URL. Unlike status code 302, it does not change the HTTP method.
308: “Permanent redirect”. Status code 308 can replace 301 “Permanently moved”. It does not allow the method

400 status codes

Class 400 HTTP status codes are starting to become problematic. These are error codes specifying that there is an error with your browser and/or your query.

400: “Wrong request”. Server cannot respond due to a client error.
401: “Unauthorized” or “Authorization Required”. This message is returned by the server when the request’s target resource does not have valid authentication credentials.
402: “Payment required”. This code was originally created to serve a digital cash system that never took shape. Instead, it is used by various platforms to indicate that a pay claim cannot be processed.
403: “Access to this resource is prohibited.” This code is returned when a user attempts to access content that they do not have permission to view.
404: “The requested resource was not found.” This is the most common error message since the beginning of the Internet. This code means that the requested resource does not exist and that the server has no information suggesting that it already existed.
405: “Method not allowed.” This is generated when the original server supports the received method but does not support the target resource.
406: “Unacceptable response.” The requested resource is capable of generating only content that is not acceptable according to the acceptance headers sent in the request.
407: “Proxy authentication required”. A proxy server is used and your browser must authenticate before proceeding.
408: “The server has expired pending the rest of the browser request.” This code is generated when a server expires while waiting for the full browser request. The server did not receive the complete application sent by the browser.
409: “Conflict”. A 409 status code means that the server cannot process the request because there is a conflict with the resource concerned, due to multiple simultaneous checks.
410: “The requested resource has disappeared and will not return.” Code 410 looks like a code 404 “Not found” except that it indicates that the condition is predictable and permanent.
411: “Required length”. This code means that the requested resource requires the client to specify a certain length and that this was not done correctly.
412: “Failed Condition Precedent”. Your web browser has included certain conditions in its request headers, and the server cannot meet these specifications.
413: “Too Large Payload” or “Too Large Demand Entity”. Your request is simply larger than the server is willing to handle or able to handle.
414: “URI Too Long.” This code is the result of a GET request that has been encoded into a query string too large to be processed by the server.
415: “Unsupported media type”. The request includes a type of media that the server or resource is unable to support.
416: “Range Not Satisfiable”. Your request involved part of a resource that the server is unable to return.
417: Expectation Failed. The server is unable for some reason to meet the requirements specified in the Expect header field of the request.
418: “I am a teapot”. Code 418 is returned by teapots that receive coffee requests. This is a joke dating back to the April 1998 fish still active.
422: «Unprocessable Entity». The client request contains semantic errors, and the server is unable to process them.
425: "Too early." This code is sent when the server does not want to process a request again because it has already been sent.
426: “Upgrade required”. Because of the contents of the query upgrade header field, the client must switch to a different protocol.
428: “Prerequisites required”. The server requires that certain conditions be specified before the request can be processed.
429: “Too many requests”. This code is generated by the server when the user has sent too many requests in too short a time. This can sometimes happen due to too high traffic or bots/scripts trying to access your site.
431: “Request Header Fields Too Large”. Server cannot process request because header fields are too large.
451: “Unavailable for legal reasons”. The server operator has received a request to deny access to the resource you requested.
499: “Customer Closed Request” is returned by NGINX when the customer closes the request while Nginx processes it.

Status codes 500

Status codes 500 are also considered errors but they indicate that the problem is at the server level. This can make them more complex to solve.

500: “There was an error on the server and the request could not be processed.” A code 500 or 500 CHMOD 777 means “internal server error”. Something went wrong on the server and the requested resource was not delivered.
501: “Not implemented”. This error indicates that the server does not support the functionality required to process the request. This is almost always a problem on the web server itself, and usually has to be solved by the host.
502: Bad Gateway. This error code usually means that one server has received an invalid response from another, for example when a proxy server is used. Other times a request or a request will take too long, and so it is cancelled by the server and the connection to the database is broken.
503: “The server is not available to process this request at this time.” The request cannot be processed at this time. This code indicates that the overloaded server is unable to process additional requests.
504: “The server, acting as a gateway, has expired while waiting for another server to respond.” This is the code returned when there are at least two servers involved in processing a request, and the first server has expired before the second server responds.
505: “HTTP Version Not Supported.” This code indicates that the server does not support the HTTP version used by the client to make its request.
508: The resource limits set by your hosting provider have been reached. You have exceeded the current limits of your hosting plan.
509: "Bandwidth limit exceeded" This code indicates that your website uses more bandwidth than your hosting provider allows.
511: “Network authentication required”. Status code 511 is sent when the network you are trying to use requires authentication before sending your request to the server.
521: "Web server is down." Error 521 is a Cloudflare specific error message. This means that your web browser managed to connect to Cloudflare, but it could not connect to the original server.
525: SSL Handshake Failed. Error 525 means that the main SSL handle between a domain using Cloudflare and the original web server failed.

That pretty much sums up all the HTTP status code that you may encounter when browsing the web.

Updated on: 22/03/2023

Was this article helpful?

Share your feedback


Thank you!