418 I'm a Teapot
The story of HTTP 418 — the April Fools' HTCPCP status code that became the web's favorite easter egg — plus what actually happens when Google meets a 418, and why a WAF returning it on real pages is a problem.
1 evidence signal on this page
- Related live toolHTTP Status & Redirect Checker
HTTP 418 I'm a teapot is a joke status code from the 1998 April Fools' HTCPCP RFC (RFC 2324): a teapot asked to brew coffee must refuse, because it's a teapot. It never got ordinary HTTP application semantics, but it's not 'unassigned' — RFC 9110 formally reserves the code, and IANA's registry lists it as (Unused), not available for ordinary reuse. A 2017 attempt to reclaim it lost to a 'save 418' campaign. Google's dated 2023 guidance treats 418 like any other non-429 4xx for Search, and its current generic crawler-status page doesn't cover exotic codes like this one at all. That only matters in practice when a WAF or bot-protection layer uses 418 to block requests (some do) and accidentally serves it to Googlebot — audit for it like any other 4xx. This site's /coffee URL returns a genuine 418, per the RFC.
TL;DR —
418 I'm a teapotis the web’s best-loved joke status code. It comes from RFC 2324, an April Fools’ RFC about coffee pots, and never got ordinary HTTP application semantics — but it’s formally reserved, not unassigned, per RFC 9110 and IANA’s registry. Google’s dated 2023 guidance treats it like any other non-429429 Too Many Requests is an HTTP client-error status code that means a client sent too many requests in a given time window — a mechanism called rate limiting. Unlike other 4xx codes, Google treats 429 as a server-overload signal and slows crawling instead of removing content. 4xx: the URL doesn’t get indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.. Try it on this site: /coffee answers with a real 418 — check the network tab.
Where 418 comes from
On April 1, 1998, the IETF published RFC 2324: the Hyper Text Coffee Pot Control
Protocol (HTCPCP/1.0) — a fully specified, entirely satirical protocol for
controlling coffee pots over the web. Among its contributions: the BREW method,
the Accept-Additions header (milk, syrup, whisky), and one immortal status code:
Evidence for this claim RFC 2324 introduced 418 as an April Fools' status code for a teapot that refuses to brew coffee. Scope: The original 1998 Hyper Text Coffee Pot Control Protocol joke specification. Confidence: high · Verified: IETF: RFC 2324 §2.3.2 — 418 I'm a teapot418 I’m a teapot — “Any attempt to brew coffee with a teapot should result in the error code ‘418 I’m a teapot’. The resulting entity body MAY be short and stout.”
That’s the whole joke: you asked a teapot for coffee. It can’t. It’s a teapot.
Sixteen years later, RFC 7168 revisited the idea for tea-brewing appliances — another Informational, April Fools’ RFC, this one distinguishing an appliance that’s temporarily out of coffee from one that’s a teapot, permanently. Neither RFC gives 418 ordinary HTTP application semantics; both describe HTCPCP, a satirical protocol, not core HTTP.
Why it never became real HTTP
418 was never assigned ordinary HTTP semantics — but it’s not “unassigned” either.
RFC 9110, the current HTTP Semantics specification, formally reserves the
code (citing how often it’s been deployed as a joke), and the IANA HTTP Status
Code Registry lists 418 as (Unused), referencing RFC 9110 — not available for
ordinary reuse. Evidence for this claim RFC 9110 reserves status code 418, citing how often it has been deployed as a joke, and leaves open the possibility of assigning it a different meaning in the future if circumstances require it. Scope: Current HTTP Semantics reservation; RFC 9110 does not make 418 a normal production status, but does not permanently foreclose future reassignment. Confidence: high · Verified: IETF: RFC 9110 §15.5.19 — 418 (Unused) In 2017 the IETF’s HTTP
working group proposed cleaning it up so the code could be reassigned to something
useful. The internet responded with a “Save 418” campaign, and the reservation
held — RFC 9110 also leaves the door open to reassigning it later if circumstances
ever require it. Evidence for this claim The IANA HTTP Status Code Registry lists 418 as "(Unused)" and references RFC 9110; it is not an unassigned number available for ordinary reuse. Scope: IANA's current registry entry for status code 418. Confidence: high · Verified: IANA: HTTP Status Code Registry — 418
That reservation didn’t stop implementers: Go’s net/http and Python’s http
module both expose a named 418 constant (StatusTeapot, HTTPStatus.IM_A_TEAPOT),
and other frameworks and platforms have followed suit as an easter egg — Google’s
own google.com/teapot among them. Evidence for this claim Go's net/http and Python's http module both expose a named 418 status constant, showing implementation recognition without requiring servers to emit 418. Scope: Named constants in two mainstream standard libraries; not evidence of a default response. Confidence: high · Verified: Go: net/http status constants (StatusTeapot) Python docs: http.HTTPStatus.IM_A_TEAPOT
A named constant doesn’t mean a framework emits 418 by default; it means the code is
recognized, not that it carries assigned HTTP semantics.
What a 418 means for SEO
Nothing special — and that’s the point worth knowing. Google doesn’t parse the joke; a named February 2023 Search Central post says all 4xx responses except 429 get the same treatment in Search: previously indexed URLs get removed over time and the page’s content isn’t used. Evidence for this claim Google's Search Central blog states that all 4xx responses except 429 receive the same treatment for Search: content isn't used and previously indexed URLs are removed over time. Scope: Google Search's dated, named statement on 4xx handling (not 418-specific). Confidence: high · Verified: Google Search Central Blog (Feb 2023): Don't use 403s or 404s for rate limiting That’s a general 4xx statement, not a teapot-specific rule — Google’s current generic crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index.-status page explicitly says exotic statuses like 418 aren’t covered by its table. Evidence for this claim Google's current generic crawler-status-code page states that exotic statuses such as 418 are not covered by its table. Scope: Scope note limiting Google's generic HTTP-status guidance to common codes. Confidence: high · Verified: Google: How HTTP status codes affect Google's crawlers In practice, a 418 behaves like another non-429 4xx as far as indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. goes; there’s no teapot-specific ranking rule, deindexingDeindexing means getting a URL to stop appearing in Google's search results. There's no single delete button — the right method depends on whether you own the page, whether removal is temporary or permanent, and whether the content should still exist. timeline, or recovery guarantee beyond that general statement.
Where this stops being funny: some WAF and bot-protection configurations use 418 as their “blocked request” response, on the theory that it’s distinctive and easy to spot in logs. If such a rule misfires on GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer., your real pages start answering 418 — and they’ll be treated exactly like pages that don’t exist.
If you see 418s in server logsLog file analysis is reading a web server's raw access logs to see exactly which URLs search engine crawlers actually requested, when, how often, and what status code they got. Unlike crawl tools or Search Console, logs are the unsampled, ground-truth record of what really happened. or crawl reports on URLs that matter, the status code alone doesn’t tell you which layer generated it — application code, a framework default, a WAF or bot-protection rule, a CDN, or the origin server can all produce it, and a response can pass through several of those on its way to the client. Check configuration, response headers, and request-path logs at each layer to find the actual source, then fix it like any other unwanted 4xx on an indexable URL.
The one on this site
In the spirit of the RFC, /coffee on this site returns an actual 418, short and stout, straight from the edge. This page exists so that easter egg has a canonical explanation — and so the http-status-codes cluster covers the one status code people actually smile about.
Patrick's relevant free tools
- Website Down Checker — Check whether one URL or a small sample is reachable right now from one Cloudflare location, with response timing, redirects, DNS fallback evidence, and connection-status details.
- Googlebot Verifier — Check whether an IP claiming to be Googlebot, Bingbot, GPTBot, ClaudeBot, or another crawler is genuine — published IP ranges plus forward-confirmed reverse DNS, with the real network owner named for spoofers. IPs are checked in memory and never stored.
- Raw vs. Rendered HTML Checker — See what's in your page's initial HTML versus after JavaScript runs — headless-Chrome rendering only when the page actually needs it, a rendering-strategy verdict (SSR / prerendered / CSR / hybrid), ~15 calibrated JavaScript-SEO checks (noindex, canonicals, robots.txt blocking, links, soft 404s), a side-by-side raw-vs-rendered diff, and shareable reports.
Tools for finding an unexpected 418
- Bulk HTTP Status Code Checker: scan a URL set for 418 responses and distinguish the intended easter egg from real pages being blocked by a WAF or botA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index.-protection rule.
- HTTP Header Checker: inspect CDN and security headers for clues about which layer generated the response.
- Browser DevTools Network panel: verify the raw status on the request instead of relying on the visible error-page text.
- curl: run
curl -i https://example.com/pathto capture the status, headers, and any response body without a logged-in browser session. - CDN/WAF security events: if 418 appears on a page that should be indexable, correlate the request time and URL with the rule that fired before changing it.
418 I'm a teapotoriginates in RFC 2324 (HTCPCP), an April Fools’ RFC from 1998; it signals that a teapot was asked to brew coffee. RFC 7168 revisited it in 2014 for tea-brewing appliances.- It’s not “unassigned”: RFC 9110 formally reserves 418, and IANA’s
registry lists it as
(Unused)— a status the internet fought to keep, not one nobody claimed. A 2017 effort to reclaim the code was abandoned after the “Save 418” campaign. - Go and Python both expose a named 418 constant; other frameworks and platforms
implement it as an easter egg (Google has its own at
google.com/teapot) — but a constant doesn’t mean a framework emits 418 by default. - SEO impact: a named February 2023 Google Search Central post treats every non-429429 Too Many Requests is an HTTP client-error status code that means a client sent too many requests in a given time window — a mechanism called rate limiting. Unlike other 4xx codes, Google treats 429 as a server-overload signal and slows crawling instead of removing content. 4xx the same in Search — a URL answering 418 isn’t indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed., same as a 404; Google’s current generic crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index.-status page doesn’t cover exotic codes like 418 at all.
- Practical risk: an unexpected 418 could come from the app, a framework default, a WAF/bot-protection rule, a CDN, or the origin — check headers and logs at each layer to find the source before fixing it like any other 4xx.
- This site returns a genuine 418 at /coffee.
418 I'm a teapot
A joke HTTP status code from the 1998 April Fools' HTCPCP RFC, meaning a teapot was asked to brew coffee — reserved (not unassigned) by RFC 9110 and listed (Unused) in IANA's registry, widely implemented as an easter egg, and treated by Google like any other non-429 4xx client error.
Related: 404 Not Found, 410 Gone
418 I'm a teapot
HTTP 418 I’m a teapot comes from RFC 2324 — the Hyper Text Coffee Pot Control Protocol (HTCPCP), an April Fools’ RFC published on April 1, 1998. Per the spec, a teapot that receives a request to brew coffee “may return” 418 I'm a teapot, because it is, permanently and definitionally, a teapot.
It never got ordinary HTTP application semantics — but it’s not “unassigned” either. RFC 9110, the current HTTP Semantics spec, formally reserves 418 (citing how often it’s been deployed as a joke), and the IANA HTTP Status CodeAn HTTP status code is the three-digit number a server returns with every response to tell a browser or crawler what happened to its request — success, redirect, client error, or server error. For SEO the code matters as much as the content: it tells Google and Bing whether to index a page, follow a redirect, retry later, or drop the URL from the index. Registry lists it as (Unused), referencing RFC 9110. A 2017 IETF proposal to reclaim the code triggered a “save 418” campaign and the reservation held — RFC 9110 also leaves the door open to reassigning it later if circumstances require it. Go’s net/http and Python’s http module both expose a named 418 constant; other frameworks and platforms implement it as an easter egg.
For SEO, the treatment is boring in the best way: a named February 2023 Google Search Central post says every 4xx except 429429 Too Many Requests is an HTTP client-error status code that means a client sent too many requests in a given time window — a mechanism called rate limiting. Unlike other 4xx codes, Google treats 429 as a server-overload signal and slows crawling instead of removing content. gets the same treatment in Search, so a URL answering 418 won’t be indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. — same practical effect as a 404 — though Google’s current generic crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index.-status page doesn’t cover exotic codes like 418 in its table at all. If a page you care about is somehow returning 418, the status code alone won’t tell you which layer produced it (app, framework, WAF, CDN, or origin); check configuration, headers, and logs to find the source, then fix it like any other 4xx on an indexable URL. Try it live on this site: /coffee answers with a genuine 418.
Related: 404 Not Found, 410 Gone
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Revision history
Compare the published article with an archived editorial snapshot. Added and removed words are shown only after you open a comparison.
Updated Jul 17, 2026.
Editorial summary and recorded change details.Summary
Corrected 418's standards status and added owner diagnostics for unexpected responses.
Change details
-
Narrowed the implementation examples to verified Go and Python constants and clarified that a named constant does not make 418 a default framework response.
Try it live
This is a real endpoint on this site — not a simulation.
Hit it from the button, open it in a new tab, or
curl -i it from your terminal, and the server answers with the actual status code this article is about.