HTTP status codes are an essential part of SEO and web development.
They tell you everything you need to know about the status of a page and help you troubleshoot any errors that might appear.
This small guide will go over the full HTTP status codes list and explain what each one means.
You will also find tips on how to handle the most important ones.
Contents:
What Are HTTP Status Codes?
HTTP status codes are standard server responses to browser requests.
These codes help identify the status of a page or request and can be used to troubleshoot any errors that you might encounter.
They include three-digit numbers and they fall into five different classes:
- Informational responses (100–199)
- Successful responses (200–299)
- Redirection messages (300–399)
- Client errors (400–499)
- Server errors (500–599)
Informational Responses (100–199)
Informational responses indicate that the server has received and is processing the request, but no response is available yet.
You will usually only see these codes in the server logs, not the browser.
Here they are:
- 100 Continue (which indicates that the server has received the request and is continuing to process it)
- 101 Switching Protocols (happens when the browser requests an upgrade to a different protocol)
- 102 Processing (used by WebDAV-enabled servers to indicate that the request is still being processed)
- 103 Early Hints (it lets you return some response headers before the full response is sent, which can help improve Largest Contentful Paint)
Successful Responses (200–299)
Successful responses show that the request was received and processed successfully.
You will usually see these codes in the browser when you visit a page.
Here’s the list:
- 200 OK (the request was successful and the response is available)
- 201 Created (a new resource was created as a result of the request)
- 202 Accepted (the request has been accepted but is not yet complete)
- 203 Non-Authoritative Information (used for responses that are not from the original server)
- 204 No Content (there is no content to return for the request)
- 205 Reset Content (resets or clears a form after submitted)
- 206 Partial Content (used when only part of the response is being returned)
- 207 Multi-Status (used with WebDAV to indicate that multiple status codes are being returned)
- 208 Already Reported (used with WebDAV to tell that the message has been previously reported)
- 226 IM Used (the response is a representation of an instance manipulation)
How Google Manages 2xx
Most of the 2xx HTTP status codes don’t need any action from you. Googlebot will automatically crawl and index your content as usual.
However, there are some instances where you might need to take action.
For example, 204 status codes will not be crawled by Googlebot because there’s no content to crawl, and will be considered soft 404 errors.
To find these soft 404 errors, you can visit Google Search Console.
Then, click on the “Pages” tab, in the “Index” section:
In this case, you will need to add some content to the page or redirect it to another one.
Another example is when you see a 200 HTTP status code for a page that doesn’t exist. This can happen when your server is misconfigured and is sending the wrong status code.
If you see this happening, you will need to fix the configuration of your server so that it sends the correct status code.
Redirection messages (300–399)
Redirection messages indicate that the client needs to take additional action to complete the request.
For example, if you try to visit a page that has been moved, you will see a 301 redirect status code.
Here are the codes that fall in this category:
- 300 Multiple Choices (there are multiple options for the resource that can be selected)
- 301 Moved Permanently (the resource has been moved and all future requests should be made to the new location)
- 302 Found (the resource is temporarily located at a different location)
- 303 See Other (used in conjunction with POST methods to indicate where the response should be located)
- 304 Not Modified (the resource has not been modified since the last request)
- 305 Use Proxy (the client needs to use a proxy server to make future requests)
- 306 Switch Proxy (no longer used but previously indicated that the client needs to switch proxy servers)
- 307 Temporary Redirect (the resource is temporarily located at a different location)
- 308 Permanent Redirect (the resource has been moved and all future requests should be made to the new location)
How Google Manages 3xx
Googlebot will automatically follow 301 and most 302 redirects. They also pass PageRank and anchor text across redirects.
However, there are some cases where you might need to take action.
For example, if you see a 302 redirect for a page that doesn’t exist, this can be an indication of an error on your server.
You will need to fix the configuration so that it sends the correct status code.
Another example is when you see a 300 redirect for a page that doesn’t exist. This can happen when your server is misconfigured and is sending the wrong status code.
If you see this happening, you will need to fix the configuration of your server so that it sends the correct status code.
Another case is 303s. Googlebot used to automatically follow these redirects, but this is no longer the case.
If you want Googlebot to crawl and index the new location of the page, you will need to add a 301 redirect.
Regarding 307s, Googlebot will automatically follow these redirects but they are treated like 302s.
This means that the old location of the page is still indexed and can still show up in search results (to avoid this, you will need to add a 301 redirect).
Google officially reported that it follows up to 10 redirect hops. So, don’t worry, if you have less than that.
Client Error (400–499)
Client error class shows that there was an error on the part of the client.
For example, if you try to visit a page that doesn’t exist, you will see a 404 Not Found error.
Here are the ones that fall in this category:
- 400 Bad Request (the request could not be understood by the server)
- 401 Unauthorized (the client is not authorized to access the resource)
- 402 Payment Required (reserved for future use)
- 403 Forbidden (the server is refusing to fulfill the request)
- 404 Not Found (the resource could not be found)
- 405 Method Not Allowed (the request method is not allowed for this resource)
- 406 Not Acceptable (the server cannot generate a response acceptable to the client)
- 407 Proxy Authentication Required (the client needs to authenticate itself with a proxy)
- 408 Request Timeout (the server timed out waiting for the request)
- 409 Conflict (there was a conflict when trying to fulfill the request)
- 410 Gone (the resource is no longer available at this location)
- 411 Length Required (the server requires a Content-Length header in the request)
- 412 Precondition Failed (one or more preconditions in the request failed)
- 413 Payload Too Large (the payload of the request is too large for this server to process)
- 414 URI Too Long (the URI of the request is too long for this server to process)
- 415 Unsupported Media Type (the media type of the request is not supported by this server)
- 416 Range Not Satisfiable (the requested range cannot be fulfilled by this server)
- 417 Expectation Failed (one or more expectations in the request failed)
- 418 I’m a teapot (the server is a teapot and cannot brew coffee. Used as an April Fool’s joke in 1998 and 2014).
- 419 Page Expired (the page has expired and should be refreshed)
- 420 Method Failure (used by Spring Framework – indicates when a method failure has occurred)
- 421 Misdirected Request (the request was directed at a non-existent server)
- 422 Unprocessable Entity (there are semantic errors)
- 423 Locked (the resource being accessed is locked and cannot be modified)
- 424 Failed Dependency (the request failed due to a failure of a previous request)
- 426 Upgrade Required (the client needs to switch to a different protocol)
- 428 Precondition Required (the server requires a request header field, such as If-Match, to be present in the request)
- 429 Too Many Requests (the client has made too many requests and has been rate-limited by the server)
- 451 Unavailable For Legal Reasons (the resource is unavailable for legal reasons)
- 494 Request Header Too Large ( Nginx only)
- 495 Cert Error (Nginx only)
- 496 No Cert (Nginx only)
- 497 HTTP to HTTPS (Nginx only)
- 498 Token expired/invalid (Esri)
- 499 Client Closed Request (Nginx only)
How Google Manages 4xx
4xx status codes will cause pages to drop out of the search results.
If you don’t want this to happen, there are two options:
- Use a 410 status code (it tells Google that the page is gone for good, and it will be removed from the search results permanently).
- Use a 404 status code (this tells Google that the page is not available right now, but it may be available in the future. The page will be removed from the search results temporarily).
But let me tell you more.
In case you are wondering, here is the HTTP status codes distribution according to Ahrefs:
Server Errors (500–599)
5xx status code means there was a server error.
They are these ones:
- 500 Internal Server Error (an error has occurred on the server and the server cannot process the request)
- 501 Not Implemented (the server does not support the functionality required to process the request)
- 502 Bad Gateway (an invalid response was received from an upstream server)
- 503 Service Unavailable (the server is not available to process the request)
- 504 Gateway Timeout (the server did not receive a response from an upstream server promptly)
- 505 HTTP Version Not Supported (the HTTP version used in the request is not supported by this server)
- 506 Variant Also Negotiates (the variant also negotiates header field present in the request is not supported by this server)
- 507 Insufficient Storage (there is not enough space left on the server to process the request)
- 508 Loop Detected (the server detected an infinite loop while processing the request)
- 509 Bandwidth Limit Exceeded (Nginx only)
- 510 Not Extended (the server does not support the extension required to process the request)
- 511 Network Authentication Required (the client needs to authenticate itself to gain network access)
How Google Manages 5xx
Google will try to crawl a 500 page, but it may not succeed.
And if it does succeed, the page will be removed from the search results temporarily.
But wait, let me tell you something.
It’s important to note that not all server errors are caused by code problems.
Sometimes, it is because of things like traffic spikes or database issues.
If you see a lot of 500 status codes in your log files, it’s worth investigating further to see if there is a problem with your server.
The Most Important Status Codes for SEO
Here are the most important status codes for SEO are:
- 200 OK
- 301 Moved Permanently
- 302 Found
- 404 Not Found
- 410 Gone
- 499 Client Closed Request
- 500 Internal Server Error
Yes, you read that right: these status codes will affect your SEO in different ways.
200 OK
200 ok indicates a successful request. It should be the goal for most of your content.
If you have a lot of pages returning other status codes, it’s worth investigating why.
It could be an indication that there is a problem with your website.
301 Moved Permanently
301 Moved Permanently is used when a page has been permanently moved to a new URL.
If you need to change the URL of a page, this is the status code you should use.
It will tell search engines that the page has moved, and they should update their records accordingly.
Turns out that you should use a 301 redirect if you want to preserve your SEO rankings.
302 Found
302 Found is used when a page has been temporarily moved to a new URL.
Please note that this is not the same as a 301 redirect.
A 302 redirect will tell search engines that the page has been moved, but it doesn’t guarantee that they will update their records.
404 Not Found
404 Not Found is for pages that can’t be found. It’s one of the most common errors of people browsing the internet.
Therefore, it’s important to have a customized 404 page on your website (this helps to prevent them from getting frustrated and leaving your site).
Plus, if search engines can’t find a page, they will likely remove it from the search results.
410 Gone
410 Gone is used when a page has been permanently removed from a website.
Usually, if you need to erase a page from your site, this is the status code you should use.
It will tell search engines that the page is no longer available, and that they should remove it from the search results.
499 Client Closed Request
The HTTP 499 status code is a type of 502 Bad Gateway Error that occurs when the server is still processing the request, but the client has closed the connection.
This error falls under the category of client-based errors. It is also known as a “client closed request” code.
To fix it, you should check your server status and make sure that it is running correctly. Additionally, you should also look into the cause of the request being terminated prematurely by either the client or server.
500 Internal Server Error
This is the status code for pages that have a server error.
If a page returns this status code, it means there is a problem with the server.
If you have a website, it’s important to fix any pages that are returning this status code to ensure a good user experience.
If you don’t, search engines may remove the page from the search results.
Before You Go
HTTP status codes are an essential part of technical SEO.
But as you know, there’s much more to learn.
Like:
If you have any questions, feel free to leave a comment below.
Thanks for reading!
And don’t forget to share this guide, if you liked it!
Leave a Reply