What's in this blog
Pinterest
Twitter
Reddit
LinkedIn

Since the dawn of the internet, HTTP status codes have been around to confuse and annoy people, making them wonder what the fuck is happening between their devices and a website.

But there’s more to it than the well-known (and incredibly annoying) 404.

According to my research and calculations, there are around 104 HTTP status codes. These include official and unofficial codes.

Some of these you’ll know.

Some you won’t.

Some don’t matter.

Some do.

Without further ado, let’s dive into this complete list of HTTP status codes.

A Complete List Of HTTP Status Codes (+ analogies)

So, before we get into the actual list, it’s important to first understand what an HTTP status code is.

From there, we can dive into the actual list.

HTTP status codes are three-digit numbers that a website or server sends to your device after you send a request through.

Think of it as a response to a conversation between your device’s browser and the website or online resource you’re trying to access.

Official HTTP status codes can be broken up into five classes:

• 1xx codes

• 2xx codes

• 3xx codes

• 4xx codes

• 5xx codes

We’ll start with these before diving into the rest.

1xx HTTP status codes are used to define an informational action.

They indicate that there’s a response to the initial request from your browser.

Let’s take a look at the 1xx HTTP status codes.

ginger kitten on red pillow with http status code 100 continue below it

The 100 status code is used to indicate to your browser that the first part of your request was received, and that it can continue with the rest.

You could think of somebody stacking boxes.

Once he’s stacked all of the boxes, he can say, “Okay, give me more boxes.”

ginger cat wearing ushanka hat with http status code 101 switching protocols below it

The 101 code is how the server indicates to your browser that the protocol is changing.

Basically, a protocol specifies how your browser and the server communicate.

So, this status code tells your browser that the way it talks to the server is changing.

You can think of it like having a conversation with somebody in English, when they say, “Fuck, we’re being monitored. Let’s speak in Russian.”

And then you continue the conversation in Russian.

grumpy cat frowning with http status code 102 processing below it

The 102 status code is used when the server lets your browser know that it’s busy dealing with your request.

Imagine the server being a grumpy man saying, “I hear you, I hear you. I’m working on it.”

That’s a 102 HTTP status code.

white and grey cat on green pillow with http status code 103 early hints below i

103 codes are used when the server sends a bit of preliminary information to your browser.

It helps your browser prepare for the rest of the information.

2xx HTTP status codes are used when the server tells your browser that your request was received, understood, and processed.

A cat smirking with http status code 200 ok below it.

The most common HTTP code is the 200 code.

It’s used to signal that a request was processed and that the requested information was returned.

Close up of a ginger cat with http status code 201 created below it

The 201 code lets the browser know that the request was processed, and that it resulted in the creation of a new resource.

Imagine you go to a coffee shop and ask for a cappuccino.

Once the barista makes your cappuccino, they let you know, it’s done

That’s a 201 HTTP status code.

A white cat sitting at a table with http status code 202 accepted below it

202 codes indicate that the request was successful, but that it hasn’t started processing yet.

It’s like placing an order at a restaurant.

a black cat with http status code 203 non authoritative information below it

A 203 is like a 200, but with extra stuff.

It indicates that the information was requested and returned, but adds a little something extra.

Like ordering a pizza, and when the waiter brings it over, they add some extra spice to it.

A tabby cat with http status code 204 no content below it

The 204 is the opposite of the 203 code.

It indicates that the request was processed and returned, but there’s no extra information.

A cat reading with http status code 205 reset content below it

205s are used when the server wants to tell the browser that the request was successful, and now’s the time to clear any content it’s been displaying.

You can think of a 205 as the digital equivalent of a teacher wiping a whiteboard clean after a class.

A cat on a bookshelf with http status code 206 partial content below

A 206 status code is used when the server tells the browser that part of the information was returned, but that it might need extra requests to deliver all of the info.

It’s like buying a series of books to get a complete storyline.

Three cats sitting on a table with http status code 207 multi-status below them

A 207 code is given to your browser when the server has a response that contains a bunch of different information based on your requests.

You could think of it like getting a report card, with different marks or scores for each subject.

A cat staring at a computer screen with http status code 208 already reported below it

208s are pretty simple. If you’ve requested a bunch of stuff, but some of it’s already been returned, the server won’t show it again.

For example, if you use self-checkout at a store and scan an item.

Once it’s scanned, the system won’t need you to scan it again, because the info’s already there.

A cat dressed as batman wearing sunglasses with http status code 226 I M used below it

226 codes are used when the server wants to let your browser know that your request was returned with customisations, based on the server and how it handles info.

It’s like ordering a sandwich and the restaurant tells you they use a secret sauce to make their sandwiches better.

3xx Codes

3xx codes are all known as redirect codes.

