A Complete Guide to HTTP Status Codes 

Status codes are an integral part of the World Wide Web. They are the way your browser communicates with the server the website you are trying to access is hosted on. 

There are five status code classes that account for every scenario that may result from this communication, from a successfully loaded page to a missing one and everything in between. 

Here is a list of all the HTTP status codes, what they mean, and why they matter for your website. 

What Are Status Codes?

An HTTP status code is a server’s response to a request made by a browser. When you want to access a website, your browser will send a request to its server. The server will then respond with a three-digit code. This is the HTTP status code. 

Understanding what each status code means can help you uncover an error on your website. You can also use them to help search engines understand your website better, and to ensure visitors have a good experience while browsing it. 

The 5 Status Code Classes Explained

While they sound like something out of Diablo, status code classes are nowhere near as menacing. 

There are five of them in total, and the first digit, 1 through 5, specifies which group a status code belongs to. You can often see these classes listed as 1xx through 5xx. 

That first number signals where the error (if any) was encountered, and the other two numbers tell you what the status actually is. 

These are the 5 status code classes:

  • 1xx – Informational responses: The server is thinking about a request. 
  • 2xx – Success: The request was successfully processed, and the server responded as the browser expected it to. 
  • 3xx – Redirects: The page has been redirected somewhere else. 
  • 4xx – Client errors: The page can’t be reached. 
  • 5xx – Server errors: The server has failed to comply with the browser’s request. 

Let’s take a look at them in more detail. 

1xx Informational Status Codes

A 1xx status code is temporary and is provided while the request is being processed. You are not likely to encounter them at all, and you don’t usually need to bother learning to understand them better. 

Here are all the 1xx status codes explained:

  • 100 Continue: This is an interim response code that indicates the browser should either continue the request, or ignore the response if it has already been finished. 
  • 101 Switching Protocols: Sent as a response when the browser has sent an Upgrade request header. It denotes the protocol the server is now switching to. 
  • 102 Processing: The server has received the request and has begun to process it, but a response is not yet available. 
  • 103 Early Hints: This response will be sent by a server while it is still preparing a response. It will give the browser hints about the resources it can start preloading before the final response is sent.

2xx Success Status Codes

A 2xx status code means that the request has been completed successfully and the browser has accessed the information it was looking for. This is the status code you want to see for most of your pages. 

Here are all the status codes in this group: 

  • 200 OK: The request was successful. What that means will depend on the HTTP method used:
    • GET: The resource has been fetched and transmitted in the body of the message.
    • HEAD: There is no message body, and the representation headers were sent in the response. 
    • PUT or POST: The description of the action’s result was transmitted in the body of the message. 
    • TRACE: The request messages will be included in the message body, as they have been received by the server. 
  • 201 Created: The request was successful, and a new resource has been created. This is usually the response after a POST request. 
  • 202 Accepted: The request has been received, but no action has been taken yet. The request may or may not be completed when it comes time to process it. 
  • 203 Non-Authoritative Information: The request was successful, but the meta data returned is not the same as on the origin server. Instead, it was collected from a local or third-party copy.
  • 204 No Content: There is no content to send, but the headers can be useful. 
  • 205 Reset Content: Tells the browser to reset the document that has sent the request.
  • 206 Partial Content: This is a response to a Range header sent by the browser, which only requests part of the resource. 
  • 207 Multi-Status: Multiple status codes may be appropriate, so information is sent about multiple resources. 
  • 208 Already Reported: Used to avoid repeatedly enumerating the internal members of multiple bindings in the same collection. 
  • 226 IM Used: The server has fulfilled a GET request, and the response is a representation of the result of one or more instance-manipulations applied to the current instance. 

3xx Redirect Status Codes

3xx status codes mean that a page has been redirected. The request will be completed and will ultimately end with a 200 HTTP status code, but the destination page will be different from the requested one. 

Redirects are not bad for SEO and having them is no cause for alarm. Ideally, you want to have created all of them yourself (more on that a little bit later), as a way to direct traffic and point visitors and search engines in the right direction. 

Here are all the 3xx redirect status codes:

  • 300 Multiple Choices: There is more than one possible response to the request. The browser or the user should choose one of them. 
  • 301 Moved Permanently: The requested resource has permanently been moved to a new address. The new URL will be provided as a response. 
  • 302 Found: The resource has temporarily been moved to a different address. There may be other changes coming in the future. For now, the new URL will be provided as a response.
  • 303 See Other: The server is telling the browser to get the resource at another URL using a GET response. 
  • 304 Not Modified: This status code is used for caching purposes. It will tell the browser that the response has not been modified, so it can continue to use the cached version it already has. 
  • 305 Use Proxy: Tells the browser that it should connect to a proxy before repeating the original request. A lot of browsers will not obey this status code for security reasons. 
  • 306 Switch Proxy: This response will be given by a server when the resource can only be accessed via proxy, but the location of the proxy has changed. 
  • 307 Temporary Redirect: Similar to the 302, this response code tells the browser that the requested resource has temporarily been redirected to a new URL. It also specifies that the browser must not change the HTTP method used for the request. For example, an original POST request must be used for the second request too. 
  • 308 Permanent Redirect: Similar to the 301, this status code indicates that the requested resource has permanently been moved to another URL. Much like the 307, it also specifies that the same HTTP request method must be used to make the second request as the one used for the original request. 

