The joke that would not die
An April Fools' RFC from 1998 defined a status code for a teapot refusing to make coffee. It has outlived most of the serious protocols published that year.

On the first of April 1998 (the date tells you most of what you need to know) the body that writes the internet's plumbing published a specification for controlling coffee pots over the network. So yes, it is a joke, and you did not need me to tell you. That is the last part of this you will guess correctly.
The document is RFC 2324, the Hyper Text Coffee Pot Control Protocol. RFC stands for Request for Comments, which is the modest name the internet's standards carry. TCP is one. Email is several. The series runs back to 1969 and it is where the actual rules live. Publishing a gag in it is roughly like slipping a limerick into the statute book, in the correct typeface, with a section number.
And it is played completely straight. Eleven pages of specification for a machine that makes coffee, with a request syntax, error handling, and a section on the safety implications of remotely operating an appliance full of scalding liquid. It defines a method called BREW. It defines a method called WHEN, which you send to make the pot stop pouring milk, on the grounds that this is the word a person would say out loud. There is an Accept-Additions header, and its permitted values include Half-and-half, Vanilla, Raspberry, Kahlua and Aquavit.
The protocol, it explains, is designed espressoly for the brewing of coffee. The security section reads, in full seriousness of format: anyone who gets in between me and my morning coffee should be insecure. The document notes that no options were given for decaffeinated coffee, and asks what the point would be.

It was written by Larry Masinter, and this is where it stops being a joke about the standards and becomes a joke told from inside them. Masinter was not a bystander lobbing something over the fence. He was about as far inside the building as a person gets. He co-wrote HTTP itself, the actual specification your browser is using to read this, and he chaired the working group that produced it. So the coffee-pot protocol is a joke about over-engineering written by one of the very few people with the standing to make it, in the exact register he used for the real thing. That is why it lands, and why it survived.
Buried in it is a list of error codes, and one of them is the reason you have heard of any of this. If you ask a teapot for coffee, it needs a way to decline, and the specification gives it one.
Note the MAY, in capitals. In specification language those capitalised words are the load-bearing ones: MUST is an obligation, SHOULD is a strong recommendation, MAY is genuine, deliberate permission. So a compliant teapot is formally permitted to be short and stout, and formally permitted not to be. Larry thought about that.

Now the part everybody gets wrong, and it is the good half. 418 was never part of HTTP. It is not in the specification your browser implements. It lived only in the joke document, and web frameworks implemented it anyway, for years, because their authors thought it was funny.
Which is exactly what Mark Nottingham objected to in 2017. Nottingham chairs the HTTP working group at the IETF, which is the same standards body that published the coffee-pot joke in the first place, so this is his actual job, and his argument was correct on every technical point: a joke code from a joke document was squatting on a real number in real software, and it had never been standardised. He proposed, in a discussion thread, that it be taken out.
The campaign to stop him was started by Shane Brunswick, who was about to begin his second year of high school. He built a site, made the case, and the case was not that 418 was useful. It was that the underlying processes of computers are still made by humans, and it would be a real shame to see 418 go.
Here is the ending, and it is better than the argument. Nottingham did not lose. He agreed, and then he filed the paperwork himself, proposing that 418 be formally reserved so that nobody could ever assign it to anything else.
So go and look at the official register of HTTP status codes today. 419 is Unassigned. 420 is Unassigned. 418 is not unassigned. 418 says (Unused), and it carries a reference to a section of the current HTTP standard, which exists to hold the number empty on purpose.
So the joke that was never in the specification is now in the specification, protected by a clause, because a teenager asked nicely and the man whose job it was to remove it decided he agreed. No other trade keeps a rulebook with a clause in it defending a pun.
PS. Sixteen years after the original, RFC 7168 extended the protocol to teapots that make tea. It adds a code for the wrong sort of milk and worries at length about the difference between a pot and a cup. It is also dated the first of April. The internet is not a serious place, but it is a consistent one.
We make a piece with 418 on it. If you have to ask, the piece is working exactly as specified.
Where this comes from
- primaryRFC 2324, “Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)”, 1 April 1998The document itself: its date, Larry Masinter's authorship, the BREW and WHEN methods, the Accept-Additions values, the espressoly pun, the security section, the decaffeinated remark, and the 418 clause quoted verbatim.
- primaryRFC 2616, “Hypertext Transfer Protocol — HTTP/1.1”, 1999That Larry Masinter is a listed co-author of HTTP itself, which is the fact the whole piece turns on.
- primarySave 418 Movement, Shane Brunswick, 2017Who proposed the removal and on what grounds, who ran the campaign and how old he was, the campaign's own argument in its own words, and that Nottingham subsequently filed the proposal to reserve the code.
- primaryIANA, Hypertext Transfer Protocol (HTTP) Status Code RegistryThat 419 and 420 read Unassigned while 418 reads (Unused) and carries a reference into the current HTTP standard. The payoff of the piece, checked against the register rather than assumed.
- primaryRFC 7168, “The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances”, 1 April 2014The sequel in the postscript, including its date.