Chapitre 1218 minDébutant
Accessibilité web : RGAA et WCAG en pratique
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- expliquer pourquoi l'accessibilité concerne tout le monde, et ce que la loi impose ;
- situer les référentiels WCAG 2.2 et RGAA 4.1 ;
- vérifier les points essentiels d'une page, au clavier et au lecteur d'écran ;
- auditer une page avec les bons outils et rédiger une déclaration d'accessibilité.
4 exercices corrigés
L'accessibilité numérique consiste à rendre un site utilisable par toutes les personnes, quel que soit leur handicap (visuel, auditif, moteur, cognitif) et les aides techniques qu'elles utilisent. En France, elle se vérifie avec le RGAA (référentiel général d'amélioration de l'accessibilité), construit sur le standard international WCAG du W3C ; elle est obligatoire pour les services publics, les grandes entreprises et, depuis le 28 juin 2025, pour de nombreux services en ligne du secteur privé. Ce chapitre explique les obligations, les référentiels, les vérifications à faire sur chaque page et les outils de test.
Pourquoi l'accessibilité concerne tout le monde
Derrière l'écran, les situations sont très variées :
| Situation | Comment la personne utilise le Web | Ce qui la bloque |
|---|---|---|
| Personne aveugle | un lecteur d'écran (NVDA, JAWS, VoiceOver, TalkBack) lit la page à voix haute ou sur une plage braille ; elle navigue au clavier | images sans alt, boutons sans nom, titres absents, formulaires sans étiquettes |
| Personne malvoyante | zoom ou loupe d'écran, contraste élevé, police agrandie | texte trop pâle, mise en page qui casse au zoom, information donnée par la couleur seule |
| Personne sourde ou malentendante | sous-titres, transcriptions | vidéo sans sous-titres, information uniquement sonore |
| Handicap moteur | clavier seul, contacteur, commande vocale, souris à la tête | élément inaccessible au clavier, focus invisible, cible minuscule, délai trop court |
| Troubles cognitifs, dyslexie | textes clairs, structure régulière | jargon, textes justifiés, navigation incohérente d'une page à l'autre, animations |
Et tout le monde se retrouve un jour dans une situation de handicap temporaire ou liée au contexte : un bras dans le plâtre, un écran de téléphone en plein soleil, une vidéo regardée sans le son dans les transports, l'âge qui fatigue la vue. Un site accessible est un site plus facile pour tous ; il est aussi mieux compris par les moteurs de recherche, qui « lisent » la page à peu près comme un lecteur d'écran.
Ce que dit la loi
Pour le secteur public et les grandes entreprises. L'article 47 de la loi n° 2005-102 du 11 février 2005 impose l'accessibilité des services de communication au public en ligne aux administrations, aux organismes chargés d'une mission de service public et aux entreprises dont le chiffre d'affaires en France dépasse 250 millions d'euros. Ils doivent :
- rendre leurs sites, applications et documents conformes au RGAA ;
- publier une déclaration d'accessibilité et afficher dès la page d'accueil la mention « Accessibilité : totalement / partiellement / non conforme » ;
- publier un schéma pluriannuel de mise en accessibilité (sur trois ans) et un plan d'action annuel.
Depuis une ordonnance de 2023, l'Arcom contrôle ces obligations et peut, après mise en demeure, prononcer une sanction pouvant atteindre 50 000 € pour un service non accessible.
Pour les services du secteur privé (European Accessibility Act). La directive européenne (UE) 2019/882, dite European Accessibility Act, transposée en France par la loi n° 2023-171 du 9 mars 2023 et le décret n° 2023-931 du 9 octobre 2023, s'applique depuis le 28 juin 2025. Elle rend obligatoire l'accessibilité de nombreux produits et services vendus aux consommateurs, notamment :
- le commerce électronique (les sites et applications de vente en ligne) ;
- les services bancaires aux consommateurs ;
- les livres numériques et leurs logiciels de lecture ;
- certains éléments des services de transport de voyageurs (sites, applications, billetterie) ;
- les services de communications électroniques et l'accès aux services de médias audiovisuels.
Les microentreprises qui fournissent des services (moins de 10 personnes et un chiffre d'affaires annuel ou un total de bilan qui ne dépasse pas 2 millions d'euros) en sont exemptées.
WCAG 2.2 et RGAA 4.1 : les référentiels
Les WCAG (Web Content Accessibility Guidelines) sont le standard international, publié par le W3C. La version 2.2 date d'octobre 2023. Elles reposent sur quatre principes, qu'on retient avec le mot POUR :
| Principe | Le contenu doit être… | Exemples de critères |
|---|---|---|
| Perceptible | perçu par au moins un sens | alternatives textuelles, sous-titres, contraste |
| Opérable | utilisable, au clavier notamment | tout au clavier, focus visible, temps suffisant, pas de clignotement |
| Compréhensible | compréhensible | langue déclarée, navigation cohérente, aide à la saisie, messages d'erreur clairs |
| Robuste | interprétable par les navigateurs et les aides techniques | code valide, nom et rôle des composants |
Chaque critère a un niveau : A (minimum), AA (le niveau exigé par la loi, en France comme en Europe) et AAA (renforcé, rarement visé pour tout un site). La version 2.2 a notamment ajouté des critères sur la taille des cibles (au moins 24 × 24 pixels CSS, ou assez d'espace autour), le focus qui ne doit pas être caché par un bandeau collant, et l'authentification sans test cognitif (pouvoir coller son mot de passe, utiliser un gestionnaire).
Le RGAA traduit les WCAG en une méthode de vérification opérationnelle. Sa version en vigueur, la 4.1.2, compte 106 critères répartis en 13 thématiques :
| 1. Images | 2. Cadres | 3. Couleurs | 4. Multimédia |
| 5. Tableaux | 6. Liens | 7. Scripts | 8. Éléments obligatoires |
| 9. Structuration de l'information | 10. Présentation de l'information | 11. Formulaires | 12. Navigation |
| 13. Consultation |
Chaque critère est une question (« Chaque image porteuse d'information a-t-elle une alternative textuelle ? ») assortie de tests précis. Le taux de conformité d'un site donne sa mention : totalement conforme (tous les critères applicables respectés), partiellement conforme (au moins 50 %), non conforme (moins de 50 %, ou aucun audit).
Les points à vérifier sur chaque page
Tu n'as pas besoin de connaître les 106 critères par cœur pour écrire un site accessible. Ces vérifications couvrent la grande majorité des problèmes rencontrés sur les sites des petites organisations :
| À vérifier | Comment | Chapitre |
|---|---|---|
| La langue de la page | <html lang="fr"> | 2 |
| Un titre de page unique et explicite | <title> | 2 |
| Les images | alt pertinent, ou alt="" si décoratives | 3 |
| Les liens | un texte qui dit la destination ; « nouvel onglet » signalé | 3 |
| Les titres | un <h1>, une hiérarchie sans saut | 2 |
| Les zones de la page | header, nav, main, footer ; un lien d'évitement | 4 |
| Les tableaux de données | caption, th, scope | 3 |
| Les formulaires | un label par champ, fieldset et legend, autocomplete, erreurs en texte et reliées au champ | 5 |
| Le contraste | 4,5:1 pour le texte courant, 3:1 pour le grand texte et les éléments d'interface | 6 |
| La couleur | jamais le seul moyen de transmettre une information (« les champs en rouge sont obligatoires ») | ci-dessous |
| Le clavier | tout s'atteint et s'utilise au clavier, dans un ordre logique | ci-dessous |
| Le focus | toujours visible | 6 |
| Le zoom | lisible à 200 %, et sans défilement horizontal à 320 px de large | 10 |
| Le multimédia | sous-titres, transcription, pas de lecture automatique | 3 |
| Les animations | réglage « réduire les animations » respecté, rien ne clignote | 11 |
Pour le contraste, le rapport se calcule à partir de la luminance des deux couleurs ; il va de 1:1 (même couleur) à 21:1 (noir sur blanc). Quelques repères sur fond blanc :
| Couleur du texte | Rapport sur blanc | Texte courant (4,5:1) |
|---|---|---|
#1f2937 (gris très foncé) | 14,7:1 | conforme |
#767676 (gris moyen) | 4,54:1 | conforme, de justesse |
#777777 | 4,48:1 | non conforme |
#999999 (gris clair) | 2,85:1 | non conforme |
#0f766e (vert de la médiathèque) | 5,47:1 | conforme |
Le « grand texte » des WCAG commence à 24 px, ou 18,66 px en gras (environ 18 points et 14 points).
Naviguer au clavier
Essaie : débranche ta souris et parcours ton site. Les touches à connaître :
| Touche | Action |
|---|---|
Tab / Maj+Tab | élément interactif suivant / précédent (liens, boutons, champs) |
Entrée | suivre un lien, activer un bouton |
Espace | activer un bouton, cocher une case |
| Flèches | changer d'option dans un groupe de boutons radio ou une liste déroulante |
Échap | fermer une fenêtre modale ou un menu |
Ce que tu dois constater : chaque lien, bouton et champ reçoit le focus, dans l'ordre de lecture, avec un indicateur bien visible ; aucun piège (un élément d'où l'on ne peut plus sortir au clavier) ; aucun élément cliquable à la souris qui soit inaccessible au clavier.
Les éléments natifs (<a href>, <button>, <input>, <select>, <textarea>, <summary>) sont accessibles au clavier sans rien faire. Un <div> ou un <span> cliquable ne l'est pas : c'est la cause la plus fréquente des problèmes de navigation au clavier. L'attribut tabindex corrige des cas particuliers :
| Valeur | Effet |
|---|---|
tabindex="0" | ajoute l'élément à l'ordre de tabulation, à sa place dans le HTML |
tabindex="-1" | l'élément peut recevoir le focus par script (une fenêtre modale qu'on vient d'ouvrir, le récapitulatif d'erreurs), mais pas par Tab |
tabindex="1" ou plus | à proscrire : bouleverse l'ordre de tabulation de toute la page |
Le lien d'évitement permet de sauter le menu, que l'on devrait sinon traverser à chaque page. Il est caché jusqu'à ce qu'il reçoive le focus :
<a class="lien-evitement" href="#contenu">Aller au contenu</a>
…
<main id="contenu">
.lien-evitement {
position: absolute;
left: 1rem;
top: -10rem; /* hors de l'écran */
padding: 0.5rem 1rem;
background-color: #ffffff;
color: #0f766e;
}
.lien-evitement:focus {
top: 1rem; /* apparaît au premier appui sur Tab */
}
Tester avec un lecteur d'écran
Rien ne remplace dix minutes d'écoute de ta propre page. Les lecteurs d'écran gratuits :
- NVDA sous Windows (gratuit, libre) : touche
Insert(ouVerr. Majselon la configuration) +F7pour la liste des liens, des titres et des repères ;Hpour passer au titre suivant,Dau repère suivant,Fau champ de formulaire suivant ; - VoiceOver, intégré à macOS (
Cmd+F5) et à iOS ; - TalkBack, intégré à Android.
Écoute : le titre de la page est-il annoncé ? Les titres forment-ils un plan compréhensible ? Les images importantes sont-elles décrites, les décoratives ignorées ? Chaque bouton a-t-il un nom ? Chaque champ annonce-t-il son étiquette ? Les erreurs du formulaire sont-elles lues ?
Les outils d'audit
| Outil | Ce qu'il fait |
|---|---|
| Lighthouse (onglet des outils de développement de Chrome et Edge) | un score d'accessibilité et une liste de problèmes détectables automatiquement |
| WAVE (extension et site de WebAIM) | affiche les erreurs directement sur la page : images sans alt, contrastes, titres |
| axe DevTools (extension) | liste détaillée des problèmes, avec le critère WCAG concerné |
| Inspecteur d'accessibilité de Firefox | l'arbre d'accessibilité, le nom et le rôle de chaque élément, une simulation de daltonisme |
| Colour Contrast Analyser (logiciel gratuit) | mesure le contraste de deux couleurs prises à l'écran |
| HeadingsMap (extension) | le plan des titres et les repères de la page |
La déclaration d'accessibilité
Un organisme soumis à l'obligation publie, sur une page dédiée reliée depuis toutes les pages (le pied de page), une déclaration d'accessibilité. Elle indique :
- l'état de conformité au RGAA (totalement, partiellement ou non conforme) et le taux de conformité ;
- les résultats de l'audit : date, référentiel et version, pages testées, outils et technologies d'assistance utilisés ;
- les contenus non accessibles, avec les non-conformités et les éventuelles dérogations (charge disproportionnée, contenus non soumis) ;
- un moyen de contact pour signaler un problème ou obtenir le contenu sous une autre forme ;
- les voies de recours, notamment la saisine du Défenseur des droits.
La DINUM fournit un générateur de déclaration d'accessibilité en ligne. C'est un élément concret à citer dans ta réalisation « présence en ligne » pour l'E5 : la mention dans le pied de page, la page de déclaration, l'audit qui l'a précédée.
Exercices
Exercice 1 sur 4 Mini-audit Réussi À revoir
Trouve les problèmes d'accessibilité de ce fragment et propose une correction pour chacun.
<html>
<body>
<div class="titre">Inscriptions</div>
<img src="banniere.jpg">
<p>Les champs en <span style="color:red">rouge</span> sont obligatoires.</p>
<input type="text" placeholder="Nom" style="border-color:red">
<input type="email" placeholder="E-mail">
<div class="bouton" onclick="valider()">OK</div>
<a href="reglement.pdf" target="_blank">Cliquez ici</a>
</body>
</html>
Voir la réponseMasquer la réponse de l'exercice 1
- Pas de
langsur<html>(critère « langue par défaut ») :<html lang="fr">. Pas de<head>ni de<title>non plus. - Le titre est un
<div>:<h1>Inscriptions</h1>. - L'image n'a pas d'
alt:alt=""si elle est décorative, une description sinon. - L'information « obligatoire » est donnée par la couleur seule : écrire « (obligatoire) » dans l'étiquette du champ et ajouter
required. - Les champs n'ont pas d'étiquette, seulement un
placeholder: un<label for>par champ, etautocomplete="family-name"etautocomplete="email". - Le « bouton » est un
<div>: inaccessible au clavier, non annoncé. Écrire<button type="submit">Envoyer mon inscription</button>, dans un<form>, avec un texte plus explicite que « OK ». - Le lien « Cliquez ici » ne dit pas sa destination et n'annonce ni le nouvel onglet ni le format :
<a href="reglement.pdf" target="_blank" rel="noreferrer">Règlement des ateliers (PDF, nouvel onglet)</a>.
Le rouge red (#ff0000) sur blanc n'atteint d'ailleurs que 4:1 de contraste : insuffisant pour du texte courant.
Tu avais trouvé ?
Exercice 2 sur 4 Conforme ou non ? Réussi À revoir
Dis si chaque association de couleurs respecte le critère de contraste des WCAG (niveau AA) et justifie.
- Texte courant de 16 px en
#767676sur fond blanc (rapport 4,54:1). - Texte courant de 16 px en
#777777sur fond blanc (rapport 4,48:1). - Titre de 32 px en
#999999sur fond blanc (rapport 2,85:1). - Titre de 24 px en
#64748bsur fond blanc (rapport 4,76:1). - La bordure d'un champ de formulaire en
#94a3b8sur fond blanc (rapport 2,56:1), seule indication de l'emplacement du champ.
Voir la réponseMasquer la réponse de l'exercice 2
- Conforme : 4,54 ≥ 4,5.
- Non conforme : 4,48 < 4,5. L'écart est invisible à l'œil, mais le seuil est le seuil.
- Non conforme : le grand texte demande 3:1, et 2,85 < 3.
- Conforme : grand texte (24 px), 3:1 suffit, et 4,76 dépasse même le seuil du texte courant.
- Non conforme : les composants d'interface et leurs bordures, quand elles sont nécessaires pour les repérer, demandent 3:1 (critère WCAG 1.4.11). Une bordure en
#64748b(4,76:1) convient.
Tu avais trouvé ?
Exercice 3 sur 4 Quelle thématique du RGAA ? Réussi À revoir
Range chaque problème dans sa thématique du RGAA.
- Une vidéo de présentation sans sous-titres.
- Un tableau de données sans en-têtes
<th>. - Une page dont le
<title>est « Sans titre ». - Un champ de recherche sans étiquette.
- Un texte gris clair sur fond blanc.
- Un lien « Lire la suite » répété sur chaque actualité.
- Une page qui n'a pas de lien d'évitement ni de
<main>. - Un texte qui se superpose à un autre quand on zoome à 200 %.
Voir la réponseMasquer la réponse de l'exercice 3
- Multimédia (thématique 4).
- Tableaux (5).
- Éléments obligatoires (8) : chaque page doit avoir un titre, et ce titre doit être pertinent. La même thématique contient la langue de la page et la validité du code.
- Formulaires (11).
- Couleurs (3).
- Liens (6) : un lien doit être explicite par son texte ou son contexte.
- Navigation (12) pour le lien d'évitement ; Structuration de l'information (9) pour les zones de la page.
- Présentation de l'information (10).
Tu avais trouvé ?
Exercice 4 sur 4 Parcours au clavier Réussi À revoir
La page d'accueil de la médiathèque contient, dans l'ordre du HTML : un lien d'évitement, le logo-lien, quatre liens de menu, deux liens « S'inscrire » dans les cartes d'ateliers, une <div onclick> « Voir plus d'ateliers », un formulaire de recherche (un champ et un bouton) et trois liens de pied de page.
- Combien d'appuis sur
Tabfaut-il, depuis l'arrivée sur la page, pour atteindre le champ de recherche sans utiliser le lien d'évitement ? - Que se passe-t-il pour l'élément « Voir plus d'ateliers » ?
- Comment le corriger ?
Voir la réponseMasquer la réponse de l'exercice 4
- Les éléments atteints dans l'ordre : lien d'évitement (1), logo (2), quatre liens de menu (3 à 6), deux liens « S'inscrire » (7 et 8), puis le champ de recherche (9) : 9 appuis. La
<div>n'est pas comptée, elle ne reçoit pas le focus. - Elle est sautée : une personne qui navigue au clavier ne peut pas l'atteindre ni l'activer, et un lecteur d'écran ne l'annonce pas comme interactive.
- Si elle mène à une autre page : un lien
<a href="agenda.html">Voir plus d'ateliers</a>. Si elle affiche d'autres ateliers dans la page :<button type="button">Voir plus d'ateliers</button>. Le comptage passe alors à 10 appuis pour atteindre le champ de recherche.
Tu avais trouvé ?