4xx Client Error Status Codes

4xx status codes signal that the requested page could not be reached. It is either unavailable, or there could be something wrong with the request itself. 

You want to make sure there are as few 4xx pages on your website as possible. They will prevent visitors from finding what they are looking for and are bad for user experience. 

Here are the 4xx status codes: 

  • 400 Bad Request: The server can’t or won’t process the request because it thinks there is a client error. The browser may be using the wrong syntax, or the request message may be framed incorrectly, for example.
  • 401 Unauthorized: The browser must authenticate itself before getting a response. 
  • 402 Payment Required: This response code is not in use yet. It was created for digital payment systems, but there is no standard convention for it yet.
  • 403 Forbidden: The browser does not have access rights to the requested content, so the server is refusing to provide it. It is similar to the 401, however in this case the identity of the client is known to the server. 
  • 404 Not Found: The server can’t find the requested resource. It might mean the wrong URL has been requested, or the page may have been moved or removed and not redirected correctly. 
  • 405 Method Not Allowed: The request method is known by the server, but the target resource does not support it.
  • 406 Not Acceptable: The server has performed server-driven content negotiation, but has not found any content that will match the criteria provided by the browser.
  • 407 Proxy Authentication Required: Similar to the 401, except the authentication needs to be done by a proxy.
  • 408 Request Timeout: Often a response when there’s an idle connection, even when the browser has not made any request. The server would like to shut down the unused connection. 
  • 409 Conflict: The request is in conflict with the server’s current state. 
  • 410 Gone: The requested content has been permanently deleted from the server and it has not been redirected. 
  • 411 Length Required: The server has rejected the request because the Content-Length hasn’t been defined. 
  • 412 Precondition Failed: The browser has listed preconditions in its header that can’t be met by the server.
  • 413 Payload Too Large: The requested resource is larger than the server’s limits allow. 
  • 414 URI Too Long: The requested URI is longer than the server can interpret.
  • 415 Unsupported Media Type: The media format of some of the data is not supported by the server.
  • 416 Range Not Satisfiable: The Range header has specified a range that can’t be fulfilled by the server.
  • 417 Expectation Failed: The server can’t comply with the expectation from the Expectation request header.
  • 418 I’m a teapot: The server is refusing to brew coffee with a teapot. This status code is a reference to an April Fool’s joke from 1998. It’s not a real response, but you can use it for requests you don’t want to handle, although it is not encouraged. 
  • 419 Misdirected Request: The request is directed at a server which is not able to process it. 
  • 422 Unprocessable Content: The request was formed well, but the server is not able to comply with it due to a semantic error. 
  • 423 Locked: The requested resource is locked.
  • 424 Failed Dependency: The request has failed due to the failure of a previous request.
  • 425 Too Early:  The server does not want to process the request because there is a risk it might be replayed. 
  • 426 Upgrade Required: The server does not want to perform the request using the current protocol. It might be willing to do it after the browser upgrades to a different one.
  • 428 Precondition Required: The server requires the request to be conditional. 
  • 429 Too Many Requests: The browser has sent too many requests in a certain amount of time. 
  • 432 Request Header Fields Too Large: The server does not want to process the request because the header field is too large. 
  • 451 Unavailable For Legal Reasons: The browser has requested a resource that can’t be provided due to legal conditions. The resource may be censored by the government, for example. 

5xx Server Error Status Codes

5xx status codes signal that the server was not able to comply with the browser’s request. 

If you start seeing them on your website, check your server and see where the issue is. It may just be experiencing regular downtime, or there may be something else afoot. 

Here are all the 5xx status codes: 

  • 500 Internal Server Error: The server is faced with a situation it does not know how to deal with. 
  • 501 Not Implemented: The request method can’t be handled, as it’s not supported by the server. The two methods that servers are required to support are GET and HEAD. 
  • 502 Bad Gateway: The server got an invalid response while working as a gateway to get the response necessary to handle the request. 
  • 503 Service Unavailable: The server can’t handle the request. This often means the server is either down or is experiencing too much traffic. 
  • 504 Gateway Timeout: The server is acting as a gateway and isn’t able to get a response in time. 
  • 505 HTTP Version Not Supported: The HTTP version of the request is not supported by the server. 
  • 506 Variant Also Negotiates: There is an internal configuration error with the server. 
  • 507 Insufficient Storage: The request method can’t be performed because the server can’t store the representation needed to complete the request. 
  • 508 Loop Detected: An infinite loop has been detected by the server while processing the request. 
  • 510 Not Extended: In order for the server to fulfill the request, further extensions are needed. 
  • 511 Network Authentication Required: The browser needs to be authenticated in order to gain network access. 

