HTTP Status and Error Codes
By Main Admin on May 6, 2025
HTTP status codes are like a website’s way of talking to a browser, letting it know if everything is working, if a page has moved, or if something’s broken. These three-digit codes fall into five main groups: informational (1xx), successful (2xx), redirection (3xx), client error (4xx), and server error (5xx). Understanding them makes it easier to spot and fix issues that could impact user experience and website performance. To explore additional ways to enhance speed and reliability, consider looking into website performance optimization techniques.
What are HTTP Status Codes?
HTTP status codes are three-digit numbers that show how the server responds to a browser request. Most people have encountered the well-known 404 error, which indicates that a page was not found. This is just one example of many HTTP client error codes.
These status codes, sometimes referred to as response status codes, let the web browser and server communicate. Depending on the kind of response they elicit, they are divided into numerous categories. The first digit of the code determines its category: for instance, 4xx errors indicate issues preventing access to a page or website, while 2xx codes confirm that a request was processed successfully.
How Are HTTP Status Codes Organized?
HTTP status codes are classified into five major categories, each of which provides information about the nature of the server’s response—even if you don’t know the specific code.
- 1xx (Informational): The server has acknowledged the request and is now processing it;
- 2xx (Successful): The request was received and processed correctly, and the browser got what it asked for;
- 3xx (Redirection): You’ve been redirected elsewhere, and more actions may be needed to complete the request;
- 4xx (Client Error): There’s a client-side issue causing the page or resource to be unreachable or the request to be invalid;
- 5xx (Server Error): The server understands the request but is unable to perform it due to an internal problem.
Understanding HTTP Requests and Responses
Your browser (the client) communicates with the website’s server when you visit a page, sending a request for specific information. This process includes an HTTP method, such as GET (to retrieve data) or POST (to send data), along with header fields that provide additional details like the preferred language, accepted file formats, or login credentials.
Once the server processes the request, it responds with an HTTP message containing a status code. This code indicates whether the operation was successful, if an error occurred, or if further action is needed. Response headers provide extra details, such as the type of content being delivered.
Common HTTP Request Methods:
- GET – Requests data from the server (e.g., loading a webpage);
- POST – Sends data to the server (e.g., submitting a form);
- PUT – Updates an existing resource;
- DELETE – Removes a resource.
Request headers help the server understand what the client needs. For example, they can specify the user’s language preference or the type of content the browser can handle. Response headers, on the other hand, give extra information about the data being sent back, helping browsers display it correctly.
Individual HTTP Status Codes Explained
Some HTTP response codes—like 200 OK—are straightforward. Others, such as 103 Early Hints, 205 Reset Content, or 305 Use Proxy, are more obscure. Below, you’ll find explanations for all 63 status codes, grouped into their five main categories.
1xx (Informational) Status Codes
When the server receives a 1xx informational status code, it means that the request has been received and is currently being processed. This type of status code is purely temporary and only appears while the request is continuing. In most cases, you won’t encounter 1xx codes often, since they are not the final response.
Below are the most common 1xx status codes and what each one means:
- 100 Continue: The initial part of the request has been received. The client should continue sending the remainder of the request or ignore this response if the request is already complete;
- 101 Switching Protocols: The server acknowledges the client’s request (via the Upgrade header) and is switching to the specified protocol;
- 102 Processing: The server has accepted the entire request but hasn’t completed processing yet, and no final response is available;
- 103 Early Hints: Informs the client that it can begin preloading resources while the server is still preparing the final response (primarily used with the Link header).
2xx (Successful) Status Codes
A status code of 2xx signifies that the client’s request was successfully received, comprehended, and processed by the server. It essentially indicates that everything went according to plan and that the browser received the necessary info. All of your pages and resources (such images or videos) should return valid 2xx codes as site owners so that visitors and search engines may access and utilize your website without any problems.
The most typical 2xx status codes and their meanings are shown below:
- 200 OK – The request was successful. A GET request returns the requested resource, while a POST request includes details about the action’s result;
- 201 Created – The request completed successfully, and a new resource was created on the server;
- 202 Accepted – The request was received but hasn’t been processed yet. It may succeed or fail later;
- 203 Non-Authoritative Information – The request was successful, but the response may come from a source other than the original server. A 200 OK is usually preferred unless dealing with mirrored data;
- 204 No Content – The request was processed successfully, but there’s nothing to return. The client may still update cached headers;
- 205 Reset Content – The client should reset the document that triggered the request, often clearing forms or resetting UI elements;
- 206 Partial Content – The server returns only part of a resource, responding to a request with a Range header;
- 207 Multi-Status – Returns multiple status codes in a single response, useful for batch requests;
- 208 Already Reported – Used in WebDAV to prevent duplicate listing of the same resource when multiple references exist;
- 226 IM Used – A GET request was completed, and the response reflects modifications applied to the resource’s current instance.
3xx Redirection Codes
A 3xx status code signifies that the resource has moved, requiring additional steps to complete the process. Redirects are common online and serve to inform browsers and search engines that, while the initial connection was successful, the content is now available at a different URL.
For instance, if a webpage is relocated, a content management system (CMS) typically directs visitors from the old URL to the new one. The interaction eventually results in a 2xx success code, but only after passing through a 3xx redirection.
Below are the most common 3xx redirection codes:
300 Multiple Choices
Indicates that multiple possible responses are available for the request, and the user or user agent should select one.
301 Moved Permanently
Signifies that the resource has a new permanent URL. Future references or links should use the new URL provided in the response. From an SEO perspective, a 301 redirect is the best choice when you move a page permanently since it transfers most of the link equity to the new location (though slightly less than a direct 200 OK).
302 Found (Previously “Moved Temporarily”)
Means the resource is temporarily located at a different URL. Since the change is not permanent, a 302 does not pass link equity in the same way a 301 does. Use it only if the page will return to its original location; otherwise, opt for a 301.
303 See Other
Directs the client to retrieve the resource at another URI using a GET request. This is often used after a POST operation to redirect users to a confirmation or results page.
304 Not Modified
Notifies the client that there has been no modification to the resource since the last request. Without downloading the resource again, the browser can keep using the version that is cached.
305 Use Proxy
Advises the client to access the requested resource through a proxy. This status code is deprecated due to security concerns.
306 Switch Proxy
An unused status code once intended to notify the client to switch to a different proxy for subsequent requests. It is no longer used.
307 Temporary Redirect
Tells the client that the resource is now at a different URI, but the request method (e.g., GET, POST) must remain the same. This is similar to a 302 but preserves the original request method.
308 Permanent Redirect
Indicates that the resource has been assigned a new, permanent URI. All future references should use the new address. It works similarly to a 301 but preserves the request method, just like a 307.
4xx Client Errors
When a user-side problem prevents a website from loading, such as when the page is no longer available or the request was typed incorrectly, a 4xx status code displays. Website owners should make every effort to avoid these blunders, since they may have a bad influence on both SEO and user experience. 4xx errors can occur if a page has been removed (either permanently or temporarily) or if the user lacks the necessary permissions.
400 Bad Request
It indicates that the server is unable to process the request due to incorrect syntax.
401 Unauthorized
A 401 Unauthorized status code indicates that the request was denied because the server required user authentication that was not given.
402 Payment Required
The 402 Payment Required status code is reserved for future use. Although it was originally intended for digital payment systems, it is rarely implemented and no standard usage has been established.
403 Forbidden
A 403 Forbidden status code means the server recognizes the client’s identity but refuses to grant access to the requested resource. This differs from a 401 error, where the issue is that the user is not authenticated.
404 Not Found
The server can’t find the page or resource you’re looking for. In a browser, this usually means the URL is incorrect or the page no longer exists. In an API, it might mean the endpoint is valid, but the specific resource isn’t available. Sometimes, servers use this response instead of 403 Forbidden to avoid revealing that a restricted resource exists. This is one of the most recognizable error codes because it shows up so often across the web.
405 Method Not Allowed
A 405 Method Not Allowed status code means the server recognizes the request method but has disabled it, making the method unusable.
406 Not Acceptable
A 406 Not Acceptable status code is sent when the server cannot return a response that meets the criteria specified by the client’s request headers (e.g., Accept header).
407 Proxy Authentication Required
A 407 Proxy Authentication Required status code indicates that the client must first authenticate through a proxy, similar to how a 401 error requires direct authentication.
408 Request Timeout
This status code indicates that the server did not receive a full request in the allotted time.
409 Conflict
It indicates that the request is incompatible with the existing state of the target resource. The user may need to resolve the disagreement and retry the request.
410 Gone
This answer is given when the requested content has been permanently deleted from the server and has no forwarding address. Clients are expected to clear caches and connections to the resource. The HTTP protocol specifies that this status code should be used for “limited-time, promotional services”. APIs should not feel obligated to display resources that have been deleted with this status code.
411 Length Required
A 411 Length Required status code means the server rejects the request because it requires a Content-Length header field, which specifies the size of the request body.
412 Precondition Failed
A 412 Precondition Failed status code indicates that one or more conditions in the request header fields were not met by the server.
413 Payload Too Large
A 413 Payload Too Large status code means the server refuses to process the request because its payload exceeds the server’s limits. The server can close the connection to prevent further data from being sent. Typically, the server should return a Retry-After header to inform the client when it can try again.
414 URI Too Long
The server rejects a request with a 414 URI Too Long status code because the requested URI (or request-target) is longer than what it can or will handle.
415 Unsupported Media Type
A 415 Unsupported Media Type status code means the server refuses to accept the request because it does not support the format of the submitted data.
416 Range Not Satisfiable
A 416 Range Not Satisfiable status code indicates that the range specified in the request’s Range header is invalid or outside the size of the requested resource.
417 Expectation Failed
It means the expectation given in the request’s Expect header could not be fulfilled by the server.
418 I’m a Teapot
A status code is a playful reference (from an April Fools’ joke in RFC 2324) used to indicate that the server refuses to brew coffee because it is, in fact, a teapot.
421 Misdirected Request
This status code means the request was sent to a server that is not configured to produce a response for the requested resource.
422 Unprocessable Entity
The request was received and is syntactically accurate, but the server is unable to handle it due to semantic problems, as indicated by a 422 Unprocessable Entity status code.
423 Locked
If the requested resource has a 423 Locked status code, it is presently locked and cannot be accessed or modified.
424 Failed Dependency
The request could not be completed because it depended on another operation that failed, as indicated by a 424 Failed Dependency status code.
425 Too Early
It indicates that the server is not willing to handle the request yet, to avoid the risk of it being replayed.
426 Upgrade Required
If the client upgrades to a compatible protocol, the server may fulfill the request even though it is denied under the present protocol, as indicated by the 426 Upgrade Required status code.
428 Precondition Required
A status code indicates that the server requires certain conditions (preconditions) to be met before processing the request.
429 Too Many Requests
This status code means the client has sent an excessive number of requests within a given timeframe, and should slow down or wait before retrying.
431 Request Header Fields Too Large
A status code indicates the server refuses to process the request because its header fields are too large. The request can be resubmitted once the header size is reduced.
451 Unavailable For Legal Reasons
A 451 Unavailable For Legal Reasons status code indicates the server is denying access to the resource due to legal restrictions, such as government-mandated blocks.
5xx Server Error
A 5xx Server Error indicates that, even though the request might be valid, the server is unable to complete it. If you encounter 5xx errors on your website, the first step is to examine the server’s status. For a self-hosted site, you’ll need to investigate and debug the server directly. If you use an external hosting provider, reach out to their support team so they can identify and resolve the issue.
500 Internal Server Error
A 500 Internal Server Error indicates that the server encountered an unexpected condition it could not handle. From an SEO perspective, this type of error stems from a server-side issue rather than an issue with the page content. However, because both users and search engines are blocked from accessing the page, you risk losing valuable link equity quickly.
501 Not Implemented
A 501 Not Implemented status code means the request cannot be handled because the server lacks the functionality to support it.
502 Bad Gateway
A 502 Bad Gateway status code indicates that the server, acting as a gateway or proxy, received an invalid or incomplete response from an upstream server.
503 Service Unavailable
A 503 Service Unavailable status code indicates that the server is temporarily unable to handle the request—often due to maintenance or overload. Search engines recognize this as a temporary issue and will typically return later to check if the service has become available again.
504 Gateway Timeout
A 504 Gateway Timeout status code means the server, while acting as a gateway or proxy, did not receive a timely response from an upstream server needed to complete the request.
505 HTTP Version Not Supported
A 505 HTTP Version Not Supported status code means the HTTP protocol version used in the request is not supported by the server.
506 Variant Also Negotiates
A 506 Variant Also Negotiates status code indicates a server configuration error. The chosen variant resource is set up for transparent content negotiation, so it cannot serve as a valid endpoint in the negotiation process.
507 Insufficient Storage
A 507 Insufficient Storage status code means the server is unable to store the representation needed to complete the request.
508 Loop Detected
A 508 Loop Detected status code indicates the server encountered an infinite loop while processing the request.
510 Not Extended
A 510 Not Extended status code means the server requires additional extensions in order to fulfill the request.
511 Network Authentication Required
A 511 Network Authentication Required status code tells the client that it must authenticate to gain network access.
Conclusion
Understanding HTTP status codes helps you maintain a smooth user experience and protect your website’s search visibility. By knowing what each code represents—whether it’s an informational 1xx, a successful 2xx, a redirection 3xx, a client-side error 4xx, or a server-side error 5xx—you can quickly diagnose issues and make informed decisions about redirects, troubleshooting, and content availability. Monitoring your site’s status codes and resolving any recurring errors is key to ensuring visitors (and search engines) can access your content without interruption.
Posted in blog
Main Admin
Jeff is a business development consultant who specializes in helping businesses grow through technology innovations and solutions. He holds multiple master’s degrees from institutions such as Andrews University and Columbia University, and leverages this background towards empowering people in today’s digital world. He currently works as a research specialist for a Fortune 100 firm in Boston. When not writing on the latest technology trends, Jeff runs a robotics startup called virtupresence.com, along with oversight and leadership of startuplabs.co - an emerging market assistance company that helps businesses grow through innovation.