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.
What Are HTTP Status Codes?
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 Codes
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.
100 – Continue

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.”
101 – Switching Protocols

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.
102 – Processing

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.
103 – Early Hints

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 Codes
2xx HTTP status codes are used when the server tells your browser that your request was received, understood, and processed.
200 – OK

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.
201 – Created

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.
202 – Accepted

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.
203 – Non-Authoritative Information

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.
204 – No Content

The 204 is the opposite of the 203 code.
It indicates that the request was processed and returned, but there’s no extra information.
205 – Reset Content

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.
206 – Partial Content

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.
207 – Multi-Status

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.
208 – Already Reported

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.
226 – IM Used

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.
300 – Multiple Choices

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.
301 – Moved Permanently

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.
302 – Found

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.
303 – See Other

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.
304 – Not Modified

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.”
305 – Use Proxy

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.
306 – Switch Proxy

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.
307 – Temporary Redirect

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.
308 – Permanent Redirect

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).
400 – Bad Request

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.
401 – Unauthorized

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.
402 – Payment Required

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.
403 – Forbidden

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.
404 – Not Found

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?
405 – Method Not Allowed

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.
406 – Not Acceptable

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.
407 – Proxy Authentication Required

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.
408 – Request Timeout

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.”
409 – Conflict

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.
410 – Gone

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.
411 – Length Required

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.”
412 – Precondition Failed

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.
413 – Payload Too Large

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.
414 – URI Too Long

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.
415 – Unsupported Media Type

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.
416 – Range Not Satisfiable

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.
417 – Expectation Failed

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.
418 – I’m A Teapot

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!”
421 – Misdirected Request

421 codes indicate that a request was given to the wrong server.
It’s just like sending a message to the wrong person.
422 – Unprocessable Entity

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 “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.
424 – Failed Dependency

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.
425 – Too Early

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.
426 – Upgrade Required

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.
428 – Precondition Required

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.
429 – Too Many Requests

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 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.
451 – Unavailable For Legal Reasons

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.
500 – Internal Server Error

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.
501 – Not Implemented

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.
502 – Bad Gateway

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.
503 – Service Unavailable

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.
504 – Gateway Timeout

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.
505 – HTTP Version Not Supported

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.
506 – Variant Also Negotiates

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.
507 – Insufficient Storage

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.
508 – Loop Detected

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.
510 – Not Extended

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.
511 – Network Authentication Required

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.
218 – This Is Fine

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.
419 – Page Expired

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.
420 – Method Expired

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.
420 – Enhance Your Calm

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”.
430 – Request Header Fields Too Large

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.
430 – Shopify Security Rejections

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.
450 – Blocked By Windows Parental Controls

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.
498 – Invalid Token

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.
499 – Token Required

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.
509 – Bandwidth Limit Exceeded

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.
529 – Site Is Overloaded

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.
530 – Site Is Frozen

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.
530 – Origin DNS Error

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.
540 – Temporarily Disabled

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.
598 – Network Read Timeout Error

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.
599 – Network Connect Timeout Error

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.
783 – Unexpected Token

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.
440 – Login Time-Out

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.
449 – Retry With

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.
451 – Redirect

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.
444 – No Response

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.
494 – Request Header Too Large

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.
495 – SSL Certificate Error

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.
496 – SSL Certificate Required

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.
497 – HTTP Request Sent To HTTPS Port

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.
499 – Client Closed Request

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.
520 – Web Server Returned An Unknown Error

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.
521 – Web Server Is Down

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.
522 – Connection Timed Out

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.
523 – Origin Is Unreachable

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.
524 – A Timeout Occurred

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.
525 – SSL Handshake Failed

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.
526 – Invalid SSL Certificate

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.
527 – Railgun Error

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.
530 –

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).
000 –

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.
460 –

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.
463 –

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.
464 –

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.
561 – Unauthorised

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.
A Conclusion? Yeah, Why Not.
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