pickuma.
Dev Knowledge

HTTP 418 'I am a Teapot': The Joke Status Code That Won't Die

Why HTTP status 418 exists, where it came from (an April Fools' RFC about coffee pots), and what it teaches you about how status codes are actually organized.

5 min read

If you ask a teapot to brew coffee, what should it say? According to an actual internet standards document, it should reply 418 I'm a teapot. This is a real status code you can return from a real server, and yet it has never been part of HTTP proper. Here is the story, and what it quietly teaches you about how the web is organized.

Where 418 comes from

The code traces back to RFC 2324, the Hyper Text Coffee Pot Control Protocol (HTCPCP), published on April 1, 1998. It was an April Fools’ Day joke: a straight-faced specification for controlling and monitoring coffee pots over the network, complete with new request methods like BREW.

The relevant line is the punchline. HTCPCP defines status code 418 I'm a teapot: the response a device sends when it is asked to brew coffee but is, in fact, a teapot. The body of such a response, the RFC notes, “may be short and stout.” It is a joke with a setup, and the joke is delivered in the exact deadpan format of a genuine standard.

Because it lived in an RFC, 418 looked just official enough to be irresistible. Developers started wiring it into web frameworks and servers as an easter egg. Hit the right hidden route and you would get a teapot back. It became a small badge of taste, a wink between people who knew the reference.

Why it almost died, and didn’t

Around 2017, the popular Go web framework chi had StatusTeapot flagged for removal because 418 is not a “real” HTTP code and arguably did not belong in a serious library. That sparked a small revolt. A “Save 418” campaign argued the code was a reserved part of internet folklore worth protecting, and the site save418.com became the rallying point.

The pushback worked. The code stayed, and the episode became its own piece of lore: a reminder that developer culture has sentimental attachments, and that even a joke can earn enough standing to be defended. Today 418 remains officially reserved by IANA precisely so nobody assigns it a serious meaning, which means the joke is, in a sense, permanent.

What 418 teaches about status codes

The joke only lands if you know the system it parodies, so 418 is a surprisingly good way to learn that system. HTTP status codes are three-digit numbers grouped into five classes by their first digit:

  • 1xx informational: the request was received, processing continues.
  • 2xx success: the request worked (200 OK, 201 Created).
  • 3xx redirection: more action is needed, usually go somewhere else (301, 304).
  • 4xx client error: the request was wrong (400 Bad Request, 404 Not Found, 403 Forbidden).
  • 5xx server error: the server failed on a valid request (500, 503).

That grouping is the actual lesson. A client can look at just the first digit and know broadly what happened, even if it has never seen the specific code. This is why 418 is funny and coherent: it sits in the 4xx range, so it is framed as the client’s fault. You, the requester, made the mistake of expecting coffee from a teapot.

You can demonstrate the whole idea in one line:

Terminal window
curl -s -o /dev/null -w "%{http_code}\n" https://www.google.com/teapot

Google has historically served a 418 from that path as its own nod to the joke. The takeaway is not the trivia, it is the mental model: status codes are a small, structured vocabulary, and once you internalize the five classes, most of HTTP error handling stops being memorization.

FAQ

FAQ

Can I actually use 418 in my own API?+
Technically yes, any server can return any number, but you shouldn't. It is reserved as a joke and carries no agreed meaning, so clients and tools won't handle it usefully. Use a real 4xx code that communicates the actual problem.
Is 418 part of the HTTP standard?+
No. It comes from RFC 2324, an April Fools' specification for a fictional coffee-pot protocol, not from the HTTP specifications themselves. IANA keeps 418 reserved so it is never assigned a serious meaning, which is different from being a standard status code.
Why do people care so much about a joke code?+
When the chi framework proposed removing it around 2017, a 'Save 418' movement defended it as protected internet folklore. It became a small symbol of developer culture and shared humor, and the code survived as a result.

Related reading

See all Dev Knowledge articles →

Get the best tools, weekly

One email every Friday. No spam, unsubscribe anytime.