whenever we go to a website, whether it's an online store to buy clothes or to check the status of our bank account, we need to type the URL into the browser. When you click on the relevant page, a request is sent to the server, and the server always responds with the HTTP three-digit code.
This HTTP status code tells us if our request was successfully completed or whether there was an error that prevented the server from serving the content that users or visitors were trying to access.
This article will walk you through some of the most common errors and HTTP status codes.
Here, how it’s done:
- What is HTTP Status Code?
- Response Types of HTTP Status Code
- What role do HTTP status codes play in SEO?
- A Complete List of HTTP Status Codes
What is HTTP Status Code?
When a browser sends a request to a server, the server responds with an HTTP status code. This HTTP code is not seen to users if the server can restore the content requested by the browser and there is no error. In the event that something goes wrong, the server will return an HTTP status code indicating that something isn't operating properly.
We can determine the type of error that has happened based on the status code provided by the server.
The Browser sends requests to the SERVER as a CLIENT. The server then responds to this request with either a web page (based on files and databases) or a code if the website is unavailable for some reason. The servers follow standard protocols that control these codes.
404-Not Found and 502-Bad Gateway errors are two common codes that users encounter in their day-to-day browsing. There are numerous server status codes apart from this.
Response Types of HTTP Status Code
HTTP status codes are standardized and listed in the HTTP status code registry maintained by the Internet Assigned Numbers Authority (IANA).
There are five different categories of HTTP code. The first digit of the HTTP code identifies the type of response we're working with: informative responses, successful responses, redirection, error browsers, and server errors.
1xx Status Codes: Informational
The 1xx-level HTTP status codes inform users that their request has been received but is currently being processed. The 1xx status codes do not necessarily indicate that there is an issue; they are just there to inform you that something is still in the process of being completed.
2xx Status Code: Success
The 2xx HTTP status codes indicate that the client's request was successfully received and processed by the server. In contrast to 4xx status codes, 2xx status codes are the ones you want. The 2xx status codes, like the 1xx status codes, are processed behind the scenes and are rarely visible to users unless they utilize developer or SEO tools to view all of a page's HTTP responses.
3xx Status Code: Redirection
In the case of URL redirection, the 3xx status codes are utilized. Since websites are constantly changing and evolving, marketers may need to refer users to an updated or different page at times. Redirects eliminate the need for users to seek what they're searching for while still maintaining your search engine rating.
The redirect actions may be carried out automatically by the browser or may require extra user interaction. The 3xx HTTP status codes are important for SEO and user experience, as well as informing search engines about the information you want crawled and indexed. Users may be routed to an undesired location if not correctly implemented, resulting in a 4xx status code and perhaps affecting SEO quality scores.
4xx Status Code: Client Error
4xx HTTP status codes, the classification with the most HTTP status codes, are not what you want your users to see. Any status code that starts with a 4 indicates that the client is having issues. If a page has been deleted and not redirected, or if a URL or link has been supplied incorrectly, 4xx status codes are usually produced. If users receive the dreaded 4xx status code, it signifies the client/browser is having trouble obtaining information from the server. These are errors that users will notice come up on their screens, resulting in a terrible user experience, irritation, and a desire to look elsewhere.
A few 404 errors are acceptable, and search engines don't always consider them to be a bad thing, but a 404 that redirects to a 404 can hurt your SEO. Furthermore, if the page in question is used to drive traffic or sales, this could result in a financial loss.
5xx Status Code: Server Error
The 5xx HTTP status codes, like the 4xx status codes, indicate that there is an error, although this error is unlikely to be caused by a faulty connection or the browser itself. The 5xx status codes indicate that the server is experiencing an issue and is unable to process the client's request. The server should also respond with an explanation of the mistake, whether it is a temporary or permanent condition, and how it can be fixed.
What role do HTTP status codes play in SEO?
The purpose of SEO is to bring organic traffic to your site that is likely to be interested in what you're saying.
You must ensure that your content is accessible to search engine crawlers in order to drive that traffic. You want HTTP status 2xx returned when users request your content.
You don't want HTTP status codes 5xx and 4xx to be returned. 😓
And you also don't want HTTP status codes 3xx to be returned in large numbers. 😑
HTTP is the protocol used by search engine crawlers and websites. How can you be good at SEO if you don't comprehend what they're talking about?
Tools to Check HTTP Status Codes
Third-party software created specifically for identifying status codes at scale is responsible for identifying the precise issue with your redirection. Some of our personal favourites include:
- Deep Crawl
Deep crawl works similarly to Screaming Frog, with the added benefit of cloud-based software and the flexibility to handle larger domains.
- Google Search Console
The Search Console is a fantastic tool for determining exactly what Google sees. To locate URLs that Google doesn't comprehend, look at the Crawl > Crawl Error reports.
- Link Redirect Trace
Link Redirect Trace is a browser plugin that continuously checks for HTTP codes.
- A1 Website Analyzer
The crawler has industrial strength for serious crawls, regardless of site size.
- Screaming Frog
This spider locates all of your domain's URLs, allowing you to easily segregate code by URL.
A Complete List of HTTP Status Codes
1xx Status Code
A 100-level status code indicates that the server's response to your request is still being processed for some reason. This isn't always a problem; it's just additional information to keep you informed.
- 100 (Continue) – This code denotes that the server is ready to accept requests.
- 101 (Switching Protocols) – This code indicates that the server is ready to accept the client's request to switch protocols, such as the upgraded version of HTTP.
- 102 (Processing) – This code denotes that the request has been accepted and is currently undergoing the intended process, with the result or output being awaited.
- 103 (Early Hints) – Before the final HTTP message, various response headers are returned.
2xx Status Code
This is the best HTTP status code you can get. A 200-level response means that everything is working properly.
- 200 (OK) – When an HTTP request is successful, this is the standard response. The type of information or output provided is determined by the method used to make the request. The method of the request could be GET, HEAD, POST, or TRACE.
- 201 (Created) – This HTTP status code denotes the creation of a new resource in response to the client's request. With this status code, the URI of the newly created resource is also returned.
- 202 (Accepted) – This implies that the client's request was accepted but could not be processed right away. A waiting list has been created for this request. However, this does not guarantee that the request will be completed successfully; this will only be established once the procedure has begun.
- 203 (Non-Authoritative Information) – This indicates that the response received after the request has been processed comes from a different resource than the one indicated in the request. But only available from HTTP Version 1.1 onwards.
- 204 (No Content) – The http status code 204 indicates that the request has been satisfied, but the resource to be delivered as a result of the operation contains no content.
- 205 (Reset Content) – This is nearly identical to 204, however it requires the user or client to reset the document view.
- 206 (Partial Content) – When a partial GET request for a resource is made, this status code is returned, which returns only a portion of the requested resource's content.
- 207 (Multi-Status) – This code is used when many independent operations are performed as a result of various sub-requests, and it can contain a number of different response codes.
- 226 (IM Used) – The response is a representation of the outcome of one or more instance-manipulations made to the current instance after the server has satisfied a request for the resource.
3xx Status Code
As previously stated, this set of status codes indicates the occurrence of redirection, and it may be necessary for the user agent to do subsequent redirections without the user's knowledge or action. There may be instances where infinite redirection loops occur. In such situations, the user agent, as a protocol, cannot redirect more than 5 times.
- 300 (Multiple Choices) – This indicates that the requested resource has numerous options available; for example, it could return a list of videos in various formats such as mp4, m4a, 3GP, and so on.
- 301 (Moved Permanently) – This signifies that the requested resource has been permanently relocated, with the new address supplied in the response's Location field.
- 302 (Found-Previously "Moved temporarily") – The HTTP status code 302 indicates that the resource has been moved from its original location, but that the server was able to locate it elsewhere. Under the industrial practice, it is sometimes referred to as temporary redirection.
- 303 (See Other) – Using the GET method, the response to the request can be found under a different URI (Uniform Resource Identifier). When a POST (or PUT/DELETE) response is obtained, the client should assume the server has received the data and send a new GET request to the provided URI.
- 304 (Not Modified) – The HTTP status code 304 indicates that the requested page or resource has not changed since it was last viewed from the same browser, it aids browsers in returning the page promptly. As a result, the browser can display the cached version.
- 305 (Use Proxy) – Only a proxy, whose address is included in the response, can access the requested resource. Many HTTP clients (such as Mozilla Firefox and Internet Explorer) ignore this status code for security concerns.
- 306 (Switch Proxy) – This code is now inactive and will be used in the future.
- 307 (Temporary Redirect) – This is used to notify that the resource has been temporarily relocated so that the user agent can make a new request with the resource's updated URI. However, as this is a temporary change, the user agent can still utilize the original URI for subsequent queries.
- 308 (Permanent Redirect) – It indicates that the user agent should utilize the changed URI for both current and future requests.
4xx Status Code
As previously stated, this set of status codes indicate that there is an error in the requested process at the user's end and that a new request must be made after the request has been corrected.
- 400 (Bad Request) – The HTTP status code 400 shows that the request made by the user agent has a syntax error.
- 401 (Unauthorized) – It shows that the request was done without authorization and that user authentication is required. Along with this status code, the server's response includes a WWW-Authenticate header field, which contains an authentication challenge for the user agent to complete.
- 402 (Payment Required) – This status code was designed as part of a way to allow for potential future digital payment methods. It is now officially reserved for future usage, but it was utilized in a few limited, but rare, situations.
- 403 (Forbidden) – The user has requested access to a resource that he is not permitted to access, as shown by the status code 403 Forbidden from the resource.
- 404 (Not Found) – Indicates that the resource is Not Found, but does not specify why or whether it will be available again in the future.
- 405 (Method Not Allowed) – The HTTP status code 405 indicates that the resource does not accept or support the method given in the request. If a resource requires POST to present data when the request is made using GET, the server will return a 405 error.
- 406 (Not Acceptable) – When the requested resource can only generate content that is not acceptable according to the Accept headers given in the request, this status code is returned.
- 407 (Proxy Authentication Required) – The client must first establish a connection with the proxy.
- 408 (Request Timeout) – It happens when the server is waiting for a request but the client is unable to deliver one within a specific amount of time.
- 409 (Conflict) – It signifies that the request made is contradictory.
- 410 (Gone) – This indicates that the requested resource is no longer available and that no redirection or forward address exists.
- 411 (Length Required) – It means that in order for the request to be processed by the server, the user agent must provide the content length in the request.
- 412 (Precondition Failed) – In the request header fields, the server fails to meet one of the requester's preconditions.
- 413 (Payload Too Large) – It means that the resource requested is too huge for the server to handle.
- 414 (URI Too Long) – It means that the server can't handle the requested URI because it's too lengthy.
- 415 (Unsupported Media Type) – It means that the media format isn't supported.
- 416 (Range Not Satisfiable) – The client requested a byte serving of the file, but the server was unable to offer it. For example, if the client requested a portion of the file that extends beyond the file's end.
- 417 (Expectation Failed) – The server is unable to match the Expect request-header field's criteria.
- 418 (I'm a teapot) –This code was defined in RFC 2324, Hyper Text Coffee Pot Control Protocol, in 1998 as one of the traditional IETF April Fools' hoaxes, thus it is unlikely to be implemented by actual HTTP servers. This code should be returned by teapots when they are asked to brew coffee, according to the RFC. Some websites, such as Google's I'm a teapot easter egg, exploit this HTTP status as an Easter egg.
- 421 (Misdirected Request) – The request was forwarded to a server that was unable to respond.
- 422 (Unprocessable Entity) – The request was well-formed, however, it couldn't be carried out because of semantic errors.
- 423 (Locked) – The resource you're trying to access is locked.
- 424 (Failed Dependency) – The request failed because it was reliant on another request, which had failed.
- 425 (Too Early) – This indicates that the server is hesitant to process a request that could be replayed.
- 426 (Upgrade Required) – In the Upgrade header field, the client should switch to a different protocol, such as TLS/1.3.
- 428 (Precondition Required) – The origin server requires a conditional request. The 'lost update' problem occurs when a client GETs the state of a resource, alters it, and PUTs it back to the server, however, a third party changes the state of the server, causing a conflict.
- 429 (Too Many Requests) – It's used for 'rate-limiting,' and it's returned if the user agent sends Too Many Requests in a given amount of time. This status code is accompanied by a ‘Retry-After' header, which specifies the maximum amount of time the user agent can attempt to transmit the request to the server.
- 444 (No Response) – It's an Nginx HTTP server extension, which is returned when the server delivers no information and is meant to prevent malware.
- 451 (Unavailable for Legal Reasons) – It refers to access restrictions imposed by censorship or a government requirement for legal reasons.
- 431 (Request Header Fields Too Large) – The server refuses to handle the request because one or more of the header fields are too big individually or collectively.
- 499 (Client Closed Request) – It means that the client closed the connection while the server was processing the request, preventing the server from returning the HTTP header to the client.
5xx Status Code
This set of status codes indicates that, while there is no problem with the user agent's request, the server is unable to process the request for some reason.
- 500 (Internal Server Error) – The HTTP status code 500 indicates that there is an Internal Server Error and that the request could not be executed at this time.
- 501 (Not Implemented) – Due to a lack of support, the server is unable to understand the request.
- 502 (Bad Gateway) – A server may function as a gateway to another upstream server on occasion. In such cases, if the gateway server receives an invalid response from the upstream server, it responds to the user agent with this status code.
- 503 (Service Unavailable) – The HTTP status code 503 is sent if the server is down for maintenance or is overburdened with other requests.
- 504 (Gateway Timeout) – The HTTP status code 504 is displayed if the server is serving as a gateway and has not received a response from the upstream server within a particular amount of time.
- 505 (HTTP Version Not Supported) – A 505 status code is issued if the HTTP request made by the user agent is not supported by the HTTP protocol used by the server.
- 506 (Variant Also Negotiates) – A circular reference is the consequence of transparent content negotiation for the request.
- 507 (Insufficient Storage) – If a process could not be finished due to a lack of storage capacity on the server, a 507 status code is returned.
- 508 (Loop Detected) – During the request processing, it is characterized as an ‘Infinite Loop.'
- 510 (Not Extended) – The server will need to add more extensions to the request before it can be fulfilled.
- 511 (Network Authentication Required) – Network Authentication Error is indicated.
- 521 (Web server is Down) – This means that the web service is down and cannot accept or process the request.
- 525 (SSL Handshake Failed) – The SSL handshake between a Cloudflare-enabled domain and the origin web server failed, resulting in Error 525.
While HTTP status codes may appear to be confusing or frightening at first glance, they are actually highly useful. You can fix issues on your site more quickly if you learn some of the most common ones.
Learn More about HTTP Status Code
There are various resources available to learn more about these HTTP status codes, including:
- Definitions of status codes - Internet Engineering Task Force (IETF)
- List of HTTP Status Codes – Wikipedia
By knowing these status codes can assist you in resolving some specific issues when maintaining your own website or when encountering them on other websites.
Monitor API Failures with Atatus
Monitoring API failure in production is very hard. You'll need tools like Atatus to figure out which APIs are failing, how often they're failing, and why they're failing.
Using Atatus, you can see the most common HTTP failures and get detailed information about each request, as well as custom data, to figure out what's causing the failures. You can also view how API failures are broken down by HTTP Status Codes and which end-users have the most impact.