They pop up when the information that you request has been moved somewhere else.

Multiple kittens sitting on a table with http status code 300 multiple choice below them

A 300 comes into play when the server finds a bunch of different options for the request, so it gives the browser those options.

Like standing at a crossroads, and deciding if you’re gonna pull a Robert Frost or Robert Johnson.

A cat's nose popping out of a box with http status code 301 moved permanently below it

Pretty self-explanatory, this one.

The 301 is used when the server wants to tell you that the thing you’ve requested has permanently moved.

Like going to your favourite restaurant only to find that it’s relocated because the location was too expensive.

A kitten in a mailbox with http status code 302 found below it

Previously known as “Moved Temporarily”, the 302 code is used when the server tells the browser that that thing it’s looking for is in a different URL.

You could think of it as seeing a post on Instagram about a pop-up shop that’s moving to a new location next week.

A cat with a question mark above its head with http status code 303 see other below it

The 303 HTTP status code is used to tell your browser that the thing it wants is somewhere else, and that it needs to perform a new request to get it.

It’s like going to a library and having a librarian tell you that the book you want is in a different section.

A cat sitting in the rain with http status code 304 not modified below it

304 codes are resource-savers.

What 304s do is point out, “This thing you want hasn’t been changed since you looked at it last time. So you can use it again.”

A ginger cat on a bicycle with http status code 305 use proxy below it

305 codes aren’t really used anymore since they’re not considered secure.
So, most HTTP clients (Firefox, Chrome, Safari, etc.) don’t accept these codes.

But for the sake of having a complete list, we’ll look at the 305 too.

So, a 305 code was used to tell your browser that it has to go through an external channel to get the information it wants.

It’s like having to use a shady side entrance to get to your favourite restaurant.

Not the end of the world.

But not ideal.

A tuxedo cat staring back with http status code 306 switch proxy below it

The 306 code isn’t used anymore. But when it was, it was used to tell browsers that any follow-up requests (after the one that prompted the 305) had to go through a proxy.

Like having to use the shady side entrance to not only enter your favourite restaurant, but also to use that shady side entrance to order food or use the bathroom, too. 

Or to use the bathroom.

A kitten on a laptop with http status code 307 temporary redirect below it

The 307 code comes in when the resource you’re looking for is temporarily in another location.

Kinda like being told that your favourite bookshop is temporarily closed, so you have to go to another branch.

A white kitten on a laptop with with http status code 308 permanent redirect below it

308s are like 307s, but permanent.

Literally.

That’s it.

4xx Codes

4xx HTTP status codes come in when there’s an error with the client’s request.

And it’s used to let you know that there’s an error with your request.

Basically, the server goes, “Pfft. Not my fault.”

It also throws up those errors so that you can see them.

(Hence the infamous 404).

A tuxedo cat in a jar of pretzels with http status code 400 bad request below it

If you see a 400 status code, it means the server couldn’t understand your browser’s request.

It’s like talking to somebody in a language they don’t understand or trying to make a purchase with a card that’s expired.

A cat leaning out of a doorway with http status code 401 unauthorised below it

The 401’s pretty simple.

It means the server wants some sort of credentials (like a username or password) before it’ll let you through.

Like trying to enter a secret club without knowing the passcode.

A cat using an ATM with http status code 402 payment required below it

The 402 HTTP status code doesn’t have a standardised purpose yet.

It’s supposed to be like a 401, but the specific requirement to pass is some sort of payment.

Building on the analogy of the 401, it’s like needing to bribe the guard to enter the secret club.

A cat looking through blinds at a dog with http status code 403 forbidden below it

403 codes indicate your browser tried, but it doesn’t have the credentials required to go through.

Imagine seeing an “Employees only” sign on a door.

But you’re not an employee.

So you can’t enter.

A black cat on a couch looking confused with http status code 404 not found below it

Are there are any other HTTP status codes as well known as the 404?

We all know it.

And we all hate it.

The 404’s job is to tell you that the thing you’re looking for couldn’t be found.

I don’t think we need an analogy for this one, do we?

A black cat standing on its back legs with http status code 405 method not allowed below it

If you see a 405, it means that your browser is trying to use an HTTP method that’s not allowed to request that source.

Like trying to order food at a drive-thru by dancing instead of talking into the speaker.

An angry white cat with http status code 406 not acceptable below it

On the other end of the 405 is the 406.

This code tells the browser that the format of the resource it’s looking for isn’t supported, so it can’t be provided.

It’s like saying you want ham on your pizza, but the pizza place only makes vegan food.

A tabby cat in a basket with http status code 407 proxy authentication required below it

The 407 code says you have to provide credentials to a proxy before you’ll be allowed through.

Like having to go to a receptionist before you can go into a hotel lobby.