Status Codes That Matter Most For SEO

While we have just listed 63 HTTP status codes and what they do, you are not likely to ever see most of them. There are a handful though that you should learn more about, so you can better manage the SEO of your website. Here they are:

200 Status Code 

The status code you want to see is the 200 OK. This means your pages are working as they should, visitors and search engines can access them easily, and all that link juice can be passed around among them. 

When a page returns a 200 status code, you don’t need to do anything about it, just enjoy your well-optimized website.

301 Permanent Redirect and 308 Permanent Redirect 

When you want to permanently redirect a page from one URL to another, you should use the 301 redirect. You can also use the 308 redirect, which differs from the 301 only in the way the request method is handled. 

These two status codes will tell search engines that a page has been moved to a new home. They will pass all link equity from the old page to the new one, and crawlers will appreciate you showing them the right way. 

302 Temporary Redirect and 307 Temporary Redirect 

If you need to temporarily redirect a page, you can do so by using either the 302 redirect or the 307 redirect. They are a good choice if you need time to work on a page or while you are creating a new one.

They should however not be used for a long period of time, as they don’t pass on link equity, so you will lose the value of all the backlinks pointing to your old page if you keep the redirect a 302 or a 307. 

403 Forbidden

If you are using a third-party tool to scan your website, like Ahrefs or Screaming Frog, some of your pages might show up as 403s. This is no immediate cause for alarm, as it may just mean the crawler was not able to access them. 

Check your pages manually. If they are working as intended, you have nothing to worry about. If a page still comes up as a 403, investigate further. 

404 Page Not Found 

404 pages are essentially a dead end. The human or crawler that lands on them can’t find what they are looking for. Ideally, you want to have as few 404 pages as possible, and redirect any old resources you want to get rid of to new homes. 

There are situations when a 404 is acceptable though. For example, if you can’t find a good new home for a page you want to delete, you can keep the 404 status code. Don’t blindly redirect all missing pages to your homepage, as you will be creating a soft 404 which Google is not a fan of. 

To improve user experience, make sure to also employ 404 page best practices and help your visitors find something else they will be interested in. 

410 Gone 

If you want to delete a page permanently and let search engines know you have done so, use the 410 status code. It will be removed from the index faster than a 404. Also make sure to remove all internal links pointing to this page, to ensure visitors don’t hit a dead end. 

500 Internal Server Error 

If one of your pages turns up a 500 status code, you will want to see what’s going on with your server. It may be something you can fix yourself if you know your way around server configuration, but it may also mean you need to contact your hosting company’s customer service department and have them investigate.

503 Service Unavailable 

The 503 status code means the server is currently unavailable. It could indicate your server is undergoing maintenance or is temporarily down, but it could also mean it’s seeing too much traffic that it can’t accommodate. 

If you often see 503s, you should consider moving your website to a better server, especially if you are seeing high volumes of traffic. You don’t want to keep hemorrhaging visitors because of an overloaded server. 

How To Monitor Your Website’s Status Codes

If you want to check the status code of a page in Chrome, do the following:

  1. Open the page whose status code you are checking
  2. Press F12 and go to the “Network” tab
  3. Refresh the page 
  4. Scroll to the top of the request list and find the first document. Its status is the response code you are looking for. 
status code screen shot

You can also use HTTP Status , which is reliable 99% of the time, and is especially useful if you want to check the status code of multiple pages. 

In order to stay on top of your own pages, make sure to use Link Whisper. It will alert you when one of your pages goes missing or when there are broken internal links on your website, so you can quickly investigate and uncover the problem. 

Status Codes: Key Takeaways 

While it’s important to know what certain HTTP status codes mean, you definitely don’t need to memorize all of them. You are probably never going to see most of them. Get to know the dozen most important ones and keep your website in peak condition.

Build A Powerful Internal Link Strategy Today

Enter your email & we'll send you 8 tips to build an internal link strategy.

And 3 things you should avoid doing with internal links.

    We won't send you spam. Unsubscribe at any time.

    What is Orphaned Content? How to Identify It

    Contents1 What is Orphaned Content in WordPress?2 How Does Orphaned Content Impact SEO?3 How Does Orphaned Content Happen?4 How to Find Orphaned Content?5 When Should You Allow Orphaned Content?5.1 Archived Content5.2 Landing Pages5.3 Non-Evergreen Content6 Final Thoughts Creating content is…

    Read More

    How to Conduct a Google Search Console Audit

    Contents1 Getting Started1.1 1. Familiarize Yourself With The Dashboard1.2 2. Check Traffic to Identify Recent Changes1.3 3. Look for Security Issues2 Sitemaps and Crawling2.1 1. Make Sure Google is Crawling All Pages2.2 2. Check robots.txt2.3 3. See if Sitemaps Have…

    Read More

    Get Started with LinkWhisper

    Speed Up the Process of Internal Linking and Help You Rank Better in Google

    Get LinkWhisper Now