HTTP Status Codes / Defining HTTP Status Codes

01Defining HTTP Status Codes

Last updated: 11.3.20

We’ve discussed HTTP Status Codes and what they mean here, but we haven’t actually gotten into the more technical aspect of those codes. To be honest, it’s because you’re more likely to see a unicorn than you are to ever run across some of these codes, and many of them are irrelevant to SEO, but information is power, and who knows what kind of rabbit your Search Engine of choice is going to pull out of the hat next. Plus, understanding some of them can be an important step towards improving the user experience – especially for more complex sites. Besides, you might see some yourself, and with this handy reference, you’ll know right away what you’re dealing with.

Sadly, these codes make for extremely dry reading. We believe that part of fostering responsible SEO involves taking the dull and uninteresting and turning it into something exciting. Unfortunately, HTTP Status Codes are quite a bit more lifeless than they are dull and uninteresting.

To start with, there are a total of five HTTP Status Code categories, each of which is designated in increments of 100. Some of these are VERY important for SEO, especially when it comes to keeping PageRank or link juice flowing. Within each of these categories there are 100 possible values (I know, who would have guessed that, right?). What we’ve done below is ordered our version of these codes into something slightly more readable than the original, and hopefully more entertaining. Without further ado, here are our versions of the definitions:

Information (100 – 199)

The codes in this range are quite literally the ‘what next’ phase. As far as your client’s browser is concerned, it’s on a first date with your website, even if they’re married. In fact, much like a marriage, the client expects information, or you’re not going to get anywhere. These are the HTTP Status Codes for the Informational range:

100 Continue: This tells the client that you’re awake, and it’s ok to keep talking. As anyone in a relationship can tell you, this is a good start, and what is normally expected.


101 Switching Protocols: This is just a request to change the protocol from one to another, such as switching to a newer version of HTTP. It’s not unlike being asked by your significant other to change into something less comfortable and more stuffy for dinner or clubbing.


102 Processing: This tells the client that the server has received the client’s request and is processing it. Just imagine being on a date with your significant other. You have just asked them something personal and are now eagerly waiting for their answer.

103 Early Hints: This is used to return the response headers as early as possible in the process. Just like being on a date and you’re dropping hints like mad to show the other person you’re interested in them and want to move things along fast.

Success (200 – 299)

Back to the marriage metaphor, as anyone married or in a long term relationship can tell you, it’s absolutely not a recipe for success. However, if you’ve properly sorted your information from the previous section, you’ll be expecting one of the following HTTP Status Codes that indicates one form or another of success. In other words, the client’s request was received, understood, and accepted. The HTTP Status Codes for the Success range are:

200 OK: Yes, there really is a code for OK. As you may have guessed, it means that the request succeeded, and that everything is OK.


201 Created: Whether it’s a dinner or a diamond ring being discussed, the resource is being created. Pretty straightforward, and generally what we’d call a good day.


202 Accepted: This one just sounds good. Despite the success of your actual request, and the fact that you did receive an answer, it doesn’t really mean success. It’s more of a robot voiced, “Your proposal has been accepted.” It might or might not be processed. Those of you with children will be quite familiar with this, as it’s the standard parental response for almost anything a child asks.


203 Non-Authoritative Information: Congratulations, you found one of the unicorns! You’re not likely to ever see this, or most of the other 200 Accepted range HTTP Status Codes listed here, but we don’t want to leave anything out. This means that the information may or may not be up to date, with the origin server defined as the authority. Local copies of information or non-authority responses are usually the cause of this.


204 No Content: The server has done what was asked, but doesn’t need to respond. A bit like paying the bills, in which case the lights stay on, so no need to announce that you paid the bills. It was expected.


205 Reset Content: When you submit a form, this happens, and the form data is then reset to a default state. As a child, it’s also what happens every morning, when your mum manages to find the same porridge she’s been siphoning off Cthulhu to feed you for the last fifteen years. Lucky you.


206 Partial Content: Designed to confuse those of us who aren’t programmers (and thank you, job well done chap), this means that the server has done part of what it was asked to do by the client. Could end well, as in you’re still shopping and just haven’t remembered that the whole reason you’re in the market is to get sugar. It could also end badly, as in you’ve just got home without the sugar, and are having the shopping list waved at you by an angry spouse.