A black cat sleeping with its fangs out with http status code 408 request timeout below it

Timing is everything in the world of status codes, and the 408 is a prime example of it.

In summary, a 408 code pops up when the time that the server gets tired of waiting for the browser’s request.

So, when the browser finally does come through, it shrugs and says, “Try again.”

A cat lying on top of a startled cat with http status code 409 conflict below it

A “Conflict” code comes in when the browser’s request for a resource doesn’t match the actual state of the resource.

It’s like trying to save changes on a document while somebody else is trying to save different changes on the same document.

So you end up with a 409.

A sad ginger cat with http status code 410 gone below it

The 410 code signifies that the resource used to be available.

But it’s not anymore.

And it won’t be back.

When a 410 is given to the browser, it also tells the browser that it needs to remove any history of it from its index.

It’s normally used when the thing that was removed was intentionally removed.

It’s like going to your favourite restaurant and seeing that it’s closed down for good.

A cat standing in a basin looking at itself in a mirror with http status code 411 length required below it

Here’s the 411 on the 411.

So, a 411 status code indicates that your browser needs to specify the length or size of the request.

If that doesn’t happen, the server can’t process the request properly.

It’s like ordering a milkshake, and when they ask what size you want, you just say, “Yes.”

A tabby cat stuck in blinds with http status code 412 precondition failed below it

Every request comes with a set of parameters, like size and format.

If those parameters can’t be met, you’ll get a 412.

Like ordering a burger with extra chillies, and not getting the burger because they didn’t have chillies.

A white cat lying underneath bank notes with http status code 413 payload too large below it

413s are used when the request or information being sent from the browser is too much for the server to handle.

Ever sent a message or email with an attachment that’s too big?

That’s what a 413 is.

A very long white cat with http status code 414 U R I too long below it

URIs are also known as “Uniform Resource Identifiers”.

The term can be used to refer to anything that helps your browser find resources on the internet.

For example, a URL is a type of URI.

Anyways, a 414 comes in when the URI (like your URL) is longer than what the server can handle.

Imagine asking somebody for directions, and they start telling you the directions without giving you a chance to write them down.

That’s a 414.

A confused white cat with http status code 415 unsupported media type below it

415 codes get thrown up when your browser sends requests to the server in a format it doesn’t understand or can’t accept.

It’s like talking to somebody in a language they don’t understand.

Two cats at a table looking at food with http status code 416 range not satisfiable below it

416 codes are used when the browser requests a specific amount or range of a resource that the server doesn’t have.

It’s like asking for 3 slices of cake when there are only 2 slices left.

A grumpy Scottish fold cat with http status code 417 expectation failed below it

So, when you send a request, your browser also attaches an “Expect” header.

And when that expectation isn’t met, then a 417 code is used.

For example, if you click on a “contact us” button, you expect to be redirected to some sort of contact page.

When you click on a “contact us” button, and the website crashes, then you’ll be given a 417.

A kitten in a teapot with http status code 418 I'm a teapot below it

The 418 status code is a joke code.

It doesn’t have a serious use or dedicated function.

Instead, it was used as a way to highlight absurdity in code errors.

The only example is the following.

It’s like asking a teapot to make coffee.

And it tells you “I can’t brew coffee; I’m a teapot!”

A cat lying on top of eggs with http status code 421 misdirected request below it

421 codes indicate that a request was given to the wrong server.

It’s just like sending a message to the wrong person.

A sphynx cat in an orange and red sock with http status code 422 unprocessable entity below it

A 422 code indicates that it understands the request from your browser, but that it can’t process the data because there’s an issue with the content.

If you’ve ever tried to submit a form online without filling in the required forms, then you’ll know what a 422 is.

423 – Locked

A ginger cat sitting face-first against a shoebox with http status code 423 locked below it

A “Locked” code indicates that the thing you’re trying to access is currently locked for maintenance.

Like trying to enter a room that has a locked door because it’s being renovated.

A cat leaning out from behind a computer screen with http status code 424 failed dependency below it

The 424 is used when your browser’s trying to get somewhere, but there was an error in one of the necessary steps in the process.

It’d be like trying to make a pizza but you didn’t use a pizza base.

A sleeping ginger cat with http status code 425 too early below it

425 codes signal that the thing your browser’s trying to access isn’t available yet.

Like trying to get into a coffee shop before it opens.

A cat being pulled out of a carry cage with http status code 426 upgrade required below it

A 426 code indicates that the way you’re requesting the information isn’t up-to-date with the server.

It’d be like sending carrier pigeons when the person’s expecting an email.

A cat hiding behind blinds with http status code 428 precondition required below it

If you see a 428, it means the server is telling you that your browser hasn’t completed a needed step to get the information it wants.

