418 I'm a Teapot

Client Error - The server refuses to brew coffee because it is a teapot

HTTP 418 I'm a Teapot

What It Means

The HTTP 418 I'm a Teapot status code is an April Fools' joke defined in RFC 2324, the Hyper Text Coffee Pot Control Protocol (HTCPCP). It indicates that the server refuses to brew coffee because it is, permanently, a teapot.

The Origin Story

In 1998, Larry Masinter authored RFC 2324 as an April Fools' Day joke. The document describes a protocol for controlling, monitoring, and diagnosing coffee pots. The 418 status code was defined to handle situations where a client mistakenly tries to brew coffee with a teapot.

From the RFC

"Any attempt to brew coffee with a teapot should result in the error code '418 I'm a teapot'. The resulting entity body MAY be short and stout."

Real-World Usage

Despite being a joke, 418 has found practical uses:

  • Easter eggs: Many websites return 418 at special endpoints (try google.com/teapot)
  • Developer humor: Used in demos and examples to add personality
  • Bot blocking: Some services return 418 to block automated requests
  • Testing: Useful for testing HTTP client error handling

The Save 418 Movement

In 2017, the IETF considered removing 418 from Node.js and Go. Developers rallied to "Save 418", arguing it represented the playful spirit of the internet. Both languages ultimately kept the status code.

Example Implementation

// Express.js
app.get('/teapot', (req, res) => {
  res.status(418).json({
    error: "I'm a teapot",
    body: "short and stout"
  });
});

// Python Flask
@app.route('/teapot')
def teapot():
    return "I'm a teapot", 418

Should You Use It?

While fun, 418 shouldn't be used for actual error handling in production APIs. Stick to standard 4xx codes for real client errors. Reserve 418 for easter eggs, humor, or special cases where you want to add some developer joy.

Frequently Asked Questions

What is HTTP 418 I'm a Teapot?
HTTP 418 I'm a Teapot is a humorous status code from RFC 2324, published on April 1, 1998. It is part of the Hyper Text Coffee Pot Control Protocol (HTCPCP), a joke specification. The code indicates the server refuses to brew coffee because it is, permanently, a teapot. The entity body, per the RFC, MAY be short and stout.
Is 418 I'm a Teapot a real HTTP status code?
It is a real, registered status code but from a joke RFC. It is not part of the core HTTP specification. However, it is implemented in many HTTP libraries and frameworks (Node.js, Go, Python) and has been preserved after a 2017 'Save 418' campaign when the IETF considered removing it.
What is the Save 418 Movement?
In 2017, the IETF proposed removing 418 from Node.js and Go's HTTP libraries since it came from a joke RFC and was not part of the HTTP standard. Developers rallied online to 'Save 418', arguing it represented the fun and human side of the internet. Both languages kept the status code.
Do any real websites use 418?
Yes. Google returns 418 at google.com/teapot as an Easter egg with an animated teapot. Many developers add /teapot or /coffee endpoints that return 418 as Easter eggs. Some services also use 418 to block bots or automated scrapers, since it is an unexpected response that confuses simple crawlers.
Should I use 418 in my production API?
No. While fun, 418 should not be used for actual error handling in production APIs. Use standard 4xx status codes (400, 401, 403, 404, etc.) for real client errors. Reserve 418 for Easter eggs, developer humor, or test endpoints where you want to add some personality to your API.

Monitor your (coffee pot) endpoints

UptimeSignal tracks all your endpoints, teapots or otherwise.

Start monitoring free →

Related Status Codes

More Resources