What is the 418: I'm a teapot HTTP Status Code all about?
If you look through the full list of HTTP status codes, you'll see one that really stands out: "418: I'm a teapot". So what's that all about? I'll explain in a bit. But first, a really quick introduction on status codes.
Whenever any page or file is accessed on your site (whether it’s a user accessing it in a browser or a search engine crawling a page), your server returns an HTTP status code in response to the request and it provides information about the status. For example, some popular codes are “301 Page Moved Permanently” and the ever ubiquitous “404 Page Not Found”.
So, what’s the "418 I'm a teapot" all about? Well, the group of people who make these codes and set the standards is the IETF or "Internet Engineering Task Force". To propose new standards, the members release RFC’s or "Requests for Comments" to the community. Every year since 1989, they release a few humorous RFC’s for April’s Fool Day and on April 1st, 1998, RFC 2324 introduced the "Hyper Text Coffee Pot Control Protocol" or (HTCPCP/1.0). This was a brand new protocol for controlling, monitoring, and diagnosing coffee pots. Now, the RFC is pretty funny with lines like "Coffee pots heat water using electronic mechanisms, so there is no fire. Thus, no firewalls are necessary". If you have never read it, it’s definitely worth a read. I added a link in the description below. Now, you may be asking, if this is a COFFEE protocol, why the "teapot" code? This is answered in Section 2.3.2. in that "Any attempt to brew coffee with a teapot should result in the HTTP error code 418 I'm a teapot and the resulting entity body MAY be short and stout". And just like that the "418 I’m a teapot" code was born! Since then, it's been used in all sorts of wacky ways. Google even referred to "418" as a different error in their 2013 April Fool's Joke "Google Nose" saying that "418: Scent transfer protocol error" indicates system congestion; please try again later.
But should you ever use it? Obviously with any server-side scripting language, you can pass whatever headers and status codes you want, including “418 I’m a teapot”. And any page you add this to should load just fine in any browser. But remember that 418 was made to signify "an error" which is why it was made a 400 series code, just like how 404 is an error. But how do search engines react when they see 418? In a very unscientific test, I took two of my pet projects I keep around to test these sort of things and changed them so they returned the 418 I’m a teapot code on every page. I then waited a few weeks, made sure that Google reindexed and then checked the result.
What happened...? Did it go down in rank? Did it get delisted because of the error code? Did it go up in page rank??...
Nope! Absolutely nothing happened. It seemed that Google ignored the 418 code.
So, if it loads fine in browsers and Googlebot didn’t seem to care, why shouldn’t you use 418, even if solely as a goof? The reason is simple: it’s terrible practice. If the page being requested is a valid page, you should allow your server to throw it’s ordinary 200 OK status code. Even if Google doesn’t count the 418 as a true "error", I didn’t test in other search engines who, instead of treating 418 as 200, it might just treat it as 404. (In which case, your site will be delisted because now it’s "not found"). In reality, the only time you should be using the 418 code, is if your server really is a teapot trying to make coffee.