Imagine trying to sneak into a contest without qualifying.

That’s a 428.

A very grumpy cat being used as a plate with http status code 429 too many requests below it

429s are the server’s way of telling you that you’re making too many requests in a short period of time.

It’d be like trying to order 90 items from a menu before the waiter’s had a chance to take the first one down.

431 – Request Header Fields Too Large

A cat leaning on a step with http status code 431 request header fields too large below it

A 431 code means that the actual request was way too big for the server.

You could think of it as the equivalent of trying to send a letter but the delivery address is so long that it runs over the length of the envelope.

A cat in a prisoner costume with http status code 451 unavailable for legal reasons below it

Of all the HTTP status codes, the 451 is my favourite.

Not because of what it stands for, but because the number was chosen as a reference to one of my favourite books (Fahrenheit 451).

Anyways, a 451 code means that the resource you’re requesting isn’t available because of some or other legal reason.

Like trying to get information about a court case that hasn’t been made public.

5xx Codes

The opposite of 4xx codes, 5xx HTTP status codes indicate that there’s an error on the server’s side.

A ginger cat eating a cable with http status code 500 internal server error below it

A 500 code is used when there’s been an internal issue with the server, but it’s not exactly clear what the issue was.

It’s like when your phone breaks and you have no idea what the problem is.

A white cat popping its head out of a box with http status code 501 not implemented below it

A 501 means that the format of the request isn’t something the server supports.

Like trying to order an item from a restaurant that’s not actually on the menu.

A cat standing on a box trapping another cat with http status code 502 bad gateway below it

When you request something from a server, your request has to go through an intermediary to get to the endpoint.

So, a 502 is what happens when the endpoint says that there’s an issue, and the intermediary has to cancel the request because of it.

It’s like trying to call somebody but the network is shitty.

A kitten lying on its back on a tile floor with http status code 503 service unavailable below it

503s are usually only temporary codes, and they’re used when the server can’t handle a request because it’s down.

Usually for maintenance.

You could think of this as the HTTP equivalent of trying to order food through Uber Eats, but the restaurant can’t accept the order because they’re flooded, so you have to try again later.

A cat stuck in a screen door with http status code 504 gateway timeout below it

Like I said in the 502, when you request something from a server, the request has to go through an intermediary.

So, a 504 is what happens when the intermediary doesn’t get a response from the server in a decent amount of time.

You could use Uber Eats as an analogy again, only this time the restaurant just doesn’t accept the order.

So the app cancels and asks you to try again later.

A grey cat staring at paper with http status code 505 http version not supported below it

As the name implies, a 505 means that the protocol version being used in the request isn’t recognised.

In simpler terms, it’d be like trying to install .exe software (which only runs on Windows devices) on Apple laptops.

Or putting a square peg in a round hole.

Kittens in a flower pot with http status code 506 variant also negotiates below them

A 506 code means that there’s an internal server error that’s stopping it from presenting the requested version of a resource.

You could think of it like trying to get a translated version of a website’s page, but it can’t translate the page properly, so you get a bunch of garbled information.

A ginger kitten with a massive tummy with http status code 507 insufficient storage below it

507s mean that the server doesn’t have enough space to keep all of the information needed for the specific request.

It’d be like trying to upload files to a USB that’s out of space.

A stack of cats in beds on top of one another with http status code 508 loop detected below it

A 508 code means that the server picks up that something in the request is causing it to loop infinitely.

That means the request can’t be fulfilled.

You could think of it like when you look into a mirror that’s facing a mirror.

And then there’s nothing but mirrors in the mirrors.

A morphed black cat with two legs and two arms with http status code 510 not extended below it

A 510 code means that the initial request from your browser to the server needs some additional information.

As a result, the server can’t complete the request.

It’d be like ordering a jacket online, but you don’t tell them what size you want, so they can’t send you a jacket.

A white cat sitting at a dinner table with http status code 511 network authentication required below it

A 511 code means that the server needs some additional authentication before it’ll allow your browser’s request.

This one’s easy to understand.

All you have to do is think of a WiFi network that needs a password for you to join.

Aaaaaand that wraps up the official list of HTTP status codes.

Up next, we’ll look at the unofficial codes.

Unofficial Codes

So, an unofficial code is one that hasn’t been standardised by the Internet Assigned Numbers Authority (IANA).

The IANA is responsible for things like organising domain names and managing how different parts of the internet communicate with one another.

Anyways — if the IANA hasn’t said it’s good to go, it remains unofficial.

Let’s take a look at the list of unofficial HTTP status codes.

A black cat sitting in a cartoon room that's on fire with http status code 218 this is fine below it

The 218 is something known as a “catch-all” code.

