HTTP 418 I’m a teapot — Meaning, Causes & How to Fix
An April Fools’ joke code from the Hyper Text Coffee Pot Control Protocol; reserved and unused in HTTP.
- Code
- 418
- Name
- I’m a teapot
- Class
- 4xx Client Error
- Specification
- RFC 2324 (HTCPCP); listed as “(Unused)” in RFC 9110 §15.5.19
- Cacheable by default
- Only with explicit Cache-Control / Expires
What HTTP 418 means
418 I’m a teapot comes from RFC 2324, a 1998 April Fools’ RFC defining a protocol for controlling coffee pots: a teapot asked to brew coffee answers 418. It has no meaning in real HTTP. RFC 9110 marks it “(Unused)” and reserves the number so nobody assigns it to something else.
Common causes
- Easter eggs in frameworks and websites.
- Some services using it jokingly to reject bots or unwanted requests.
How to fix it
For site owners
- Do not use 418 in production APIs — clients have no defined way to handle it. Use 403, 429 or another standard code.
For visitors & developers
- If you get a 418 from a real service, read the body — it is a custom signal (often a bot block).
SEO impact
Treated like any other 4xx: the page is not indexed. Never serve it to crawlers on real pages.
Example 418 response
HTTP/1.1 418 I'm a teapot
Content-Type: text/plain
I refuse to brew coffee.
Related status codes
Check or look up another code
Search and filter every code in the HTTP Status Codes tool, browse the full list by class, or read HTTP status codes explained: the complete developer guide.
Open HTTP Status Codes tool →All status codesFrequently asked questions
What does HTTP 418 mean?
HTTP 418 I’m a teapot is a 4xx Client Error status code. An April Fools’ joke code from the Hyper Text Coffee Pot Control Protocol; reserved and unused in HTTP.
Is 418 a real HTTP status code?
It is not part of HTTP semantics. It was defined for the joke HTCPCP protocol (RFC 2324) and RFC 9110 reserves 418 as “(Unused)”.
Which specification defines 418?
It is defined in RFC 2324 (HTCPCP); listed as “(Unused)” in RFC 9110 §15.5.19.
Is a 418 response cacheable?
Not by default. A 418 response is only stored by caches when it carries explicit freshness information such as Cache-Control: max-age or Expires.