Qu'est-ce que l'Accessibilité Numérique ?
L'accessibilité numérique consiste à concevoir et développer des produits digitaux (sites web, applications mobiles, documents) de manière à ce que tous les utilisateurs, quelles que soient leurs capacités physiques ou mentales, puissent y accéder, les comprendre et interagir avec eux.
L'objectif fondamental n'est pas de créer une version "spéciale" pour les personnes handicapées, mais de supprimer les barrières technologiques qui excluent une partie de la population. Comme une rampe d'accès est indispensable pour un fauteuil roulant mais pratique pour une poussette ou un livreur, l'accessibilité numérique profite à tous.
L'objectif est de supprimer les barrières qui pourraient empêcher quelqu'un d'accéder à l'information ou d'utiliser un service. Cela inclut les handicaps (non exhaustif) :
De plus il est important de noter qu'une bonne accessibilité profite souvent à tous les utilisateurs, pas seulement à ceux en situation de handicap :
Le spectre du handicap
Il est crucial de comprendre que le handicap n'est pas toujours un état permanent. L'approche moderne de l'accessibilité (notamment le "Design Inclusif") distingue trois contextes :
En rendant votre site accessible pour le cas "permanent", vous résolvez automatiquement les problèmes des cas "temporaires" et "situationnels".
Au-delà de l'abréviation, A11y est la pratique de concevoir et développer des sites web et des applications numériques pour qu'ils soient utilisables par tout le monde, y compris et surtout les personnes en situation de handicap.
Que signifie A11y ?
C'est un numéronyme (une abréviation basée sur des chiffres) pour le mot anglais Accessibility.
On le prononce souvent "Al-li" (comme le prénom Allie en anglais) ou simplement "Accessibilité".
Pourquoi utiliser ce terme ?
Au-delà du raccourci d'écriture, le terme A11y est devenu le symbole de la communauté des développeurs et designers engagés pour un web inclusif. Voir ce terme dans un projet indique généralement que l'équipe technique a pris en compte les normes d'accessibilité dès la conception.
Si le numéronyme A11y est une convention, les règles techniques à respecter sont quand à elles des normes internationales strictes. On ne fait pas de l'accessibilité "au feeling".
Tout repose sur le WCAG (Web Content Accessibility Guidelines), édicté par le W3C (l'organisme qui standardise le Web comme le HTML ou le CSS).
Le WCAG est la norme technique mondiale. Elle est structurée en 4 grands principes :
Cette norme définit 3 niveaux de conformité :
La norme technique (WCAG) est ensuite transformée en obligation légale par les états. C'est là que cela devient contraignant...
Source : 🔗 The WebAIM Million
Il est important de noter que ce test est automatisé et ne détecte qu'environ 30% des problèmes potentiels. En effet il ne concerne que le "TOP 1M home page" et ne scan donc QUE la page d'accueil de ce TOP sites.
La situation réelle est donc probablement bien pire !!!
Source : 🔗 OMS : rapport mondial sur la santé et le handicap 2023
Source : 🔗 Eurostat : statistiques sur le handicap 2023/2024
Source : 🔗 Chiffres consolidés par l'INSEE et la DREES 2022-2024
Malgré l'obligation légale (depuis la loi de 2005) pour les services publics d'être accessibles, la conformité reste très faible.
Dans son baromètre de 2025, l'Observatoire révélait que le taux de conformité moyen au RGAA (Référentiel Général d'Amélioration de l'Accessibilité) pour les 250 démarches les plus utilisées par les Français stagnait en dessous de 60% (loin des 100% requis par la loi).
Source : 🔗 Observatoire de la qualité des démarches en ligne 2025
L'accessibilité numérique n'est pas seulement une bonne pratique technique, c'est avant tout une obligation éthique et légale visant à construire un web inclusif.
De manière non exhaustive cela signifie permettre :
h1, h2), décrit le rôle des éléments (bouton, lien) et lit le contenu textuel des images grâce à leur attribut alt.<html lang="fr">, la synthèse vocale utilise le bon accent pour tout le site.
Pour les termes anglophones, les encadrer avec un <span> afin de permettre au lecteur de basculer sur une prononciation anglaise juste pour ce mot, évitant ainsi une lecture confuse.
(ex : <span lang="en">framework</span>).Tab pour se déplacer entre les éléments interactifs (liens, boutons, champs), et les touches Entrée ou Espace pour les activer. Un balisage sémantique est essentiel car les éléments natifs comme la balise <button> ou <a> sont "focusables" par défaut.captions (sous-titres enrichis), qui décrivent non seulement les dialogues mais aussi les sons importants (ex: [musique entraînante], [porte qui claque]), ainsi qu'une transcription textuelle complète disponible à côté de la vidéo.Garantir l'accessibilité, c'est s'assurer que personne n'est laissé pour compte dans l'accès à l'information et aux services.
Le cadre légal s'appuie notamment sur la transposition en droit français des directives européennes qui visent à harmoniser les exigences en la matière. Ce cadre légal s'est considérablement durci avec le European Accessibility Act (EAA).
Cette directive est entrée en vigueur le 28 juin 2025 ...!!!
La loi s'applique à une vaste gamme de produits et services numériques :
En France, le non-respect des obligations d'accessibilité numérique, définies par le RGAA, expose les organismes concernés à des sanctions financières.
Le défaut de conformité ou l'absence de publication d'une déclaration d'accessibilité peut entraîner une sanction administrative dont le montant peut s'élever jusqu'à 25K€/PAR infraction constatée.
Il existe des dérogations, mais elles sont encadrées strictement. Ne sont pas soumises aux mêmes obligations les micro-entreprises (définies comme employant moins de 10 personnes et dont le CA** annuel ou le bilan total n'excède pas 2 millions d'euros).
Cependant, l'application diffère selon votre rôle :
💡💡💡 Même exemptés légalement, l'accessibilité reste un atout commercial et éthique majeur.
Pour les entreprises dépassant les seuils ci-dessus, deux cas spécifiques permettent une dérogation (qui doit être justifiée et documentée) :
Modification fondamentale : si la mise en conformité modifie la nature même du produit ou service (ex: supprimer l'image d'un outil de radiologie rendrait l'outil inutile).
Charge disproportionnée : si l'application des normes impose un coût excessif qui mettrait en péril la viabilité économique de l'opérateur (le calcul est précis et défini par la réglementation).
L'accessibilité ne se devine pas, elle se mesure. Voici les outils de référence pour auditer vos projets, au-delà du simple score Lighthouse.
Contrairement à HTMLHint (qui vérifie si notre code est valide syntaxiquement), ces outils vérifient comment ce code est interprété par les technologies d'assistance.
Accessible directement via la touche F12 (onglet Lighthouse), c'est le point de départ incontournable. Il génère un rapport global (Performance, SEO, Accessibilité) et attribue un score sur 100.
Attention : Un score de 100% ne garantit pas une accessibilité parfaite, car il ne détecte que les erreurs automatisables (~30% des problèmes réels).
C'est la référence visuelle. Il injecte des icônes directement sur votre page pour montrer les erreurs (titres manquants, contrastes faibles, images sans alt).
Disponible en extension Chrome/Firefox.
Le moteur qui fait tourner Lighthouse mais en version dédiée et plus puissante. Il permet de scanner des portions de page et offre des explications très détaillées pour corriger les bugs.
Disponible en extension navigateur.
Un outil en ligne excellent qui audite la performance ET la qualité du code (DOM Complexity, mauvaises pratiques CSS/JS) avec une section dédiée à l'accessibilité.
Une extension indispensable qui génère le "plan" de votre site basé sur vos balises <h1> à <h6>. Si le plan est incohérent, votre accessibilité est compromise.
L'outil "juge de paix". Vous entrez vos deux codes hexadécimaux et il vous dit instantanément si vous passez les niveaux AA ou AAA.
Idéal pour les designers. Il permet de tester des palettes entières et suggère des couleurs proches pour corriger les contrastes insuffisants.
Très visuel, il permet de voir le rendu du texte sur le fond en temps réel et donne un score de lisibilité (Poor, Good, Very Good).
Permet de simuler différents troubles de la vision (daltonisme, cataracte, vision floue) directement sur votre site pour vérifier que l'interface reste utilisable.
C'est l'outil final qui valide ou invalide tout votre travail. Un lecteur d'écran est un logiciel d'assistance qui transmet l'information affichée à l'écran (texte, images, liens, menus) à un utilisateur aveugle ou malvoyant, soit par synthèse vocale (Text-to-Speech) soit via une plage braille.
Contrairement à une idée reçue, un utilisateur de lecteur d'écran n'écoute pas la page du début à la fin de manière linéaire (ce serait interminable). Il navigue dans la page en sautant d'élément en élément.
D'où l'importance cruciale de votre code HTML :
H1, H2...). <footer> ou au <main>.Si votre sémantique est mauvaise (pas de balises <h1> ou des boutons <div>) la page devient un labyrinthe sans issue.
Il existe quelques acteurs majeurs qu'il est bon de connaître :
C'est la référence mondiale et le meilleur outil pour tester vos développements sur PC. Il est léger, puissant et respecte strictement les normes.
Historiquement le plus utilisé en entreprise. Très cher mais très performant pour les applications bureautiques complexes (Office...).
Déjà installé sur tous les appareils Apple. C'est la référence absolue sur mobile. Si vous avez un iPhone vous pouvez l'essayer dès maintenant (Réglages > Accessibilité).
L'équivalent de VoiceOver pour l'écosystème Google/Android.
L'accessibilité ne se limite pas à des contrastes de couleurs. Elle repose sur une structure HTML sémantique, une gestion rigoureuse des interactions JavaScript et le respect des normes ARIA.
Les lecteurs d'écran utilisent les balises HTML pour naviguer ("Aller au menu", "Aller au contenu principal").
Remplacer des <div> par des balises sémantiques est la fondation.
❌ Mauvaise pratique :
Example :<div class="header">...</div>
<div class="main-content">
<div class="article-title">Mon Titre</div>
</div>✅ Bonne pratique :
Example :<header>...</header>
<main> <article>
<h1>Mon Titre</h1> </article>
</main>Le texte alternatif remplace l'image si elle ne s'affiche pas ou pour un utilisateur aveugle. C'est le contexte qui dicte le contenu.
❌ Mauvaise pratique :
Example :<img src="k8s_v2_final.jpg">
<img src="logo.png" alt="image">✅ Bonne pratique :
Example :<img src="search.png" alt="Lancer la recherche">
<img src="stats-2024.png" alt="Graphique des ventes 2024, hausse de 20% au T3">Le texte doit être lisible pour les malvoyants ou en cas de forte luminosité (soleil sur écran). Le ratio minimum standard (AA) est de 4.5:1 pour un texte normal.
❌ Mauvaise pratique :
Example :.text-muted {
color: #b3b3b3; /* Gris clair sur blanc : Ratio 2.1:1 (Illisible) */
background-color: #ffffff;
}✅ Bonne pratique :
Example :.text-muted {
color: #595959; /* Gris foncé sur blanc : Ratio 4.6:1 (Conforme AA) */
background-color: #ffffff;
}💡 Astuce : utiliser les DevTools du navigateur pour vérifier le ratio !
Un utilisateur naviguant au clavier (touche Tab) doit toujours savoir où il se trouve. Ne supprimez jamais l'outline CSS sans fournir une alternative visuelle forte.
❌ Mauvaise pratique :
Example :*:focus {
outline: none; /* L'utilisateur clavier devient "invisible" */
}✅ Bonne pratique :
Example :/* :focus-visible cible uniquement la navigation clavier (pas le clic souris) */
button:focus-visible {
outline: 3px solid #2d3e50;
outline-offset: 2px;
}Lorsqu'une interaction change le contexte (ouverture d'une modale) le focus clavier doit suivre sinon l'utilisateur reste "perdu" derrière.
❌ Mauvaise pratique : j'ouvre une modale mais le focus reste sur le bouton qui l'a ouverte en arrière-plan.
✅ Bonne pratique :
Example :function openModal() {
const modal = document.getElementById('myModal');
modal.classList.add('open');
// 1. Déplacer le focus DANS la modale (sur le 1er élément interactif ou le conteneur)
const closeBtn = modal.querySelector('.close-button');
closeBtn.focus();
// 2. Piéger le focus (Focus Trap) pour qu'il ne sorte pas de la modale (via JS)
}Il ne faut pas utiliser des <div> ou <span> pour créer des boutons. Si vous n'avez pas le choix vous devez recréer le comportement natif manquant.
❌ Mauvaise pratique :
Example :<div class="btn" onclick="submit()">Valider</div>✅ Bonne pratique : (Native - Recommandé)
Example :<button type="button" onclick="submit()">Valider</button>✅ Bonne pratique : (Si <div> obligatoire - ARIA)
<div
role="button"
tabindex="0"
onclick="submit()"
onkeydown="if(event.key === 'Enter' || event.key === ' ') submit()">
Valider
</div>Un champ de saisie doit toujours être lié à une étiquette. Le placeholder ne suffit pas.
❌ Mauvaise pratique :
Example :<input type="email" placeholder="Votre email">✅ Bonne pratique :
Example :<label for="user-email">Votre adresse email</label>
<input type="email" id="user-email" name="email" autocomplete="email">Lorsqu'un message apparaît dynamiquement (erreur, succès) sans rechargement de page, le lecteur d'écran ne le voit pas s'il n'est pas averti.
❌ Mauvaise pratique :
Example :// Injecter du texte dans une div standard
errorDiv.innerHTML = "Identifiants incorrects";
// Le lecteur d'écran reste silencieux✅ Bonne pratique :
Example :<div role="alert" id="error-message">
Identifiants incorrects
</div>
<div aria-live="polite">Mise à jour effectuée</div>Le contenu multimédia doit avoir une alternative textuelle synchronisée (sous-titres) ou une transcription.
❌ Mauvaise pratique : une vidéo en autoplay sans contrôles ou sans piste de sous-titres.
✅ Bonne pratique :
Example :<video controls width="250">
<source src="video.mp4" type="video/mp4">
<track kind="captions" src="sous-titres-fr.vtt" srclang="fr" label="Français">
Votre navigateur ne supporte pas la vidéo. Voici <a href="transcription.txt">la transcription textuelle</a>.
</video>Définit l'accent utilisé par la synthèse vocale.
✅ Bonne pratique :
Example :<html lang="fr">
<p>
J'utilise le framework <span lang="en">React</span> pour mes projets.
</p>Indiquer l'état d'un composant (Ouvert/Fermé, Sélectionné/Non sélectionné) aux technologies d'assistance.
✅ Bonne pratique :
Example :<button
aria-expanded="false" aria-controls="content-1"
id="accordion-btn-1"
onclick="toggleAccordion(this)"
>
Voir plus d'infos
</button>
<div id="content-1" role="region" aria-labelledby="accordion-btn-1" hidden>
Contenu caché...
</div>Conseil pour les développeurs
💡💡💡 Ne faites pas confiance aveugle aux outils automatiques (Lighthouse, Wave). Ils ne détectent que 30% des erreurs.
Prenez l'habitude de lancer NVDA (sur Windows) ou VoiceOver (sur Mac) une fois par sprint.