Basically, a catch-all code is one that’s given in response to a bunch of different errors, issues, or statuses.

The 218 code is used on Apache servers.

If you don’t know what Apache is, here’s a really brief breakdown:

Apache is a web server software.
Essentially, it fetches and delivers the information you request.

It’s like the intermediary I spoke about in the 502 code.

Anyways — 218s come in if there’s an issue in the Apache’s internal workings.

If it’s got a special setting (called “ProxyErrorOverride”) turned on, then it’ll show you the 218 code instead of any specific 4xx or 5xx code.

A cat screaming at a brain emoji with with http status code 419 page expired below it

The 419 code applies to something known as the Laravel Framework.

Laravel is basically a toolbox that makes it easier to build websites.

Laravel makes use of something known as a “Cross-Site Request Forgery” token (CSRF for short).

The CSRF’s job is to make sure that there aren’t any actions being requested that aren’t coming from the person.

Anyways, it’s like a ticket to get entry into an event.

And if that ticket is for the day before, or it’s torn or something, you can’t get in.

A cat sitting on a broken step with with http status code 420 method expired below it

This 420 code was used in response to errors in web applications, specifically when using a WebDAV and the Spring Framework.

Lots of terms that make no sense, but don’t worry.

Here’s what you need to know.

WebDAV = way to handle files on the internet.

Spring Framework = a way to build web applications

So, this version of the 420 code was used when there were errors in file management in the Spring Framework.

A cat covered in marijuana with with http status code 420 enhance your calm below it

Yup – two 420 codes.

This 420 code belongs to Twitter (now X).

Well, it used to.

Way back in March of 2016, Twitter launched version 1 of its API.

If you don’t know what an API is, here’s a quick rundown.

An Application Programming Interface (API) is a tool that allows one software to communicate with another one.

So, when the Twitter API got too many requests, it’d ping a 420 code to the user.

It’s like asking somebody too many questions, and they tell you to chill out and slow down.

The 420 code here is also a reference to the 1993 movie “Demolition Man”.

A stuffed white cat sitting on a bench with http status code 430 request header fields too large below it

The 430 code used to be used by Shopify when there were too many requests for too many URLs in too short a time.

It was used in place of the 429 code (which we mentioned above).

It’s the equivalent of being told to form an orderly line if there are too many people outside of a shop for the latest pair of shoes.

A cat looking suspicious surrounded by knives with http status code 430 shopify security rejections below it

This is the latest 430 code, and is still used by Shopify.

Basically, this 430 means that the request was determined to be malicious, so it was rejected.

A sad cat staring at a phone screen with http status code 450 block by windows parental controls below it

The 450 code is used for Microsoft devices, and pops up when a requested webpage is blocked by Windows Parental Controls.

Like not being able to look at more memes because your parents said no.

A white cat staring at a computer screen full of numbers with http status code 498 invalid token below it

So, this code belongs to a company called Esri.

Esri stands for “Environmental Systems Research Institute”, and they have a software called “ArcGIS”.

ArcGIS is basically a way to create and distribute things like maps and other geographical tools and information.

Anyways, the 498 HTTP status code pings when the token your browser gives (as a way to get in) isn’t valid or is expired.

Like trying to get into a bar with a fake ID.

A white cat staring at the camera with a screen full of numbers behind it with http status code 499 token required below it

The 499 code also applies to Esri and ArcGIS. 

It’s the code you’d get before a 498.

It means that the server’s asking your browser for a token, and your browser’s not providing the token.

Like trying to get into a bar but not giving the bouncer an ID when they ask for it.

A cat being eaten by an inflatable fish with http status code 509 bandwidth limit exceeded below it

This code applies to Apache (which we spoke about earlier) and cPanel.

cPanel is a dashboard that allows you to control your website.

So, now that you know about those two, let’s look at the 509.

A 509 code is used when your browser uses up too much bandwidth.

(Bandwidth is the amount of space and resources each user is allowed at any given time).

Use up too much bandwidth —> get a 509.

A tabby and ginger cat cuddling a surprised looking cat with http status code 529 site is overloaded below it

So, a 529 is a code used by a company called Qualys.

Qualys is one of the oldest SaaS security vendors, having been around since 1999.

They’ve got some really big partners, and they also have an API called SSLLabs.

The SSLLabs server is used to run checks on the quality of SSL certificates of websites around the world.

(An SSL certificate is what makes “HTTP” an “HTTPS”).

So, with that in mind, here’s what a 529 means.

A 529 code is used when a website that SSLLabs is trying to test is overloaded.

Usually, this is as a result of too many requests from other servers and APIs trying to check that site’s SSL certificate.

It’s like having a mental breakdown because too many people are asking you the same question at once.

Y’know — a normal Tuesday.

