MockFoxAdvertise

HTTP 418 I'm a teapot

Updated Free mock REST & WebSocket APIs

HTTP 418 I'm a teapot — A joke code from the 1998 Hyper Text Coffee Pot Control Protocol: the server refuses to brew coffee because it is a teapot.

Class
4xx Client Error
Defined in
RFC 2324 (April Fools'); reserved in RFC 9110 §15.5.19
Official
Yes (IANA registry)
Cacheable by default
No (unless Cache-Control/Expires say so)
Safe to retry
Not without changing the request

Try it: get a real 418 response

Our test endpoint answers every request with 418 I'm a teapot.

curl -i https://mockfox.dev/api/status/418

Use it in tests, health-check monitors or to see how your client handles a 418. Add ?delay=2000 to slow it down.

What does HTTP 418 mean?

418 I'm a teapot comes from RFC 2324, the Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0), an April Fools' joke published in 1998. Any attempt to brew coffee with a teapot should result in the error "418 I'm a teapot", and the response body may be short and stout.

It was never part of HTTP proper, but it's implemented as an easter egg in countless frameworks and websites. When a 2017 proposal suggested removing it from Node.js and Go, the "Save 418" campaign kept it; RFC 9110 now lists 418 as reserved ("Unused") so nobody can assign it a real meaning.

When is 418 used?

  • Easter eggs (google.com/teapot famously returned 418).
  • Some sites and WAFs return 418 to bots and scrapers they've decided to block, as a deliberately unhelpful answer.
  • Test suites and tutorials that need an obviously unusual status code.

Common causes of a 418

  • An easter egg on the site, or you've been identified as an automated client and blocked with a tongue-in-cheek response.

How to fix 418 I'm a teapot

If you're visiting the site

  1. If you hit 418 on a real site unexpectedly, you were probably flagged as a bot: disable VPNs or aggressive privacy extensions and try again, or contact the site.

If you run the site or API (developers)

  1. Don't use 418 for real errors — clients won't know what to do. Use 403 (blocked) or 429 (rate-limited) instead.
  2. It's fine for jokes, demos and tests; most libraries know the reason phrase.

Returning or handling 418: server examples

nginx

location = /coffee {
    return 418 "I'm a teapot\n";
}

Express

app.get("/coffee", (req, res) => res.status(418).send("I'm a teapot ☕"));

Next.js

// app/api/example/route.ts (Next.js App Router)
export function GET() {
  return new Response("I'm a teapot", { status: 418 });
}

Example 418 response

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

I'm a teapot. Short and stout.

Related status codes

Related tools

Frequently asked questions

Is 418 a real HTTP status code?

It's real in the sense that it's reserved in the IANA registry and supported by most libraries, but it has no official semantics in HTTP. It originated as an April Fools' joke in RFC 2324.

Why do I get 418 from a website?

Either it's an easter egg or the site's bot protection is answering requests it considers automated with a joke status.

Can I use 418 in my API?

Technically yes, but don't use it for real error conditions. Clients and monitoring tools treat it as an unknown 4xx.