Skip to main content
4xx Client Error

418 I'm a teapot

The server refuses the attempt to brew coffee with a teapot.

Meaning & Description

The 418 I'm a teapot status code is an Easter egg from a 1998 April Fools' Day RFC (RFC 2324, Hyper Text Coffee Pot Control Protocol). It indicates that the server refuses to brew coffee because it is, in fact, a teapot. While it started as a joke, it has been widely implemented in web servers (like Node.js) and APIs as an Easter egg. In 2017, it was officially reserved by the IANA to ensure it wouldn't be reassigned to a real feature.

Common Causes

  • April Fools' jokes.
  • Developers having fun.
  • Sometimes used by anti-bot or WAF rules as a whimsical way to drop a malicious connection.

How to fix a 418 error

  1. Smile.
  2. Stop trying to brew coffee with a teapot.
  3. Check if you accidentally triggered a hidden Easter egg in the API you are consuming.

Browser & SEO Behaviour

Browser Behavior

Browsers do nothing special; they will display the payload if provided.

SEO Impact

No direct SEO impact, though if your main homepage returns a 418, Google will drop it from the index as a client error.

CDN Behavior

CDNs will treat it as an uncacheable 4xx client error by default.

Code Examples

HTTP
HTTP/1.1 418 I'm a teapot
Content-Type: text/plain

I am short and stout.
Node.js (Express)
app.post("/brew-coffee", (req, res) => {
  res.status(418).send("I'm a teapot, short and stout.");
});
Python (FastAPI)
from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.get("/coffee")
async def brew_coffee():
    raise HTTPException(status_code=418, detail="I'm a teapot")
Go (net/http)
func handler(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusTeapot)
    w.Write([]byte("I'm a teapot"))
}
C# (ASP.NET Core)
[HttpGet("coffee")]
public IActionResult Brew()
{
    return StatusCode(418, "I'm a teapot");
}
cURL
curl -i -X BREW http://api.example.com/teapot

Raw HTTP Response Example

HTTP Response
HTTP/1.1 418 I'm a teapot
Date: Wed, 21 Oct 2026 07:28:00 GMT
Content-Type: text/plain

I'm a teapot.

Real-world Examples

Google: Google maintains a dedicated Easter egg page at google.com/teapot which returns a 418 and shows a CSS animation of a teapot.
Node.js Core: The Node.js `http` module officially exports `http.STATUS_CODES[418]` as "I'm a Teapot".

Frequently Asked Questions

Is 418 a real HTTP status code?

Yes and no. It was created as an April Fools' joke in RFC 2324. However, because it became so popular in pop culture, the IANA officially reserved it in 2017 to prevent it from ever being assigned to a real HTTP feature.

Should I use 418 in production APIs?

Generally, no. While it is fun, it violates strict REST semantics for actual error handling. Use it strictly as an Easter egg.

Did You Know?

In 2017, a proposal was made to remove 418 from Node.js and Go because it wasn't a "real" standard. The community launched a massive "Save 418" campaign, leading to the HTTP working group officially reserving the code to protect it.

The RFC for this code is the Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0).

Developer Tips

  • If you are building an API that handles beverage brewing devices, 418 is technically the correct status to return if a teapot is asked to brew coffee.

Interview Questions

These are questions you might face in a backend or API design interview that touch on HTTP 418.

What is the HTTP 418 status code?

It is "I'm a teapot." It's an Easter egg originally defined in the 1998 April Fools' Day RFC 2324 for the Hyper Text Coffee Pot Control Protocol.

Common Interview Mistakes

  • Assuming it is a trick question and denying that 418 exists.