HTTP Status Codes

Banner image for the article

Many developers are familiar with a few key HTTP status codes and what they mean, but looking at the RFCs can be a time consuming and convoluted process if we want to keep up with all of them.

Here’s a cheat sheet I use to translate the official RFC description to something more understandable. It’s a little sweary, but all the good things in IT are.

# 1xx Wait for your shit

Code HTTP Description Definition RFC
100 Continue I’m waiting for your shit, get on with it RFC7231
101 Switching Protocols This ear’s shitty, talk to my good ear RFC7231
102 Processing Piss off, I’m thinking RFC2518
103 Early Hints Here’s the first bit of the answer, it might help you get shit done RFC8297

# 2xx Here’s your shit

Code HTTP Description Definition RFC
200 OK Shit! We’re all good RFC7231
201 Created Look Mum, I made a thing RFC7231
202 Accepted Got it, thanks! RFC7231
203 Non-Authoritative Information A friend of a friend told me… RFC7231
204 No Content I may or may not have done your shit, you don’t need to know RFC7231
205 Reset Content I did your shit and I’ll do it again RFC7231
206 Partial Content I’ve got more shit, but you told me not to say it RFC7233
207 Multi-Status Different shit for some of those requests RFC4918
208 Already Reported I’ve told you this shit before RFC5842
226 IM Used This shit changed, you should know the other shit RFC3229

# 3xx Your shit’s over here

Code HTTP Description Definition RFC
300 Multiple Choices You gotta be more specific, but try this shit RFC7231
301 Moved Permanently We moved that shit RFC7231
302 Found We moved that shit and we’ll move it again RFC7231
303 See Other Shit, I dunno, ask my friend RFC7231
304 Not Modified Oh c’mon, I’ve already told you this shit RFC7232
305 Use Proxy Our security is shit, so go via this proxy RFC7231 (deprecated)
306 Switch Proxy Not only is our security shit, but you’re talking to the wrong shitty security DRAFT
307 Temporary Redirect We moved this shit, but we’ll move it back soon RFC7231
308 Permanent Redirect We moved this shit, here’s a map RFC7523

# 4xx You fucked up

Code HTTP Description Definition RFC
400 Bad Request You fucked up so bad we don’t know what you want RFC7231
401 Unauthorized We know who you are, we just aren’t telling you shit RFC7235
402 Payment Required This shit is gonna cost you RFC7231
403 Forbidden We know that shit, but we aren’t telling you RFC7231
404 Not Found That shit doesn’t exist RFC7231
405 Method Not Allowed We can’t do that shit for you RFC7231
406 Not Acceptable We know that shit, but we can’t explain in terms you understand RFC7231
407 Proxy Authentication Required Some fucker in the middle wants a password RFC7235
408 Request Timeout Fuck you talk slow! RFC7231
409 Conflict That would fuck shit up RFC7231
410 Gone That shit’s been deleted RFC7231
411 Length Required I won’t do that shit unless you tell me how big it is RFC7231
412 Precondition Failed I told me not to do shit if something was different; it was fucking different RFC2518
413 Payload Too Large Stop sending me so much shit RFC7231
414 URI Too Long No, seriously, stop sending me so much shit RFC7231
415 Unsupported Media Type Piss off, I don’t speak that language RFC7231
416 Range Not Satisfiable I know some shit about that, but you didn’t ask for the shit I know RFC7233
417 Expectation Failed You made an assumption that was wrong, idiot RFC7231
421 Misdirected Request Someone likely knows that shit, but it isn’t me RFC7540
422 Unprocessable Entity You don’t know what the fuck you’re saying RFC4918
423 Locked I refuse to modify that shit RFC4918
424 Failed Dependency The last thing fucked up, so this one won’t work RFC4918
425 Too Early You’re sending shit before you’re supposed to RFC8470
426 Upgrade Required Get with the times slowpoke RFC7231
428 Precondition Required Your shit may break other shit, you need to tell me how to avoid breaking other shit RFC6585
429 Too Many Requests Stop talking so much shit RFC6585
431 Request Header Fields Too Large Just get to the fucking point! RFC6585
451 Unavailable For Legal Reasons Fucking lawyers! RFC7725

# 5xx We fucked up

Code HTTP Description Definition RFC
500 Internal Server Error We fucked up so bad we can’t tell you what went wrong RFC7231
501 Not Implemented We didn’t think you’d use this shit, so we didn’t waste our time on it RFC7231
502 Bad Gateway The translator forgot how to say shit RFC7231
503 Service Unavailable We’re fixing shit, or too many people want some shit from us RFC7231
504 Gateway Timeout I asked for a something and didn’t get a fucking response RFC7231
505 HTTP Version Not Supported Speak my fucking language RFC7231
506 Variant Also Negotiates We fucked up our server and want to negotiate after we’ve finished negotiations RFC2295
507 Insufficient Storage Fuck, the disk is full RFC4918
508 Loop Detected Infinite loops are like the Euthanasia Coaster RFC5842
510 Not Extended You gotta be bigger than that to ride RFC2774
511 Network Authentication Required The free WiFi you’re using wants all your personal information RFC6585

# Further Information

If you need some more information about HTTP Status Codes, IANA maintains a Hypertext Transfer Protocol (HTTP) Status Code Registry.

# Unofficial Status Codes

Code HTTP Description Definition RFC
209 Contents of Related I should tell you to ask a friend, but they told me, so here’s your shit W3C proposed draft (2014)
210 Content Different My shit is different to your shit RFC2518 WebDav draft
211 System Status/Healthy This isn’t fucking FTP! Unknown
418 I’m a Teapot Yes, yes you are you! RFC2324 Hyper Text Coffee Pot Control Protocol April Fools Joke
420 Enhance Your Calm Smoke a bowl and slow down a bit Twitter

# Other Codes

If you have any additional HTTP Code that should be added here please let me know via a message on LinkedIn.