A white kitten with a loading icon on its head with http status code 530 site is frozen below it

This 530 code belongs to a company called Pantheon Systems.

Pantheon Systems is a company that offers a web platform for users to build and manage websites.

And if that website isn’t responding…

Ping — 530.

A confused tuxedo with http status code 530 origin D N S error below it

Before we dive into this one, I need to tell you what a DNS record is.

A DNS record is a directory that translates domains that humans can read (like any website’s URL) into an Internet Protocol (IP). The IP is a bunch of numbers, and is used by computers to find and access information.

We also need to look at Cloudflare.

We’ll talk about it in more detail later on. But for now, all you need to know is that Cloudflare is a middleman between a server and a browser.

So, a 530 code is what happens when a request for a Shopify server (coming through Cloudflare) hits a snag because Cloudflare can’t find the corresponding IP.

It’s like trying to cross-reference information from different sources, but the info doesn’t match up.

A kitten with a yellow collar sleeping with http status code 540 temporarily disabled below it

A 540 is a Shopify code.

It’s used when the endpoint you’ve requested isn’t currently available.

It’d be like trying to get onto a ride at a theme park, but the ride itself is closed for maintenance.

A tabby cat with a slice of cheese on its face with http status code 598 network read timeout error below it

The 598 code is something known as an “informal convention”.

Basically, it means this code is accepted in some circles, even though it’s not official.

In this case, it’s accepted by HTTP proxies — the side avenues that your browser occasionally has to use to get information.

And when those proxies wait and wait and wait… and don’t get a response in time?

Then the proxies come back with a 598.

A tabby cat grimacing with http status code 599 network connect timeout error below it

A 599 code is also used by HTTP proxies.

It’s used when the point behind the proxy isn’t responding.

When that happens, the proxy lets your browser know by giving it a 599.

It’s like asking somebody to look in the back for your order, and they tell you it’s still not done.

A wary ginger cat with http status code 783 unexpected token below it

Last up on our list of unofficial HTTP status codes is the 783.

Before we dive into it, let’s look at something called “JSON”.

JSON (JavaScript Object Notation) is something known as a “data interchange format”.

Basically, it’s used alongside coding languages to make information easy to understand for both humans and computers.

So, when there’s a typo or mistake in the JSON script, it means the information given to the server’s buggy and doesn’t work properly.

And if you request something from the server that clashes with that bug, you get a 783.

And that’s our list of unofficial codes done.

Next up: Internet Information Services (IIS) codes.

Internet Information Services Codes

IIS or Internet Information Services is a web software that was created by Microsoft. It was developed and used to host websites and web apps on Windows servers.

A cat standing staring at a wall of snow with http status code 440 login time-out below it

A 440 status code pops up when the user’s session on the site expires. If you’ve ever been on a website for hours and then been logged out, you know what a 440 is.

An angry black cat with http status code 449 retry with below it

The 449 code happens when the server can’t complete a request because your browser didn’t provide the necessary information.

It’d be like trying to get into a building, but the security guard won’t let you in because you didn’t show some form of ID.

An angry grey cat sitting at a table with http status code 451 redirect below it

So, this one’s quite specific. Here’s what you need to know.

Microsoft uses what’s known as a Microsoft Exchange Server. This server allows people to sync emails, contacts, calendars, and tasks on their phones in one place.

So, a 451  pops up when the server your phone is currently on doesn’t have the information you’re requesting, or there’s a better server. The server throws the 451 up, and your phone searches for another server.

Like trying to find a brand of cereal in a store, and having to go to another branch because that cereal wasn’t available.

Now that you’ve got your cereal, let’s settle in for nginx codes.

nginx Codes

nginx is an open-source server, and can also send messages to servers (so it can act as a proxy).

nginx was created to address issues with Apache, which was causing limitations.

Since then, nginx has become the go-to for most online things (including this website).

Interestingly, all of the nginx codes are 4xx codes.

Or maybe it’s not interesting.

Maybe I’ve just been working on HTTP status codes for so long that it looks interesting to me.

A very grumpy black and white striped cat using a computer mouse with http status code 444 no response below it

The 444 code is used internally, which means you won’t see it.

Basically, it’s used by nginx to tell the server that it:

1) Shouldn’t show you any information

2) Should close the connection immediately

Imagine you try to order food at a drive-thru.

But, instead of taking your order, the staff don’t respond to your order, and just close the window and turn off the lights.

That’s a 444.

A fat cat with with http status code 494 request header too large below it

So, a 494 is thrown up when the request you send has too much data, or is too long for the server to process it properly.

Imagine trying to write a letter.

But you write so much that there’s just too much paper to fit into an envelope.

A cat walking through barbed wire with http status code 495 S S L certificate error below it

