HTTP Status Codes: The Infamous 418

Gregor Maclaine
14th March 2019

I am certain that at some point everyone reading this has come into contact with an HTTP status code. This would generally be the standard 404 – the 'page could not be found' error, or the less common 401 – 'not authorised'. Most people will see these and dismiss them and not really look into what they are and why they are used, however, this article should change some of that.

HTTP status codes are issued by a server after a request is sent by the client. This code will tell the client how the request was received and if there were any errors handling it. These codes are 3-digit numbers which begin with a number from 1-5 (inclusive). These codes are split up into 5 classes each preceded by their number.

  • 1xx (Informational) – The request was received, action still running
  • 2xx (Successful) – Everything went as planned, nothing to worry about
  • 3xx (Redirection) – Request worked, but more action is required
  • 4xx (Client Error) – The request was not valid or was not allowed to take place
  • 5xx (Server Error) – The request was valid, but something went wrong with the server

This is all very interesting, however, the (arguably) best status code, and the reason for me writing this, is my discovery of the client error 418. The name corresponding to the 418 error is ‘I’m a teapot’. Now, this at first seems confusing, and to be honest, a joke. But the fact is, it was added to be just that, a joke, this error was implemented as one of the traditional IETF April Fools' jokes in the RFC (Request for Comments) 2324.

Taking it back for a second, the IETF, or Internet Engineering Task Force, is an organisation under the Internet Society, which handles and defines the protocols used by the internet such as TCP/IP (‘IP’ being the IP in IP address). TCP/IP specifies how information should be handled over a network, that being how it should be broken in packets, addressed, transferred, routed, and received at its destination. These defined rules have to stay constant so that different networks know what to do and what the information is when receiving it, therefore these are defined in rules collected in ‘Requests for Comments’ (RFC).

Now, what is the actual background to the error 418? This error was created for the ‘Hyper Text Coffee Pot Control Protocol’ or simple HTCPCP, a protocol used for controlling, monitoring, and diagnosing coffee pots. This protocol was written into the RFC 2324 by Larry Masinter as a joke, but it is actually used and implemented into some things, such as the text editor, Emacs.

There have also been many bug reports to Mozilla, which people complaining that they have not added any functionality to the protocol. 10 years after this protocol was established there was an update, as after the World Wide Web Consortium (W3C) published their “HTTP Vocabulary in RDF”, the Web-Controlled Coffee Consortium (WC3) published the first draft of their "HTTP Vocabulary in RDF". And then again on April Fools’ Day for 2014, RFC 7168 fully finished the protocol to completely handle teapots.

However, there is a sad side to this story. Many companies are removing compatibility with this protocol as they believe that it is useless. Mark Nottingham pushed for this to be removed from many different services such as Node.js servers and the programming language Go. However, this was resisted by a 15-year-old programmer, called Shane Brunswick, who made the website, which praises the protocol and explains why it is not useless. This website and the hashtag #save418 gained a lot of attention and many of the previously mentioned services ended up keeping this protocol. This comes to show us that even individuals, as young as ourselves, can accomplish great tasks, by simply applying effort and attention in the matter. So hopefully, this will rouse some of you to do something big, or small, which has an effect.