Technical SEO issues for a website can be difficult to decipher and understand. By knowing different HTTP status codes, you can effectively manage your website and be proactive about ensuring your website is in good health. Not only will this help the website with ranking on search engines, but also help it keep website traffic happy by ensuring a great user experience.
HTTP status codes are a way of communicating information about the status of a request or response. The most common HTTP status code is 200 (OK), which indicates that the request was successfully completed. Other common HTTP status codes include 204 (No Content), 301 (Moved Permanently), 302 (Found), 308 (Not Modified), and 404 (Not Found).
It’s important to understand these codes from a search engine optimization (SEO) so you can correctly interpret the results of your web requests. For example, if you receive a HTTP response status code like 404 (Not Found), then it’s safe to assume that the page has been deleted. Similarly, if you send a request and receive an error message like 500 (Internal Server Error), then you should probably check your website’s configuration settings to see whether there are any issues with it.
This blog post runs through everything you need to know about HTTP error codes, and provides a comprehensive list of the different types of codes you may encounter. To start everything off, let’s take a look at what HTTP status codes are.
Table of Contents
What are HTTP status codes?
The definition of a HTTP status code is the particular response to a browser’s input or request. While a visitor visits a website, their browser will send a request to the particular site’s server, the server will then respond or produce a certain three-digit code. Or in other words, it will respond with one of multiple HTTP status codes to the visitor.
Think of it like this. The three digit code, or HTTP status code that is being produced can be thought of as your computer trying to have a conversation with the particular website’s server. As the browser begins communicating, it may ask about a certain site, which the server may respond to in one of three ways: I’m great (2xxs codes); I’m not too sure about things (3xxs codes); and, I’m not okay (4xxs codes).
By understanding the language of the server, you can diagnose site errors quickly and make sure your are providing the best possible user experience. Nothing is worse than a new site visitor runs into a bunch of 4xx pages.
Some of these codes, like a 301 for example can help search engines and people access your site. A 301 will communicate with people and search engine crawlers that a page has been moved to a new location permanently.
Potential HTTP status codes that you will encounter will start with one of five numbers – 1xx, 2xx 3xx, 4xx, or 5xx. The first number signifies what kind of code it is while the subsequent numbers signify a certain status within that range. Each category will indicate a different class of server response.
You can find the HTTP Status categories below:
HTTP status code categories:
HTTP status codes come from five different categories ranging from 100-500. We have broken the error codes down into their respective categories and described which each refers to.
- 1xxs – Informational responses: the server has received the request and is currently thinking through the request
- 2xxs – Success: The request entered was a success and the browser received the expected information
- 3xxs – Redirection: The user was redirected to a different page. The server received the request from the user, but it redirects the user to another location
- 4xxs – Client errors: Page not found. It indicates that the user submitted request could not be completed because the page is giving an invalid response.Often due to the page not exist
- 5xxs – Server error: The request failed. The user made a valid request however the server failed to complete the request.
Must Know Status Codes for SEO
Now that you have a basic understanding of what the categories stand for, we should dive deeper into individual codes. These HTTP status codes are ‘must know’ for SEO purposes.
Think about this. You’re working on a site and it is producing a lot of 5xx error codes. You’ll know that it is a server issue producing these errors as the server could not complete the request. Thus, to understand the current issue you contact your server provider.
You now move on to your next project to work on. But when you go through your website you start to see you have 4xx codes popping up. Right away you understand that these 4xx codes will hinder your user experience and you need to fix the issues. So you start to think about any changes that you may have made to the URL structures, or if any other pages were deleted from your website.
Knowledge is power, and once you understand the various codes you can be quick to react to fix them. Maybe you will set up a 301 redirect from a page you deleted or from a page that you changed the URL of. Maybe you want to be proactive and set up a custom 404 page instead. With a custom 404 page you can reduce bounce rates and move the user onto another page on your site.
Let’s break down the most common HTTP status codes every SEO professional and small business owner should know:
HTTP Status Code 200 – OK
200 is the ideal status code that you are looking for. It signifies a normal, properly functioning page. This means that everything is working just fine and that page visitors and page crawlers will be able to navigate through the page with no problem. HTTP status code 200 does not require any further interaction or work.
HTTP Status Code 301 – Permanent Redirect
Anytime you delete a page or change a URL slug, you will need to utilize a 301 redirect. It signifies that the requested site has been permanently moved to another location. Therefore, the server will redirect the visitors and search engine crawlers to a different URL. Another great thing about 301 redirects is that you won’t have to worry about losing those hard earned backlinks, which are so important for SEO. If you delete or change a URL you will have to set up a 301 redirect. You can do this with plugins, or with a HTML redirect.
HTTP Status Code 302 – Temporary Redirect
You can consider a 302 to be similar to a 301 with one exception – It is considered temporary. This means that the backlinks will not pass on their link juice to the new page. However, we recommend not using 302 for permanent changes. If it is permanent, go with a 301 so you can keep the link equity from the previous page – which is extremely important for your domain authority.
HTTP Status Code 404 – Not Found
A 404 error status code is an ‘Uh Oh’ moment. It means that the page or file the visitor is looking for can’t be found on the server. A 404 page however, won’t tell you if the requested item is permanently gone or only temporarily. You will need to do some digging and thinking to figure out what happened to the page. A 404 page is a huge roadblock for visitors and page crawlers, it stops them in their tracks. 404 pages can also be detrimental to your bounce rate and visitors exiting your page. Therefore, fixing these errors should be of the utmost importance.
It is inevitable, websites will encounter 404 status codes at some page. It is important to note that you don’t always have to redirect the page. This stems from a common misconception that persists that every 404 should get a 301 redirect for SEO reasons. Moreover, you may hear suggestions that you should redirect the page to the homepage if there is nothing else to redirect to. However, this could actually be a bad idea. Whereas, most of the time, the redirect to your homepage will just confuse the page visitor.
If a 404 page is a high-authority page which is able to build backlinks and attract a great deal of organic traffic, then it is probably best to use a 301 redirect. Just ensure that the redirect takes them to a page that is relevant to the 404 page. For example, if the 404 page was for ‘Best SEO Companies in Portland’, you will want to use a 301 redirect to get them to a page that is highly related to that topic.
You can also use a 404 page to your advantage as well. Let’s say you no longer want Google to index or crawl a particular page, you can leave it as a 404 instead of redirecting it.
However, no matter if you redirect the page or leave it as a 404 page, you should make sure to create a custom 404 page, as directed by Google Search Console guide. By having a custom 404 page you can improve the user experience, and put mechanisms in place that will help keep visitors on your website.
Status Code 410 – Gone
HTTP status code 410 is more permanent than a 404 status code page. It signifies that the page is doesn’t exist anymore, and is no longer available on the server. Moreover, it means that the website did not establish a forwarding or redirect address for the page. If a crawler or visitor finds a 410 page, they have just found a dead end. Thus take time to make sure you have removed all links to that source from your website.
410 websites do have benefits though. Whereas, Google’s John Mueller stated that, “We treat 410s differently than 404s. In particular, we sometimes want to confirm a 404 before removing a URL from the index, and we tend to do that faster with a 410 HTTP result code.” Therefore if you know that the page is deleted and is gone for good, use a 410 page to show Google that it is ok to remove the page and no longer index it.
Status Code 500 – Internal Server Error
Different from the rest of the codes mentioned above, a 500 status code indicated the server encountered an unexpected condition that resulted in it being unable to fulfill the request. Additionally, the error will typically present itself to the user when no other error code is suitable.
HTTP status code 500 will significantly affect the access to your site and reduce user experience. In other words, you can consider it as downtime for your website. Search engines do not like sites that return 500 codes frequently. It shows that the site is not well maintained and may have significant problems and down time. Make sure to fix these types of issues as soon as possible.
Status Code 503 – Service Unavailable
A 503 status code is another server based issue. Which typically indicates the server is currently unavailable. It signifies that all visitors should come back later. The issue could be a result of server overload or the server conducting maintenance. The 503 status code informs search engine crawlers that they should return shortly as the website is only going to be down for a short period of time.
Checking for HTTP Status Codes in Google Search Console
Using Google Search Console is one method to understand how Google views your site’s HTTP status codes. In the Coverage report, you may see status codes including 300, 400 and 500.
The image below shows the Google Search Console Coverage Report. It contains four types of content on your site:
- Pages that return errors.
- Valid pages that have warnings.
- Resources that are valid.
- Content excluded from the index.
Depending on the type of code, you may find pages containing 300-, 400-, and 500-level HTTP status codes under the Excluded, Error, or Valid with Warnings sections. For example, as a Page with Redirect: 301 redirects, they may be listed under Excluded.
Moreover, if your website has any 400- or 500-level HTTP status codes they will probably turn up in the Error section of the report. These are important to look into as they are usually more serious errors that can affect user experience as well as Google’s ability to crawl, index and rank your website.
Now that you know how to check for status codes, the last thing to do is familiarize yourself with the additional HTTP status codes you may be presented with. In the sections below we highlight all of the different types of error codes you may be presented with.
1XX: Informational Status Codes
The request you made to the server is still in progress for some reason, according to a 100-level status code. This isn’t always a issue; it’s just additional information to help you understand what’s going on
|HTTP Status Code||Status Code Meaning|
|100: Continue||The server has only received a portion of the request, but the client should proceed with the request as long as it has not been rejected.|
|101: Switching protocols||The server switches protocols|
|102: Processing||A 102 status code indicates that the server has received and is processing the request sent. However, no response is available yet to respond with.|
|103: Early hints||Before the remainder of the server’s response is ready, this returns some response headers.|
2XX: Success Status Codes
The best HTTP status code to receive are the 200 HTTP codes. Everything is functioning exactly as it should when your browser receives a 200-level response.
|HTTP Status Code||Status Code Meaning|
|200: Everything is OK||The request is ok. The code that is delivered when a web page acts the way it’s expected to.|
|201: Request Created||The request is complete, and a new resource is created.|
|202: Request Accepted||The request is accepted for processing, but the processing is not finished.|
|203: Non-Authoritative Information||When a proxy is in use, this status code may appear. The proxy server got a 200 OK status code from the origin server, but before delivering it to your browser, it changed the response.|
|204: No Content||The server has successfully handled the request, but is not going to provide any content.|
|205: Reset Content||This means that the server has processed the request but will not provide any response, similar to a 204 code. Your browser, on the other hand, must reset the document view in order for it to work.|
|206: Partial Content||If your HTTP client (sometimes known as your browser) employs range headers, you may see this status code. This permits your browser to divide a download into multiple streams and resume paused downloads. When a range header is encountered, the server will only send a portion of the requested data, a 206 code is returned.|
|207: Multi-Status||Conveys information about multiple resources. It is used when there are multiple status codes that might be appropriate.|
3XX: Redirection Status Codes
The technique of redirection is used to signal that a resource has been relocated. To provide website visitors with information about where to find the content they’re looking for, different HTTP status codes are used with redirections.
|HTTP Status Code||Status Code Meaning|
|300: Multiple Choices||In order to fulfill your browser’s request, the server may have multiple possible resources it can respond with. Your browser must now choose between them, according to a 300 status code. It might happen if the server is having difficulty determining word sense disambiguation or if there are numerous file type extensions available.|
|301: The resource has been moved permanently||When a web page or resource is permanently replaced by a new one, this code is sent to the server. Permanent redirection via the URL is done using this.|
|302: The resource has moved, but was found.||This technique is employed to indicate that the necessary item was located, but not where it was predicted. Temporary URL redirection is performed using this.|
|303: See Other||Familiarity with the four primary HTTP request methods is required to understand a 303 status code. A 303 code informs your browser that it obtained the data it needed by POST, PUT, or DELETE, and directs your browser to the resource. However, you need to make the appropriate request to a different URL than the one you previously used in order to retrieve it using GET.|
|304: The requested URL or resource has not been modified since the last time you accessed it||The browser is informed that the assets stored in its cache haven’t changed. It reuses previously downloaded resources to boost web page delivery.|
|306: Switch Proxy||This response code is no longer used. As It was only used in a previous version of the HTTP/1.1. Meaning you should not receive this code.|
|307: Temporary Redirect||When a resource is briefly moved to a new URL, a 307 status code replaces the 302 “Found”. However, unlike the 302 HTTP code, 307 doesn’t allow the HTTP method to change.|
|308: Permanent Redirect||The 301 “Moved Permanently” status code is the predecessor to the 308 status code. Whereas, it informs the browser that the requested resource is now permanently accessible at a new URL and prevents the HTTP method from changing.|
4XX: Client Error Status Codes
Returning HTTP status codes at the 400 level means that the issues are becoming problematic. These are notification codes indicating that your browser or request is causing a problem. Let’s take a look at all the different types of 400-level HTTP status codes.
|HTTP Status Code||Status Code Meaning|
|400: Bad Request||Due to a problem on the client’s end, the server is unable to return a response.|
|401: Unauthorized or Authorization Required notice||When the target resource lacks valid authentication credentials, the server returns this information. If you’ve done htpasswd authentication on basic HTTP, then you might see this.|
|402: Payment Required for access||This code was originally designed for use in a digital cash system. That idea, however, never came to fruition. Instead, it indicates that a request cannot be fulfilled due to a lack of required funds and is used by a variety of platforms.|
|403: Access to that resource is forbidden||When a user tries to view something they shouldn’t be able to see, this code is returned. For instance, a 403 error may occur if you attempt to access password-protected material without logging in.|
|404: The requested resource was not found||It’s the most frequent error message you’ll get. The requested resource does not exist, and the server is unaware if it ever existed.|
|405: Method not allowed||When the origin server (hosting server) supports the method supplied, but the target resource does not,|
|406: Not acceptable response||Only content that is not acceptable according to the accept headers sent in the request method may be produced by the requested resource.|
|407: Proxy Authentication Required||A proxy server is in use and requires the browser to authenticate itself before continuing on with the request submitted.|
|408: The server timed out waiting on the rest of the request from the browser||When a server waits for the entire request from the browser but times out, this code is generated. To put it another way, the server received only part of the request made by the browser. Net congestion, which causes data packets to be lost between the browser and the server, is one possible explanation.|
|409: Conflict||The server couldn’t process your browser’s request because there was a conflict with the relevant resource, which resulted in a 409 status code. This can happen due to multiple edits being done at the same time.|
|410: The requested resource is gone and won’t be coming back||A 410 signifies that the situation is expected and permanent. Similar to the 404 “Not Found”, except that the webmaster knows the page will never return and is signaling that to the user and search engines.|
|411: Length Required||The requested source requires the client to indicate a certain length when requesting the needed resource but didn’t.|
|412: Precondition Failed||The server did not meet the requirements in your browser’s request headers.|
|413: Payload Too Large for server||The server is unable or unwilling to process the request as it was too large.|
|414: URL Too Long||When a GET request is encoded as a query string that is too big for the server to handle, this is generally the outcome.|
|415: Unsupported Media Type||The server or resource does not support the requested media type.|
|416: Range Not Satisfiable||The server is unable to provide you with a piece of the resource that you requested.|
|417: Expectation Failed||The server is unable to meet the requirements specified in the browser’s request’s expect header field.|
|418: I’m a teapot Joke||An April Fool’s Joke from 1998 that returns a 418 code by teapots that receive requests to brew coffee|
|421: Misdirected Request||A server that is unable to provide a response was targeted with the request. This may be communicated by a server that isn’t set up to generate responses for the request URI’s combination of scheme and authority.|
|422: Unprocessable Entity||The server can’t process the client request since it contains semantic errors.|
|424: Failed Dependency||Due to a request failing previously the new request also failed|
|425: Too Early||When the server refuses to process a request because it might be replayed, this code is delivered.|
|426: Upgrade Required||The client should switch to a different protocol because of the contents of the request’s upgrade header field.|
|428: Precondition Required||Before processing the request, the server needs to meet certain requirements.|
|429: Too many requests||When a user makes too many requests in a specific period of time (rate-limiting), the server creates this. Bots or scripts may occasionally try to access your website, resulting in this. You might want to try changing your WordPress login and password in this scenario.|
|431: Request Header Fields too Large||The request cannot be processed because the header fields are too large, according to the server. This might signal a failure with either one header field or even all of the location header fields|
|451: Unavailable for Legal Reasons||A request to deny access to the resource you’ve requested (or a set of resources that includes the one you’ve requested) has been made by the server operator.|
|499: Client closed the request||When the client closes the request while Nginx is still processing it, NGINX returns this.|
5XX: Server Error Status Codes
Errors include 500-level status codes. The problem, however, is on the server’s end, making the ability to resolve them much more difficult. Let’s dive into what these 500-level HTTP status codes mean.
|HTTP Status Code||Status Code Meaning|
|500: There was an error on the server and the request was not completed||This is a generic status code that implies an “internal server error.” The requested resource was not delivered because something went wrong on the server. Third-party plugins, broken PHP, and even database connections are all common causes of this code.|
|501: Not Implemented||The server does not provide the capability required to execute the request. This is almost always a problem on the web server side and the host must usually resolve it.|
|502: Bad Gateway||When a proxy server is in use, this error code usually indicates that one server has received an incorrect response from another. The server may cancel or kill a request because it has taken too long at other times. The connection to the database is broken as a result.|
|503: The server is unavailable to handle this request right now||This HTTP status code is displayed when the request cannot be fulfilled at a particular time. If a server is overloaded and cannot handle additional future requests, this code may be returned.|
|504: The server, acting as a gateway, timed out waiting for another server to respond||When a request is processed by two servers, the first server may time out waiting for the second server to respond. If this happens, this is the code returned.|
|505: HTTP Version Not Supported||The server does not support the HTTP version that the client is using to make the particular request.|
|506: Variant also Negotiates||The chosen variant resource is set up to perform transparent content negotiation directly, making it unsuitable as an endpoint in the negotiation process. The server has an internal configuration issue.|
|507: Insufficient Storage||Since the server is unable to hold the representation required to successfully finish the request, the technique cannot be done on the resource.|
|508: Resource Limit Is Reached||The particular resource limits set by the web host have been reached.|
|509: Bandwidth Limit Exceeded||This status code is shown when your website is using more bandwidth than your hosting provider allows you to use.|
|510: Not Extended||Further extensions to the request are needed in order for the server to respond and fulfill it.|
|511: Network Authentication Required||When the network you’re trying to connect to requires some sort of authentication before delivering your request to the server, this status code is returned. For example, you might have to accept the Terms and Conditions of a public Wi-Fi hotspot before accessing the server.|
|521: Web server is down||The Error 521 is a Cloudflare-specific error message. Which means that your browser was able to connect to Cloudflare. However, Cloudflare was not able to connect to the origin web server.|
|525: SSL Handshake Failed||The SSL handshake or connection between a Cloudflare-hosted website and the origin web server failed.|
Key Takeaways: HTTP Status Codes:
Having a good handle on what status codes mean can improve your overall response time to fixing the errors on your website. It is imperative that a website rectifies the errors as fast as possible. Permanent links or slugs that you have changed for SEO reasons may result in error codes and broken pages. Moreover, broken pages, or website down time can negatively impact the perception of the website with both visitors as well as search engines.
No matter if you are a SEO expert or a small business owner managing your own website, take note of the various status codes that could pop up. Actively monitor your website and keep an eye out for issues. There are plenty of free tools out there that will provide you with a site audit and tell you exactly what type of broken pages you have.
If you are looking for assistance in solving your website’s HTTP error codes, or are in need of general assistance to take your website to the next level, then contact us today!