418 I'm a teapot
Asking a teapot to brew coffee results in the 418 I'm a teapot status code, an April Fools' joke from the IETF.
Usage
The 418 I'm a teapot error message was designed as one of the IETF April Fools' jokes. The RFC states any teapot asked to brew coffee responds with this message. Specifically, the resulting message body is described as short and stout.
Although this status code is not used in production, many HTTP libraries support the code. An effort to remove this status code so the number is available for official use was met with resistance and led to the Save 418 initiative. The message and status code remain.
Status code reservation
The HTTP specification reserves status code 418 as "(Unused)" to avoid conflicts with widespread HTCPCP implementations.
SEO impact
Search engines like Google will not index a URL with a 418 I'm a teapot response status. URLs previously indexed will be removed from search results.
Example
The client requests coffee to be brewed, but the teapot objects.
Request
BREW coffee HTTP/1.1
Host: www.example.re
Content-Type: message/coffeepot
Content-Length: 5
start
Response
HTTP/1.1 418 I'm a teapot
Content-Type: text/html
Content-Length: 146
<html>
<head>
<title>Beverage not supported</title>
</head>
<body>
<p>This is a teapot. Coffee is not supported.</p>
</body>
</html>
Triggering a 418 response
A 418 response is returned only by servers
configured to support the HTCPCP joke protocol
or by applications explicitly returning this
code. Google returns 418 at
google.com/teapot as an easter egg. Many web
frameworks allow returning 418 by setting the
response status code directly. No standard HTTP
server returns 418 without deliberate
configuration.
History of 418
The status code originated in 1998 as part of an April Fools' Day specification for the Hyper Text Coffee Pot Control Protocol (HTCPCP). A companion specification extending HTCPCP for tea followed in 2014. When the IETF considered reclaiming the code for official use in 2017, the developer community objected and launched the Save 418 movement. The IETF ultimately reserved the code as "(Unused)" in the main HTTP specification.
Code references
.NET
StatusCodes.Status418ImATeapot
Rust
http::StatusCode::IM_A_TEAPOT
Go
http.StatusTeapot
Symfony
Response::HTTP_I_AM_A_TEAPOT
Python3.9+
http.HTTPStatus.IM_A_TEAPOT
Angular
@angular/common/http/HttpStatusCode.ImATeapot
See also
- RFC 2324: Hyper Text Coffee Pot Control Protocol
- RFC 7168: The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances
- HTTP status codes
- HTTP headers