The 495 is an expansion of the 400 HTTP status code. Before diving in, it’s important to know that when your device connects to a server, it has to present something known as a client certificate. It’s basically just a way for the server to realise you’re legit.

So, when the client certificate isn’t legit, or doesn’t pass the server’s requirements, you get a 495.

Imagine trying to get into a hotel door using a keycard. But, the keycard just stops working one day.

So you have to get a new card.

A ginger cat hissing over a computer mouse with http status code 496 S S L certificate required below it

This is another expansion of the 400 HTTP status code, and it’s used when the client certificate simply isn’t provided.

Like trying to get into a hotel room without using the keycard.

A ginger cat sitting at a table screaming with http status code 497 H T T P request sent to H T T P S port below it

So, this code is another expansion of the 400 HTTP status code.

Nowadays, most sites and servers use HTTPS, because it’s more secure.

So, if your info is sent to an HTTPS server via HTTP, the server throws up a 497.

It’s kinda complicated, but here’s a simpler explanation.

Imagine you try to plug headphone cables into a USB port.

That’s what causes a 497.

A ginger cat with http status code 499 client closed request below it

Last on our list of nginx codes is the 499.

A 499 code is used when your browser closes the request before the server gets a chance to respond.

If you’ve clicked on a link and then another before the first one’s loaded, then you’ve triggered a 499.

And with that, we move away from nginx, and onto Cloudflare.

Cloudflare Codes

Cloudflare is probably the most well-known content delivery network (CDN) in the world.

(A CDN’s job is to store copies of your website’s information on servers around the world, which means people in those countries get the information faster).

Cloudflare is estimated to be used by around 19% of all websites on the internet. Which is crazy.

Cloudflare uses the 5xx series for its code and acts as the middleman between your browser and the server.

A fat tabby holding a scratching post and screaming with http status code 520 web server returned an unknown error below it

A 520 happens when the server gives Cloudflare information that’s unexpected, unknown, or missing altogether. So Cloudflare can’t give your browser anything.

It’s like ordering a burger, and the waiter takes your order to the kitchen. And then the chef gives the waiter soup. So the waiter doesn’t know what to do. Because it’s not a burger. It’s soup.

A white cat on a leash being dragged with http status code 521 web server is down below it

A 521 code is used when the server refuses connections from Cloudflare. This normally happens when some sort of security from the server is blocking Cloudflare’s connection requests.

It’d be like trying to get into a club with your friend who swears he’s friendly with the owner. But, when you get to the door, the bouncer stops you and doesn’t let you pass.

A grey cat on its back with http status code 522 connection timed out below it

A 522 happens when Cloudflare pings the server with a request, but the server just doesn’t respond, and the connection between the two times out.

A tabby cat falling off of a couch with http status code 523 origin is unreachable below it

