Quand un test « je ne suis pas un robot » en image est présent, existe-t-il un autre moyen d'accéder au même service sans avoir à voir l'image ?
Critère officiel 1.5 — Pour chaque image utilisée comme CAPTCHA, une solution d’accès alternatif au contenu ou à la fonction du CAPTCHA est-elle présente ?
Pourquoi c'est important
Sans solution alternative, une personne aveugle est définitivement bloquée face à un test visuel. Elle ne peut pas accéder au service, même si elle est habituée à utiliser le web avec son logiciel de lecture.
Exemples concrets
Ce qui est conforme
Le formulaire de réservation de salle affiche un test visuel ET un bouton « Écouter le test audio » pour les personnes qui ne peuvent pas voir les images. Les deux mènent au même résultat.
Ce qui pose problème
Le formulaire de demande d'acte d'état civil n'utilise qu'un test visuel sans aucune alternative. Les personnes aveugles ou malvoyantes ne peuvent pas effectuer leur démarche en ligne.
Comment agir
La voie la plus directe est de supprimer le CAPTCHA visuel — pas de le corriger. Demandez à votre prestataire de le remplacer par un piège invisible pour les robots (honeypot) ou une question textuelle simple. Ces solutions protègent aussi bien contre le spam, sans bloquer aucun utilisateur.
Règles clés
- Proposer au minimum deux formes de CAPTCHA (visuel + audio).
- L'alternative doit être accessible au clavier et aux AT.
- Recommandation forte : éliminer les CAPTCHA au profit de honeypot ou reCAPTCHA v3 invisible.
Erreurs fréquentes
- CAPTCHA uniquement visuel, sans alternative audio ni autre option
- Alternative audio présente mais non accessible au clavier
- reCAPTCHA v2 sans alternative pour les utilisateurs qui échouent la vérification visuelle
Exemples de code
CAPTCHA sans alternative
✗ Non conforme<img src="captcha.png" alt="Code de sécurité">
<input type="text" name="captcha"
aria-label="Recopiez le code">Aucune alternative pour les utilisateurs qui ne peuvent pas lire l'image. Accès bloqué.
Honeypot — solution sans CAPTCHA recommandée
✓ Conforme<!-- Champ honeypot masqué : rempli par les bots,
ignoré par les humains -->
<input type="text" name="website"
tabindex="-1"
aria-hidden="true"
autocomplete="off"
style="display:none">Le honeypot est invisible pour les humains (display:none + tabindex=-1) mais visible pour les bots. Aucune friction pour l'utilisateur — accessible par définition.
Référence WCAG : 1.1.1