08/21/2014

example of an inaccessible image captcha: the words

Lots of websites have a real and urgent need to keep bots and spammers off their sites. One partial solution is the CAPTCHA.

What Is a CAPTCHA, and Can It Be Accessible?

Really, a CAPTCHA is any technique that can be used to tell a computer (bot) from a human. But the most common technique is to put a fuzzy bunch of characters on the page and ask the user to type them into an edit field. A human, theoretically, can decipher the fuzzy characters, but a bot cannot. This has some obvious flaws in it, even if you've never seen these things (or didn't know what they were, more likely).

First, if you are a human who can't see very well, or can't type very well, can you do this? The CAPTCHA even keeps away people who don't think they have a visual impairment, just have normal trouble with tiny, fuzzy, low-contrast text. If you have to say "Wait, let me go get my glasses," you know someone who really has low vision is going to be stuck.

What about assistive technology? Can the CAPTCHAs be read by a screen reader? No. How about putting a civilized alt tag on the image of text? No. Remember, the sites who use them are trying to keep away bots. So, anything machine-readable would be easily defeated by the bots.

Some sites have put up an audible CAPTCHA. The idea is to hit a button or link, listen to some audio, and type what you hear into the box. The audio is made very hard to understand, a and there are usually several voices saying numbers and letters, so it is hard for a human to know what to type and what to ignore. This is intended to defeat the bots, of course, but it defeats humans, too. Users who don't have good hearing, don't have audio on their computers, or lack typing skill, are cut out, along with those in noisy environments.

So, is this really a bleak situation?

No, we have a solution. If you comment on this blog post, you'll see an accessible CAPTCHA in action.

How Does an Accessible CAPTCHA Work?

Here's how ours works—evil bots, go away, don't read this!

We have a teeny list of questions and answers. The questions have to be really easy, so that a user who has a reasonable ability to use this site would be able to answer the question. The answers have to be easy, and no ambiguous spelling options are allowed. For example, we can never have "good bye" as the answer, because there are 211 ways to spell it. (I made that number up.)

So, we might have:

Please type "hello" here.

Or:

Please put the word horse in the box.

We have to vary the structure of the sentence, so that a determined bot programmer cannot simply say to pull the word out of the quotes and put it into the box. And, we have to have enough of them that the bot can't put "horse" into the box and be correct every fifth time.

Advantages of This System Over the Image-of-Fuzzy-Text Approach

It can be made to be any color or any size by the user. So, someone with low vision can make it readable along with the rest of the site, no special technique or knowledge required.

The screen reader user hears the clue just like the rest of the site's text, and can read the clue word-by-word or character-by-character if necessary to see exactly what is wanted.

Users of braille displays sees the accessible CAPTCHA on the braille display just as they do any other text, making this technique work just as well for deaf-blind users as for any user.

In other words, the amount of knowledge, skill, visual acuity, and computer access for the CAPTCHA is the same as for the rest of the site.

Is This a Perfect Solution?

It is still an obstacle to some human users, in particular those who use screen readers and have low literacy skills. Some of our users don't know how to spell "senior" and they don't know how to get their screen readers to tell them the details. People for whom English is not their native language have also had trouble with our CAPTCHAs—we avoid using color names, as users sometimes interpret "Type the word 'blue'" as "Type the word that is blue," and are frustrated (and angry, as you might imagine).

And, we have to continually update our list of clues and answers, so the bots don't catch on. We have to test new pairs with users, so we can be sure we haven't inadvertently introduced complexity.

Please comment on the blog or post on the message boards, and see what you think of our little CAPTCHA!