---
type: "Article"
title: "418 I'm a teapot: the HTTP status code that refuses to brew coffee, and why it will never be deleted"
description: "Where HTTP 418 came from (an April Fools RFC in 1998), how a fifteen-year-old saved it from deletion in 2017, why RFC 9110 now reserves it forever, the other status codes with a sense of humour, and why laurelinlabs.com/coffee refuses to brew."
resource: "https://www.laurelinlabs.com/blog/418-im-a-teapot"
tags: ["418-i-m-a-teapot", "technical-seo-foundations"]
generated: { by: "laurelin-site-build/2026-08-25", at: "2026-08-25T12:00:00+00:00" }
status: "stable"
stale_after: "2027-02-25T00:00:00+00:00"
---
# 418 I'm a teapot: the HTTP status code that refuses to brew coffee, and why it will never be deleted

Published 2026-08-26. Author: [Piers Butler](/entities/piers-butler.md).

HTTP 418 I'm a teapot is the status code a server returns when asked to brew coffee and it is, permanently, a teapot. It was defined on 1 April 1998 in RFC 2324, the Hyper Text Coffee Pot Control Protocol, an April Fools document by Larry Masinter, extended to tea by RFC 7168 in 2014, and nearly removed from Node.js, Go and Python in August 2017 until a fifteen-year-old's save418.com campaign persuaded the HTTP working group chair to reserve it instead. RFC 9110 now lists 418 as unused so it can never mean anything serious. This site returns it at /coffee.

## FAQ

### Is HTTP 418 a real status code?

It is real in the sense that matters: RFC 9110, the current HTTP semantics standard, reserves 418 so it can never be assigned non-joke semantics, and most HTTP libraries know its name. It was never a standard error condition; it comes from RFC 2324, an April Fools protocol for coffee pots published in 1998.

### Should a production website ever return 418?

Only where a joke is acceptable and no client depends on the answer. Some sites use it for automated requests they refuse to serve, which works because crawlers treat any 4xx as an error. Never use it in place of a meaningful code such as 403, 404, 429 or 503, and keep 418 endpoints out of the sitemap and marked noindex, as laurelinlabs.com/coffee is.

### What other HTTP status codes are jokes or Easter eggs?

451 Unavailable For Legal Reasons is official (RFC 7725) and named after Fahrenheit 451; 420 Enhance Your Calm was Twitter's rate-limit code from Demolition Man; 444 is nginx closing the connection silently; 999 is LinkedIn refusing scrapers from outside the defined range; and the unofficial 7xx list includes 725 It works on my machine. 402 Payment Required is real but has been reserved for future use since 1997.

Hub: [Technical Foundations](/topics/technical-foundations.md)