207 Multi-Status: This is a situation where the server is confused and needs to consult with the client to get more information about what to process. The end result of this could be a success, failure or even a partial success. Just like when you give your spouse a long list of chores to do and they don’t even know where (or even how) to start.

208 Already Reported: You heard it once, you heard it twice and you don’t want to hear it again.

226 IM Used: Around 20 numbers later you end up with the 226 status code. You have finally done what you were asked, but depending on how you got here the result may differ.

Redirect (300 – 399)

These are all redirect codes. Generally, they mean that what was supposed to be there wasn’t, and so you’re being sent elsewhere to find it. It’s a bit like trying to buy something specific right before a holiday or asking for a steak in McDonalds. You’re likely to be redirected, and the destination of that redirection is what the SEO will want to be concerned with – specifically 301 and 302. All HTTP Status Codes in the Redirect range follow:

300 Multiple Choices: Because everyone loves not being told what to do, this option gives the agent or user one or more choices, depending on how its negotiated. A bit like life, though not as direct as some of the other options in this range of HTTP Status Codes.


301 Moved Permanently: This is the bread and butter of SEO redirects. In simple terms, it’s like a mail forward. Everything that was coming to your old address is now sent to your new address. The best part of this one is that it lets you keep the link juice.


302 Found: For SEO purposes, this is not something you usually want to use unless it’s a temporary thing (like updating a resource, page, or link). Children are the best example of a 302 Redirect because when you ask them why their room is such a mess, they usually point out that they are using everything they’ve ever owned, and it’s only temporary.


303 See Other: If you call to order a pizza, and after giving them your address, are transferred to the pizza place closer to your house, this has happened. It’s basically the same thing on the web, where submitting information gets you sent somewhere other than where you were headed.


304 Not Modified: We’ll let you know if the situation changes. So will the website, in this case. In other words, nothing’s changed here.


305 Use Proxy: This simply lets the requestor know that they need to use the proxy specified by the origin server. If that sounds confusing, think of it like opening a Flash website from your Android phone because it won’t open on an iPhone. You’ve just more or less used a proxy.


306 (Unused): This one is no longer used, but it is reserved for the day that… ah, I can’t tell you. You’ll just have to wait like the rest of us and see what lovely use this space gets put to in the future. Maybe it will start displaying Google AdSense or something equally exciting.


307 Temporary Redirect: This one simply means that you should repeat the same request with another URL. But in the future, this URL could still be used. It’s like temporarily closing your shop down for maintenance and telling your customers to go elsewhere for a short while until your shop is fixed.

308 Permanent Redirect: Similar to the above, but this time you’re closing your shop down for good.

Client Error (400 – 499)

The 400 series of error codes are very straightforward, but there are a lot of them. They basically mean that there was a mistake from the client (the person or robot browsing your site). For a nice mental image, think of it like that fellow you saw repeatedly pushing the door clearly labeled ‘pull’. Yeah. The range of Client Error HTTP Status Codes follows:

400 Bad Request: No speak-a-English? The server did not understand what was being asked. A no brainer, but asking the same way will return the same confused and blank stare from the server.


401 Unauthorized: This happens when you don’t know the magic word. In most cases, it’s not please.


402 Payment Required: This code is not commonly used. But it’s pretty obvious that it’s used for payment gateways.


403 Forbidden: You are not allowed in, even if you know the password or have the keys to the castle. Ouch. Consider it an online face check. If you see this, you failed.


404 Not Found: Something a good SEO will pay attention to – because it might instead need to be a 301, or even a 410. Either way, there should always be something on a 404 page that lets the user head elsewhere on your site (to the home page, to another section – anywhere but another website, or you failed to convert that visitor). It’s also a bit like your significant other ‘not being in the mood’ – and can happen for server side reasons as well. Generally speaking, if you know that something isn’t there, 410 is the way to go.


405 Method Not Allowed: You didn’t cut in front of everyone else, did you? Not allowed – back to the end of the queue buddy! Whatever you’re trying to do, it’s not allowed.


