HTTP 418 I'm a Teapot

HTTP 418 I'm a Teapot is a joke status code defined in RFC 2324, the "Hyper Text Coffee Pot Control Protocol" (HTCPCP), published on April 1, 1998. The code indicates that the server refuses to brew coffee because it is, permanently, a teapot. Despite being an April Fool's joke, 418 was preserved in HTTP implementations and is IANA-assigned.

HTTP 418 full guide โ†’

Quick reference

Code418
NameI'm a Teapot
Category4xx Client Errors
SpecificationRFC 2324 (Hyper Text Coffee Pot Control Protocol)
IANA statusAssigned
CacheableNo
Client actionThe server refuses to brew coffee. This is intentionally humorous โ€” if you see it unexpectedly, it may indicate a custom refusal response.
In-depth guideHTTP 418 full guide โ†’

What HTTP 418 means

RFC 2324 defines 418 I'm a Teapot as the error code returned when a client attempts to brew coffee with a teapot. The Hyper Text Coffee Pot Control Protocol (HTCPCP) is a humorous extension to HTTP designed for controlling, monitoring, and diagnosing coffee pots. RFC 2324 was published on April 1, 1998 as a joke โ€” but it is a legitimate IETF publication with a real RFC number.

Despite its origins as an April Fool's joke, 418 persisted in HTTP implementation and tooling. It was preserved in IANA's status code registry and appears in HTTP libraries across languages. Attempts to officially remove 418 from the registry have been unsuccessful โ€” the developer community successfully argued for its preservation as part of HTTP culture.

The full protocol RFC 2324 includes headers like Safe: yes (indicating the coffee is safe to drink) and Accept-Additions: (for milk, sugar, and flavor additions). It also defines the BREW and WHEN HTTP methods.

Real-world uses of 418

418 is used by developers and organizations as a deliberate signal in specific scenarios:

Refusing bots and scrapers

Some APIs return 418 to indicate that the request has been identified as coming from a bot or automated scraper that violates terms of service โ€” humorously signaling "we know what you are, and we refuse." Google's search API used to return 418 for certain rate-limited bot requests.

Easter eggs

Developer-focused APIs and sites often include 418 responses as Easter eggs for developers who explore unusual endpoints or send unusual requests. Google.com returns 418 for the path /teapot.

Custom refusal messages

Teams that want to explicitly refuse a class of requests without implying a more meaningful error (like 403 which implies real authorization logic) sometimes use 418 as a lighthearted but clear "we refuse" signal.

Marking deprecated endpoints

Some teams use 418 humorously to mark endpoints that exist but are intentionally not operational โ€” a placeholder that communicates "this endpoint is here but does nothing" in a way that stands out from the standard 404 or 501.

The preservation debate

In 2017, Mark Nottingham proposed removing 418 from the IANA HTTP status code registry on the grounds that the registry should only contain production-usable codes. The developer community responded strongly against removal, arguing that 418 is part of HTTP's cultural heritage and that its inclusion in real implementations makes removal disruptive rather than clarifying. IANA retained 418. RFC 9110 (the current core HTTP spec) preserves 418 as assigned.

FAQ

What does HTTP 418 I'm a Teapot mean?

HTTP 418 is a joke code from RFC 2324, an April Fool's RFC defining a protocol for controlling coffee pots. The code means "this is a teapot; I will not brew coffee." In practice, it is used as a humorous refusal code or Easter egg.

Is 418 an official HTTP status code?

It is IANA-assigned, which means it is officially registered, but it originates from an experimental/humorous RFC (2324) rather than a normative HTTP specification. RFC 9110 lists it as assigned.

Why does Google return 418?

Google added a 418 response to google.com/teapot as an Easter egg โ€” a nod to the HTTP joke tradition. It serves the expected teapot content with appropriate visual flair.

Can I use 418 in my API?

You can โ€” but be thoughtful. Using 418 for humor in developer tooling or as a bot refusal signal is common. Using it in a customer-facing API to signal a real error condition is confusing and non-standard. If you need a clear refusal code, use 403.

Related resources

On this site: HTTP 418 I'm a Teapot โ€” full guide ยท HTTP 400 Bad Request ยท HTTP 403 Forbidden ยท All 4xx client errors

Standards: RFC 2324 (HTCPCP) ยท IANA HTTP Status Code Registry ยท MDN Web Docs: 418