Arbre d’accessibilité d’une page
Un lecteur d’écran, qui lit la page à voix haute, ne voit pas votre mise en page : il reçoit une version simplifiée où chaque élément a un rôle (lien, bouton, titre) et un nom.
Analyse de : comptez jusqu’à une minute.
- Ouverture de la page Notre serveur la charge dans Chromium, le moteur de Chrome et d’Edge. À venir
- Lecture de l’arbre d’accessibilité Rôle, nom et état de chaque élément. À venir
- Repérage des problèmes Éléments sans nom, titres, repères. À venir
Résultat
Exemple : l’arbre d’une page de contact fictive. Saisissez une adresse pour relever celui de votre page.
15 éléments relevés : 4 liens, 3 boutons, 2 titres, 1 champ, 0 image. 1 élément sans nom. 2 éléments à vérifier. Un cadre (iframe) pas encore chargé au moment du relevé reste vide : vérifiez-le à part.
L’arbre montre ce que reçoit un lecteur d’écran. L’audit gratuit vérifie aussi les contrastes, les images et les formulaires de votre page. Audit gratuit de votre site
Tout l’arbre
- page Nous écrire | Exemple
- lien Aller au contenu
- en-tête
- lien Exemple, retour à l’accueil
- navigation Menu principal
- bouton Services replié, ouvre un menu
- lien Tarifs
-
- bouton sans nom
-
- contenu principal
- titre Nous écrire niveau 1
- formulaire Formulaire de contact
- champ de saisie Adresse e-mail * obligatoire
- bouton Envoyer
-
- titre Nos horaires niveau 3 niveau 3 après un niveau 1
- lien En savoir plus nom peu explicite hors contexte
-
-
Outil gratuit Critères 1.1, 6.2, 7.1 et 11.1
En bref
Si un bouton n’a pas de nom, la personne entend seulement « bouton » sans savoir à quoi il sert : cette version, que reçoivent aussi les logiciels de commande à la voix, décide si la page est utilisable sans la voir. À partir de l’adresse d’une page, l’outil la dessine sous forme d’arbre et signale les éléments sans nom ou à vérifier.
- L’arbre d’accessibilité est la version de la page que le navigateur transmet aux technologies d’assistance : pour chaque élément, un rôle, un nom, une valeur et des états.
- Notre serveur ouvre la page dans Chromium, le moteur de Chrome et d’Edge, sur un écran d’ordinateur, et lit cet arbre dès que le HTML est analysé (DOMContentLoaded).
- Les liens, boutons, champs et images sans nom sont signalés « sans nom » : à l’écoute, rien ne dit à quoi ils servent. Un titre qui saute un niveau, un lien « En savoir plus » ou deux repères impossibles à distinguer sont « à vérifier ».
- Le résumé chiffré filtre l’arbre d’un clic ; la carte des repères montre les grandes zones de la page et leurs titres. L’arbre se parcourt au clavier et se copie en texte pour un ticket.
- Puppeteer ne garde que les repères, les éléments interactifs et les textes, titres ou images qui ont un nom (le moteur y ajoute les images sans nom) : listes, tableaux, paragraphes et conteneurs sont fondus dans leur parent.
Limites du verdict : l’arbre vient de Chromium, alors que sur ordinateur l’environnement de test du RGAA associe NVDA ou JAWS à Firefox et VoiceOver à Safari (sur Android, TalkBack à Chrome) : d’un navigateur à l’autre, un nom ou un rôle peut différer. Le contenu d’un cadre (iframe) pas encore chargé au moment du relevé manque : l’absence d’alerte ne vaut pas pour lui. Un nom peut aussi venir du navigateur : Chromium nomme « Envoyer » un bouton image (input type="image") sans alt, que le RGAA met en échec (test 1.1.3). L’outil dit si un nom existe, pas s’il est pertinent, et ne voit que la page telle qu’elle est une fois le HTML analysé : un contenu ajouté plus tard par un script, un menu ouvert ou une fenêtre de dialogue peuvent manquer. Seule une écoute avec un lecteur d’écran dit si un composant est correctement restitué (test 7.1.2).
Toute la page à vérifier ? Lancer l’analyseur gratuit
Ce que contient l’arbre d’accessibilité
Un lecteur d’écran ne lit pas le HTML. Le navigateur construit la page (le DOM), en tire un arbre d’objets qui décrit l’interface, puis le système d’exploitation le transmet au lecteur d’écran par son API d’accessibilité. La spécification WAI-ARIA 1.2 appelle cet arbre l’« accessibility tree » : chaque nœud y représente un élément de l’interface tel que l’API l’expose.
Chaque nœud porte un rôle (lien, bouton, titre, case à cocher, repère de navigation), qui dit ce qu’est l’élément et ce qu’on peut en faire. Il porte aussi un nom : le texte d’un lien, l’étiquette d’un champ, l’alternative d’une image. Parfois une valeur, pour un champ ou une liste déroulante, et des états : coché, replié ou déplié, désactivé, obligatoire, invalide.
Le calcul du nom suit la spécification Accessible Name and Description Computation. Pour un lien, le glossaire du RGAA en reprend l’ordre : d’abord aria-labelledby, puis aria-label, puis le contenu du lien, puis l’attribut title.
Les rôles sont affichés en français, suivis du nom que leur donne Chromium (heading, link, StaticText…), celui que vous retrouverez dans les outils de développement.
Ce que le RGAA vérifie dans cet arbre
Plusieurs critères du RGAA 4.1.2 reviennent à vérifier qu’un élément a un nom, ou que son rôle et ses états sont transmis :
- critère 6.2 : chaque lien a un intitulé, du texte ou une alternative d’image ;
- critère 11.1 : chaque champ de formulaire a une étiquette (label, aria-label, aria-labelledby, title ou bouton adjacent) ;
- critère 1.1 : chaque image porteuse d’information a une alternative textuelle. L’outil montre chaque image avec son alternative et signale celles qui n’ont pas de nom ;
- critère 7.1 : un composant généré ou contrôlé par JavaScript transmet son nom, son rôle, sa valeur et ses changements d’états aux technologies d’assistance par une API d’accessibilité (test 7.1.1). Son nom doit être pertinent et contenir au moins l’intitulé visible, son rôle doit être pertinent (test 7.1.3).
Le critère 7.1 renvoie notamment au critère de succès 4.1.2 Name, Role, Value des WCAG 2.1. Le glossaire du RGAA, à l’entrée « Le nom, le rôle, la valeur, le paramétrage et les changements d’états », donne l’exemple d’aria-expanded, l’état qui signale qu’un composant est ouvert ou fermé.
Ce qu’il faut y chercher
- Un élément marqué « sans nom ». Un bouton fait d’une seule icône, un lien autour d’une image sans alt, un champ sans label : le rôle est là, rien ne dit à quoi sert l’élément. La tuile « Sans nom » du résumé ne garde qu’eux dans l’arbre, avec les éléments qui les contiennent.
- Un point « à vérifier ». Un titre qui saute un niveau, un lien ou un bouton nommé « En savoir plus », deux navigations sans nom pour les distinguer : rien n’est faux à coup sûr, mais la page se parcourt moins bien à l’écoute. La carte des repères montre les grandes zones de la page, leurs titres et ce qui n’est dans aucune zone.
- Un élément cliquable qui apparaît comme texte ou conteneur. Un div ou un span qui réagit au clic, sans rôle de bouton ni de lien, n’est pas présenté comme interactif.
- Un bouton d’ouverture sans état. Un bouton qui ouvre un menu ou un panneau devrait porter « replié » ou « déplié ». Comme l’arbre est relevé au chargement, vous voyez l’état fermé ; vérifiez dans votre navigateur qu’il change à l’ouverture.
- Un nom qui ne reprend pas le texte affiché. Un bouton qui affiche « Rechercher » et se nomme « Lancer » contredit le test 7.1.3 du RGAA et le critère de succès 2.5.3 Label in Name des WCAG : une personne qui commande sa machine à la voix prononce ce qu’elle voit.
Un relevé, pas une simulation
Un lecteur d’écran reçoit cet arbre, puis décide quoi en dire, dans quel ordre et avec quelle verbosité. NVDA, JAWS, VoiceOver et TalkBack ne formulent pas la même chose, et chacun se règle. Reproduire leur voix reviendrait à inventer une restitution. L’outil montre ce qui est réellement transmis : c’est à ce niveau que se trouvent la plupart des défauts, un nom absent ou un rôle manquant.
L’arbre dépend aussi du navigateur. Il est relevé ici dans Chromium, alors que sur ordinateur l’environnement de test du RGAA associe NVDA ou JAWS à Firefox, et VoiceOver à Safari ; sur Android, il associe TalkBack à Chrome. Le calcul des noms est normalisé, mais deux navigateurs peuvent encore exposer un élément différemment. Pour trancher un critère, la méthode demande de tester dans cet environnement.
Comment l’outil relève l’arbre
Notre serveur ouvre la page dans Chromium, dans une fenêtre de 1 280 × 800 pixels, attend que le HTML soit analysé (DOMContentLoaded), puis demande l’arbre par la fonction snapshot de Puppeteer. Cette fonction ne garde que les repères, les éléments interactifs ou qui reçoivent le focus, et les textes, titres ou images qui ont un nom ; le moteur y ajoute les images sans nom. Le reste disparaît (listes, tableaux, paragraphes, conteneurs, titres vides) et ce qu’il contenait remonte au parent. Le contenu des cadres (iframe) est relevé sous le cadre qui le contient ; un cadre pas encore chargé au moment du relevé reste vide.
Le moteur ajoute deux simplifications. Sous un élément nommé par son contenu (lien, bouton, titre, onglet, option), le texte qui répète ce nom en entier n’est pas recopié en dessous. Sous la page, une région ou un formulaire, les textes restent, même quand ils reprennent leur nom. Un nom de plus de 300 caractères est coupé, ce que marque « … ». Chromium donne enfin parfois un nom par défaut : un bouton image sans alt s’appelle « Envoyer ».
Le relevé s’arrête à 3 000 éléments. Dans la page, la vue en arbre ne construit d’abord qu’environ 150 lignes, en largeur, et construit les branches suivantes quand vous les dépliez ; une vue filtrée ne garde que les éléments choisis et leurs parents. La page reste ainsi utilisable sur un long article ou une boutique.
Sources
RGAA 4.1.2, critère 1.1 (alternative textuelle des images) ; RGAA 4.1.2, critère 6.2 (intitulé des liens) ; RGAA 4.1.2, critère 7.1 (scripts compatibles avec les technologies d’assistance) ; RGAA 4.1.2, critère 11.1 (étiquette des champs de formulaire) ; RGAA 4.1.2, glossaire : Le nom, le rôle, la valeur, le paramétrage et les changements d’états ; WCAG 2.1, critère de succès 4.1.2 Name, Role, Value, en anglais ; WCAG 2.1, critère de succès 2.5.3 Label in Name, en anglais ; WAI-ARIA 1.2, définition de l’arbre d’accessibilité, en anglais ; HTML Accessibility API Mappings : img avec alt vide, en anglais .
Page mise à jour le 13 novembre 2026.
Questions fréquentes
Qu’est-ce que l’arbre d’accessibilité ?
Le navigateur construit la page à partir du HTML (le DOM), puis en tire une version réduite à ce qui sert aux technologies d’assistance : l’arbre d’accessibilité. Chaque élément y a un rôle (lien, bouton, titre), un nom (le texte d’un lien, l’étiquette d’un champ, l’alternative d’une image), parfois une valeur et des états (coché, replié, désactivé). Le système d’exploitation le transmet ensuite au lecteur d’écran par son API d’accessibilité.
Est-ce un simulateur de lecteur d’écran ?
Non. L’outil montre ce que Chromium transmet, pas ce qu’un lecteur d’écran en dit. NVDA, JAWS, VoiceOver et TalkBack lisent ces mêmes informations mais les formulent chacun à leur manière, avec leurs propres réglages de verbosité, et peuvent ignorer ou ajouter des détails. Une simulation inventerait cette restitution. Pour savoir ce qu’entend une personne, testez avec un vrai lecteur d’écran : NVDA est gratuit sous Windows, VoiceOver est intégré aux appareils Apple.
Que faire d’un élément marqué « sans nom » ?
Chromium ne lui a calculé aucun nom. Selon le logiciel, un lecteur d’écran annonce alors seulement « lien » ou « bouton », ou lit l’adresse du lien ou le nom du fichier de l’image. Pour un lien ou un bouton, donnez-lui un texte, ou une alternative à l’image qu’il contient ; pour une icône seule, un attribut aria-label. Pour un champ, reliez-lui une étiquette avec un élément label. Pour une image porteuse d’information, ajoutez un attribut alt ; si elle est décorative, alt="" la retire de l’arbre.
Pourquoi le texte d’un lien n’apparaît-il pas sous le lien ?
Son texte répète en entier le nom du lien : le moteur ne le recopie pas en dessous. La règle vaut pour les éléments nommés par leur contenu (lien, bouton, titre, onglet, option) ; sous la page, une région ou un formulaire, les textes restent affichés, même quand ils reprennent leur nom. Si le nom du lien diffère de son texte, par exemple avec un aria-label, le texte apparaît sous le lien. Puppeteer ne garde par ailleurs que les repères, les éléments interactifs et les textes, titres ou images qui ont un nom (le moteur y ajoute les images sans nom) : listes, tableaux, paragraphes et conteneurs sont fondus dans leur parent. Les éléments masqués aux technologies d’assistance, par aria-hidden="true" ou display: none, n’y figurent pas.
Comment voir l’arbre d’accessibilité dans mon navigateur ?
Dans Chrome ou Edge, ouvrez les outils de développement, onglet Éléments, panneau Accessibilité : il montre l’arbre de l’élément sélectionné, et une option affiche celui de toute la page. Firefox a un onglet Accessibilité dans ses outils de développement. Ces vues sont plus complètes que la nôtre (listes, tableaux, conteneurs), mais demandent un ordinateur et un peu de pratique.
Un audit RGAA, critère par critère
Un outil vérifie un point. L’audit teste à la main les 106 critères sur chaque page de l’échantillon et livre la déclaration d’accessibilité. À partir de 1 500 € HT pour un échantillon de 8 pages.
Voir l’audit RGAA Poser une questionÀ lire sur le sujet
- Audit RGAA automatisé : ce qu'un outil vérifie, et ce qui reste à l'humain
- Ara, l'outil d'audit RGAA de l'État : notre retour d'usage
- Prix d'un audit RGAA en 2026 : ce qui fait varier le tarif
Outils complémentaires
- Critère 9.1 Balises hn : le plan des titres d’une page Le plan des titres h1 à h6 d’une page, tel qu’un lecteur d’écran le reçoit, avec ce qui est à corriger et ce qui est à examiner.
- Critère 10.7 Focus visible : tester une page au clavier La page parcourue à la touche Tab dans un vrai navigateur : les liens, boutons et champs dont le focus ne se voit pas.
- Critère 11.13 Attribut autocomplete HTML La valeur autocomplete d’un champ trouvée par son nom en français, le code du champ, et la vérification d’un formulaire.