406 Not Acceptable: This one means that what you asked for can’t be provided according to the terms of your request. For example, you asked for water, either sparkling or flavored, but the waiter only has plain water. Not acceptable!


407 Proxy Authentication Required: In a word, you need to be authorized through the proxy in order to get in. A bit like standing in line outside of a club, only to find out that your name isn’t on the list. Better call your friend inside, or you aren’t getting in.


408 Request Time Out: You took longer than the server was willing to wait. You can bugger off now.


409 Conflict: Your wife found out about your fascination with Beyoncé. Fortunately for you, this code is only allowed when there is something the user can do to remedy the situation (now we’re back to putting a ring on it).


410 Gone: My favorite, as it neatly summarizes the entire Zen of SEO Redirects in one word. Gone. It means that whatever you were looking for is permanently gone. This is a bread and butter HTTP Status Code for the aspiring SEO. It’s especially effective at letting people know they should stop linking to limited time things, like promotions, or contests, as an example. You should also note that the same thing happens to your money when you visit a casino.


411 Length Required: This means that the client request needs to meet the required length. It is also a problem suffered by men all over the world.


412 Precondition Failed: This happens when you failed to meet the requirements set on the server to access a particular resource. It also happens when asking a member of the opposite sex out on a date if you aren’t good looking enough, or not willing to spend enough money.


413 Request Entity Too Large: This happens when there is just too much for the server to handle. However, according to online research, this is something most of the world doesn’t consider to be a problem.


414 Request URI Too Long: Like the HTTP Status Code 413 above, much of the world does not actually consider it to be a problem. However, the W3C does acknowledge that this is a rare condition. Direct from the pages of the W3C, “This rare condition is only likely to occur when a client has improperly…” I swear I’m not making that up.


415 Unsupported Media Type: This happens when you try to put a cassette tape into a CD player.


416 Requested Range Not Satisfiable: This is what you say when you can’t do what’s being asked for the amount the person asking is willing to pay. It’s pretty much the same response the server gives.


417 Expectation Failed: Marriage counselors hear this a lot, although, it’s even more commonly heard in divorce court. If the server tells you this, sorry man, but it’s over.


Server Error (500 – 599)

This is what happens when the server has an error. In some cases, it can be because the server is offline, but there are other causes, such as a SQL cluster failing, or particular resources not being accessible. In any case, HTTP Status Codes that are in the Server Error range include:

500 Internal Server Error: This is what happens when the server has a problem, but isn’t being more specific about it. It also happens when a man is lost, but refuses to admit it or ask for directions.


501 Not Implemented: Whatever you’re asking the server to do, it can’t. Put another way, round pegs don’t go in square holes.


502 Bad Gateway: You asked the server to do something that required asking other servers to assist. Somewhere along the way, it didn’t get help, and the request failed. A lot like that friend you have, who has a friend with a truck, and will totally help you move, except, no one ever shows up.


503 Service Unavailable: This one isn’t used that often, but it means the server is unable to do what you’ve asked – usually because it’s overloaded. If shared hosts, like Bluehost, were honest, you’d probably see a lot more of this.


504 Gateway Timeout: Similar to 502, but in this case the upstream server took too long to answer. Ironically, this is the same excuse your friend with the friend with the truck will use when explaining why he disappeared on moving day, but managed to come to your housewarming party for free drinks. Funny how that works.


505 HTTP Version Not Supported: This happens when, for whatever reason, your server won’t support the HTTP version that was used by the client when making their request. It’s a bit like trying to go back to being ‘boyfriend girlfriend’ when you’re married. It just doesn’t work. Servers have an HTTP requirement, and marriages have a back or foot rub requirement.



So, there you have the list of HTTP Status Codes, and more or less what they mean. If you’d like to see all of the other codes that are out there, Wikipedia has a great page for that, which lists a whole host of other codes that aren’t really mainstream. Most notable are those defined by the HTCPCP Standards ( which famously listed the Error Code 418 I’m A Teapot, but there are others. It’s particularly funny because everyone knows we drink coffee, and of course a teapot would… uh… Right? Hello?


(p.s all Cat pictures used under Creatives common license and with thanks to Girlie Mac)