Simple alternatives to CAPTCHA

Google announced yesterday that it’s come up with a great new way of avoiding the need for website visitors to fill out the CAPTCHA; the ubiquitous “type the letters from the image into the following field” feature of many online forms. Instead, they propose a simpler interaction based on the Turing Test principle: that some choices can only be logically made correctly by humans, not by machines.

The reason for the CAPTCHA is that there are a large number of “robots” online, which have been programmed with the inexplicable task of filling out online contact and comment forms with nonsense and submitting them automatically. The CAPTCHA helps to stem these automated submissions by adding visual elements, which the visitor has to understand and copy into a field, thereby proving that it’s not a robot at work.

The CAPTCHA is a clever but over-complicated solution and is usually made unusable by having completely illegible images, which not even a human can correctly decipher. That leads to frustration and a bad user experience – one which is created by putting the technical problems ahead of the needs of the website visitor.

A better solution than the CAPTCHA is that the interaction can be made easier by asking the visitor a simple question. Google’s variation seems to be the analysis of how the visitor interacts with a simple checkbox, with which the visitor can confirm “I’m not a robot” by matching two photos. Clever. But flawed, when the visitor is visually impaired.

Human or robot?

A human can easily read options and select the correct one

An easier option which web developers can add to their forms is the simple selection from a set of options. By offering two or more options via HTML radio buttons – “I am a robot” being selected by default, and a (correct) second option “I am a human” – which the server then counter-checks.

By comparing the selected option with a pre-defined value on the server, the submission can be validated. (By using radio buttons, only one option can be submitted to the server, and the wrong choice will cause the form to fail.) This technique is pretty easy to implement in a custom form function, and existing CMS solutions can easily be extended via plugins to recognize this feature too.