A 523 code signals that the original server couldn’t be reached by Cloudflare. There are a bunch of reasons why this happens, but the main one is that there’s an issue with DNS records (basically the thing that tells you what the website’s name/ IP is.

It’s like trying to order food, but the waiter can’t talk to the chef, so they can’t place the order.

A cat using a phone with http status code 524 a timeout occurred below it

A 524 is used when Cloudflare completes the initial connection with the server, but it doesn’t receive a response in time for the follow-up request.

It’s like phoning a friend, and they pick up. But then they don’t say anything.

A grumpy cat shaking a hand with http status code 525 S S L handshake failed below it

A 525 means that Cloudflare couldn’t validate what’s known as an SSL/TLS handshake.

Essentially, there’s an issue with the origin server and Cloudflare, which means that Cloudflare can’t confirm if the connection’s secure.

It’d be like if you were a spy, and you had to meet up with another spy, and you had secret spy phrases that let the other person know that you were legit.

But then the other person doesn’t say the secret phrase, so you don’t know if they’re trustworthy or not.

A cat stuck in couch cushions with http status code 526 invalid S S L certificate below it

A 526 code signals that Cloudflare couldn’t validate the SSL certificate for the origin server.

Imagine trying to enter a super secret event. And you need a special invite. But the bouncer says your invite’s fake.

That’s a 526.

A fat cat staring at a hand holding a bowl of fruit loops with http status code 527 railgun error below it

No, we’re not talking about the big weapon that shoots lasers.

Railgun is a product from Cloudflare that works to make sure that the connection between the origin server and Cloudflare is as fast as possible. Because you’re running your stuff through a middleman, you want to make sure it’s fast, otherwise people leave.

A 527 error means that the connection between the origin server’s Railgun and Cloudflare was interrupted.

Sorta like ordering food, and you’re tracking the delivery guy. But then he loses signal, and you can’t find him.

So you wait for your food, never knowing when it might arrive.

A cat being pulled from its hiding spot with http status code 530 below it

530s were born without names.

They’re sent back along with what’s known as a “1xxx” error.

1xxx errors are specific to Cloudflare communication, and just mean that there was some sort of communication problem.

There are a ton of 1xxx errors, and I’m not going to go into them now, but you could imagine something like the 783 analogy.

And that’s a wrap for Cloudflare codes.

Let’s move over to AWS Elastic Load Balancing codes.

AWS Elastic Load Balancing Codes

Amazon Web Services is a service offered by Amazon that allows people to access cloud computing services and hosting for a pretty affordable price.

AWS is also the largest cloud provider in the game (apart from Mother Nature), with clients like Samsung, Canva, and Netflix.

Anyways, it uses something known as an Elastic Load Balancer — which essentially channels traffic through different portals so that no one server is overloaded.

Let’s take a look at the AWS Elastic Load Balancing codes.
(Only one of them has a name).

A cat drowning in quicksand with http status code 000 below it

000 codes are used in combination with HTTP/2 GOAWAY frames.

An HTTP/2 GOAWAY frame is basically just a message sent from the server to your device to say that it’s not accepting new requests.

Anyways, a 000 code comes into play when the header request is too big (over 8 kilobytes), or if there are too many requests (upwards of 10,000) through one connection.

It’d be like trying to order food at a food stall, but there are too many people in the queue, and then the stall runs out of food. So it closes.

A black cat staring at a clock with http status code 460 below it

460 codes are used when your device ends the connection with the load balancer before it finishes its timeout period — basically just the amount of time a server waits for a request.

It’s like being told the wait time to get into a store is 10 minutes. But you get bored and leave after 5 minutes.

A cat that looks like the joker with http status code 463 below it

A 463 is used when the load balancer gets a request with a header that has more than 30 IP addresses. It’s used with what’s known. as an “X-Forwarded-For” (XXF) header. An XXF header is used when a client’s request passes through a bunch of proxy servers or load balancers.

It essentially keeps those connections transparent so the server knows where the original request came from.

It’s like seeing a small car, and expecting one person to get out.

Instead, over 30 clowns get out of this impossibly small car.

Weird.

A white cat with thumbs using a smartphone with http status code 464 below it

464s are used when there are incompatible protocol versions between the client’s server (where the request comes from) and the origin server.

Protocol versions are things like HTTP/1.0, HTTP/1.1, HTTP/2, etc. If your device is using HTTP/2, it won’t be able to communicate with an HTTP/1.0 origin server.

It’s like trying to send your friend a funny post from Reddit, but they’re using a flip phone, so they can’t access Reddit.

Grumpy cat frowning with http status code 561 unauthorised below it

The 561 has a pretty lengthy explanation, so I’m gonna break it down.

Essentially, a 561 means that there’s an issue verifying the user, because the identity provider answers the verification request with an error code.

It’s kind of like trying to enter a movie theatre with a torn movie ticket, so the staff doesn’t know which movie you’re allowed to watch. So, they can’t let you in.

And that’s it.

A complete list of HTTP status codes (with analogies).

Let me know what you thought in the comments.

Or don’t.

I can’t tell you what to do.

I’m not Google.

 

P.S. — credit where credit is due. The HTTP status cats and HTTP status dogs inspired a lot of this, so give them a visit too.

    FAQs

    No surprise here — the 404.

    A 204 means that the request was successful, but there's no information in the response.

    A 404 means that there was no resource to start with.

    Here's a quick breakdown.

    Officially, there are 63.

    In total, there are around 104.

    It's broken down like this:

    Official: 63

    Unofficial: 18

    IIS: 3

    nginx: 6

    Cloudflare: 9

    AWS Elastic Load Balancing: 4

     

    Back to top

    Author

    Ian du Toit

    Ian du Toit

    Hey, I’m Ian. I started learning about SEO in 2021. Since then, I’ve done work for clients in just about every industry you can imagine, ranked at the top of page 1 for content, and written stuff for Backlinko.✍️ (Yup, that one). When I started out, I couldn’t afford expensive tools. I still can’t. It took me time to find the resources and tools that wouldn’t cost a fortune. And that’s what Poor Man’s SEO is about. It’s our way of sharing what we’ve learned with you — for free

    Rules for commenting

    Poor Man’s SEO is all about open discussion and community building.

    If you disagree with something we posted, comment it.

    If you disagree with something somebody said, comment it. 

    If you have a different opinion or want to add something, comment it.

    We’re here to grow together, so call us out on shit if you think you should.

    But our number one rule is:

    Don’t be a dick

    That means no harassment, no fights, and absolutely NO ex-bosses are allowed.

    Happy commenting.

    Leave a Reply

    Your email address will not be published. Required fields are marked *