A deep dive to understanding HTTP status codes
HTTP response codes are short three-digit messages sent from a web server to your browser each time you request the loading of a new page.
The response code indicates to both search engines and users what the current condition of the web-page is and what content can be expected from the page.
Response codes are treated the same for both users and bots, although users can’t visually see the response on a web-page.
How to find a page’s status code
The quickest way to identify the status code of the page you’re visiting is to use a browser extension.
Most browser extensions will display the status code of the page at the top of your browser without you having to interact with it.
The best browser extension I’ve found for identifying status codes is ‘Redirect Path’.
This extension displays the status code of the page, and you can select the extension to view the path users and bots were directed through.
For example, if you were directed through a redirect chain of multiple pages, you would be able to break down which pages you visited before reaching the final destination.
The manual way to view the status code of a page involves using Google’s developer tools. To access these tools, you need to right-click a webpage and click ‘inspect’.
Once you have developer tools open, go to the ‘Network’ tab and look for the response with the page URL slug (this is often highlighted) and look at the value in the ‘Status’ column as this will contain the response code of the page.
Status code classes
The first digit of each response code represents the class of the response. There are five classes of response code, as shown below:
1XX – Informational – These codes are temporary responses until a final server response has been provided. They indicate that the server has received the request and is currently processing a response.
2XX – Success – The server has received the request from the browser, processed the request and accepted it. With 2XX codes, no actions are required by users or search engine bots as everything has been carried out successfully.
3XX – Redirection – Redirect status codes mean there are additional actions to be completed by the user before the final page can be reached. These codes are most commonly used to direct users and search engine bots to a new page.
4XX – Client Error – These codes indicate there was an issue with processing the request that was not a result of the server, and it is not able to deliver what the user is requesting.
5XX – Server Error – These codes are a result of a request not being completed due to an issue on the server’s side.
For each class, there are several response codes with their own purpose.
Below I have explained the common response codes and provided details on how each one should be treated by website owners and webmasters.
Status codes breakdown
200 – OK – This is the generic response for when the request has been processed by the server and delivered successfully to the client (user).
No action is required for pages with a 200 status code.
However, if the page is a soft 404, you can either add appropriate content, implement a redirect to a relevant page or remove the page completely.
You can view if any soft 404s are on your website as they are flagged in Google Search Console.
301 – Permanent redirect – This code is used when a permanent redirect has been implemented, resulting in users and bots being directed to another location.
In the past, the use of permanent redirects resulted in a slight loss of PageRank.
This is, however, no longer the case, and the use of 301 redirects means no link equity is lost between pages.
The use of redirects can have an impact on the crawl budget of your site (as bots are required to crawl additional pages), so it is important that redirects are used were necessary and that redirect chains are not consistently generated.
302 – Found – This code acts the same as a 301 redirect, but it used to inform search engine crawlers that the redirect is only temporary.
Temporary redirects aren’t used as consistently as permanent redirects these days, but due to how easy it is to implement 302 redirects, many site owners use the incorrect redirect code.
Because of this, search engines (Google in particular) have become smarter at recognising which redirect code is most suitable for the given scenario.
While this is helpful for site owners, search engines are never fully consistent, and using the incorrect code still provides the risk of the redirect being incorrectly handled by crawlers.
303 – See Other – A 303 response informs users and bots that the requested page can be found at another location and that a GET method is required to reach the destination URL.
304 – Not Modified – This request means the resource/page has not been modified since the user/bot’s last visit meaning the page doesn’t need to be requested from the server and can be retrieved from the user’s cache.
307 – Temporary Redirect – This status code follows the same premises as a 302 redirect but has a slight difference been that the same HTTP method must be used for all requests. This code is most commonly used for redirecting HTTP pages to the secure HTTPS version.
400 – Bad Request – The server was not able to understand and complete the request from the client.
401 – Unauthorized – This status code is used for pages that require a username and password to be entered before the destination page can be accessed.
403 – Forbidden – You guessed it, the page is forbidden, and cant be accessed by users or search engine bots.
404 – Not Found – The most common 4XX response code. This code informs users and bots that the server can not find the page that is being requested.
404 pages add no value to a website and, if consistently linked to throughout the site, can negatively impact SEO and user experience.
Therefore, if a 404 page is linked to internally or externally it should be updated with a 301/302 redirect to the nearest suitable page. If the page is not linked to, then no action is required as it will eventually fall out of the search engine’s index.
410 – Gone – The page that is being requested is no longer available at the location requested.
These codes can be used to inform search engine bots and users that a recently accessible page no longer exists.
They should be used for URLs that are no longer relevant to the website (i.e. products which the website no longer offers). URLs which return a 410 code, but have a new URL location, should be appropriately redirected.
500 – Internal Server Error – This code means the server has encountered an issue and doesn’t know what action to take as a result.
A 500 code is used when the server can’t find a more suitable 5XX code to use and can be sometimes difficult to identify the cause.
Once you identify the problem causing the 500 code we recommend you store a log of the issue for future reference so it can be resolved again.
Server errors can have a negative impact on a website if there are many in which search engines have to crawl.
501 – Not Implemented – The request sent to the server cannot be handled as the method used can not be understood or supported.
Servers are only able to support GET and HEAD methods, so if any other method is used with the request, the server should respond with a 501 code.
502 – Bad Gateway – This response code means the server (which acts as a gateway to gather the resource) received an invalid response while trying to complete the request. This is sometimes a result of requests taking too long to be processed.
503 – Service Unavailable – Server is not able to handle the request. This is commonly caused by maintenance, or the server has overloaded.
504 – Gateway Timeout – A 504 response code is shown when two servers attempt to complete a request but the second server timed out as a result of waiting too long for the first server to complete its part of the request.
This code implies that your web servers aren’t communicating successfully; you can try to resolve this code by identifying the cause of the communication issue.
A few things you can check include: your internet connection, any recent DNS changes, log files, your firewall configuration and any errors in the site’s coding.
505 – HTTP version not supported – The server will not support the HTTP protocol version used in the request and will therefore not complete the request.
With a 505 response, you should receive a message indicating why the server has rejected the HTTP protocol used.
Other common status codes used
201 – Created – This code indicates that the request has been completed and a new resource has been produced.
202 – Accepted – The request has been accepted and will be processed by the server.
305 – Use Proxy – The requested page needs to be accessed through the proxy that is included in the ‘location’ header.
408 – Request Timeout – The server was not able to complete the request due to how long the request was taking.
521 – Web server is down – This is a Cloudflare specific status code that occurs when the web server refuses connection to Cloudflare.