Critères de succès WCAG · Level AAA
WCAG 1.4.6 : Contraste (renforcé)
WCAG 1.4.6 exige un ratio de contraste minimal de 7:1 pour le texte normal et de 4,5:1 pour le texte de grande taille entre les couleurs de premier plan et d’arrière-plan, allant au-delà du seuil AA afin de garantir la lisibilité pour les personnes ayant une basse vision, des déficiences de la perception des couleurs ou utilisant l’interface dans des conditions d’éclairage difficiles.
Ce que signifie cette règle
WCAG 1.4.6 Contraste (renforcé) est un critère de succès de niveau AAA relevant de la Règle 1.4 (Distinguable). Il exige que la présentation visuelle du texte et des images de texte ait un ratio de contraste d’au moins 7:1 par rapport à leur arrière-plan. Pour le texte de grande taille — défini comme au moins 18pt (environ 24px) pour une graisse normale, ou au moins 14pt (environ 18,67px) pour une graisse en gras — le ratio de contraste requis est d’au moins 4,5:1. Il s’agit d’une augmentation significative par rapport au critère de niveau AA 1.4.3, qui exige seulement 4,5:1 pour le texte normal et 3:1 pour le texte de grande taille.
Le ratio de contraste est calculé à l’aide de la luminance relative des deux couleurs concernées, telle que définie dans la spécification WCAG. La formule prend en compte les valeurs RGB linéarisées des couleurs de premier plan et d’arrière-plan pour produire un ratio allant de 1:1 (aucun contraste, couleurs identiques) à 21:1 (contraste maximal, noir sur blanc ou blanc sur noir).
Ce critère s’applique à tout texte rendu dans l’interface, y compris le texte dans les images, les icônes contenant du texte et le texte rendu dans des éléments canvas lorsque le rendu est accessible. Il concerne les titres, le corps du texte, les libellés, le texte d’espace réservé dans les champs de formulaire lorsqu’il transmet une information significative, les libellés de boutons, le texte des liens, les éléments de navigation et tout autre contenu textuel visible à l’écran.
WCAG 1.4.6 partage les mêmes exceptions officielles que le critère 1.4.3. Les éléments suivants sont explicitement exclus de l’exigence :
- Texte accessoire : Texte ou images de texte purement décoratifs, non visibles par quiconque, ou faisant partie d’une image qui contient d’autres contenus visuels significatifs. Un exemple serait du texte visible en arrière-plan d’une photographie utilisée comme décoration.
- Logotypes : Le texte qui fait partie d’un logo ou d’un nom de marque n’a pas d’exigence de contraste. Cela s’applique uniquement à la partie logotype du logo d’une entreprise, et non au corps de texte adjacent ou aux libellés d’interface.
- Composants d’interface utilisateur inactifs : Le texte dans des contrôles de formulaire désactivés, des boutons désactivés ou d’autres éléments d’interface qui ne sont pas actuellement opérables est exempté. Toutefois, cette exemption doit être appliquée avec parcimonie — l’UI inactive doit rester suffisamment perceptible pour communiquer son existence.
Une réussite selon ce critère signifie que chaque instance de contenu textuel qui n’est pas explicitement exceptée atteint ou dépasse le ratio 7:1 (ou 4,5:1 pour le texte de grande taille). Un échec se produit lorsque tout texte non excepté tombe en dessous de ces seuils, même de peu. Le contraste doit être maintenu dans tous les états pris en charge — survol, focus, actif, visité — puisque le critère s’applique à la présentation rendue dans chacun de ces états.
Pourquoi c’est important
Environ 2,2 milliards de personnes dans le monde vivent avec une forme de déficience visuelle, selon l’Organisation mondiale de la Santé. Parmi elles, des centaines de millions présentent des affections qui réduisent directement la capacité à distinguer les couleurs ou à percevoir le texte à faible contraste, notamment la cataracte, le glaucome, la dégénérescence maculaire et diverses formes de déficience de la vision des couleurs. Pour cette population, les interfaces qui ne respectent que le seuil de contraste AA de 4,5:1 peuvent encore constituer des obstacles importants à la lecture et à la compréhension.
Le ratio 7:1 exigé par ce critère est spécifiquement calibré pour tenir compte de la perte de sensibilité au contraste associée au vieillissement de l’œil et aux troubles de basse vision courants. La recherche en sciences de la vision montre qu’une personne ayant une sensibilité au contraste modérément réduite — à peu près équivalente à une personne avec une vision de 20/80 utilisant des verres correcteurs — peut subir une réduction effective du contraste d’environ trois pour un. Un ratio de conception de 7:1, après cette réduction perceptive, fournit encore un contraste perçu d’environ 2,3:1, ce qui est proche du seuil minimal à partir duquel le texte devient lisible. Sans cette marge, ces personnes peuvent être totalement incapables de lire le contenu.
Considérez un scénario réel : un client bancaire de 68 ans gère ses finances en ligne un après-midi ensoleillé, avec la lumière du soleil se reflétant sur l’écran de son ordinateur portable. Même avec une vision cliniquement normale, l’éblouissement et la réduction naturelle de la sensibilité au contraste qui accompagne le vieillissement peuvent rendre un texte gris moyen sur fond blanc complètement illisible. Une conception qui atteint un contraste de 7:1 dans des conditions normales restera utilisable dans ce contexte ; une conception qui atteint à peine 4,5:1 ne le sera pas.
Au-delà de l’impact spécifique au handicap, un texte à fort contraste bénéficie pratiquement à tous les utilisateurs dans des environnements de lecture sous-optimaux : forte lumière extérieure, écrans usés avec rétroéclairage réduit, écrans monochromes à encre électronique et projecteurs de faible qualité dans les salles de réunion. L’exigence de contraste renforcé représente donc non seulement une amélioration de l’accessibilité, mais aussi une amélioration générale de l’ergonomie.
Du point de vue de l’optimisation pour les moteurs de recherche, le texte à fort contraste tend à être corrélé à des hiérarchies typographiques plus propres et mieux structurées. Bien que les moteurs de recherche ne mesurent pas directement le contraste, la discipline de conception nécessaire pour respecter les normes de contraste AAA produit généralement des pages avec une hiérarchie visuelle plus forte et de meilleurs scores de lisibilité, ce qui contribue à réduire les taux de rebond et à augmenter le temps passé sur la page — des signaux qui bénéficient indirectement aux performances SEO.
Règles Axe-core associées
- color-contrast-enhanced : Il s’agit de la règle axe-core principale associée à WCAG 1.4.6. Elle évalue les couleurs de premier plan et d’arrière-plan calculées de tous les nœuds de texte dans le DOM et calcule leur ratio de contraste à l’aide de la formule de luminance WCAG. La règle signale tout élément de texte dont le ratio de contraste est inférieur à 7:1 pour le texte de taille normale ou inférieur à 4,5:1 pour le texte de grande taille (tel que défini par font-size et font-weight calculés). Elle indique le ratio réel trouvé, le ratio requis et l’élément responsable, ce qui rend la correction simple. La règle distingue le texte normal du texte de grande taille en utilisant les mêmes seuils de taille que ceux définis par WCAG : 18pt (24px) pour une graisse normale et 14pt (18,67px) pour une graisse en gras.
- Limitations nécessitant des tests manuels : Les règles automatisées comme color-contrast-enhanced ne peuvent pas détecter les échecs de contraste dans plusieurs scénarios importants. Le texte rendu à l’intérieur des éléments
<canvas>est invisible pour l’analyseur basé sur le DOM et nécessite une inspection visuelle manuelle. Le texte superposé à des arrière-plans en dégradé ou photographiques présente un défi particulièrement difficile : le ratio de contraste varie sur le texte en fonction de la partie du dégradé ou de l’image qui se trouve derrière chaque lettre. Les outils automatisés échantillonnent généralement une seule couleur d’arrière-plan ou produisent des résultats non concluants dans ces cas. Le texte qui change de couleur au survol ou au focus doit également être testé manuellement dans chaque état interactif, car les analyses automatisées capturent généralement uniquement l’état rendu par défaut. De plus, le texte dont le contraste dépend de propriétés personnalisées CSS résolues à l’exécution via JavaScript peut ne pas être évaluable lors d’une analyse statique.
Comment tester
- Analyse automatisée avec axe DevTools : Installez l’extension de navigateur axe DevTools (Chrome ou Firefox). Ouvrez la page cible, activez l’extension et lancez une analyse de page complète. Dans le panneau de résultats, filtrez par l’ID de règle color-contrast-enhanced ou recherchez « enhanced » dans la liste des problèmes. Pour chaque élément signalé, le panneau affiche l’élément, le ratio de contraste réel et le ratio requis. Notez tout élément indiqué comme nécessitant un examen plutôt qu’une réussite ou un échec définitif — ces cas impliquent généralement des arrière-plans calculés qui n’ont pas pu être résolus et nécessitent une vérification manuelle.
- Analyse automatisée avec Lighthouse : Ouvrez Chrome DevTools, accédez à l’onglet Lighthouse et lancez un audit d’accessibilité. Lighthouse utilise axe-core en interne, il fera donc remonter les mêmes violations color-contrast-enhanced. Le rapport les regroupe sous Accessibilité et renvoie à chaque élément en échec. Gardez à l’esprit que Lighthouse audite la page dans son état par défaut et ne teste pas les états interactifs tels que le survol ou le focus.
- Échantillonnage manuel des couleurs : Utilisez le sélecteur de couleurs des outils de développement du navigateur ou un outil dédié tel que Colour Contrast Analyser (TPGi) pour échantillonner manuellement les couleurs de premier plan et d’arrière-plan des éléments de texte. Ceci est particulièrement important pour le texte sur des images, des dégradés ou des arrière-plans semi-transparents. Échantillonnez plusieurs points le long du texte là où l’arrière-plan varie et vérifiez que le ratio de contraste minimal sur tous les points échantillonnés atteint 7:1 pour le texte normal ou 4,5:1 pour le texte de grande taille.
- Test des états interactifs : À l’aide des DevTools du navigateur, forcez les éléments dans leurs états de survol, focus, actif et visité (via le panneau :hov dans Chrome DevTools ou équivalent). Relancez la vérification du contraste dans chaque état pour vous assurer que les changements de couleur appliqués via les pseudo-classes CSS n’introduisent pas d’échecs de contraste. Portez une attention particulière aux états visités des liens, aux états de survol des boutons et aux indicateurs de focus des champs de formulaire.
- Vérification avec lecteur d’écran (NVDA + Firefox) : Bien que les lecteurs d’écran ne testent pas directement le contraste, vérifier que le texte est accessible à NVDA confirme qu’il s’agit de vrai texte dans le DOM (et non d’une image de texte sans alternative). Lancez Firefox, ouvrez NVDA et parcourez la page à l’aide du curseur de lecture. Tout texte que NVDA ne peut pas lire doit être examiné pour déterminer s’il s’agit d’une image de texte nécessitant un test de contraste au niveau de l’image.
- Vérification avec lecteur d’écran (VoiceOver + Safari sur macOS) : Activez VoiceOver avec Command+F5 et naviguez dans la page à l’aide de VO+Flèche droite. Comme avec NVDA, le texte que VoiceOver ignore ou lit incorrectement peut indiquer un rendu de texte non standard nécessitant une inspection manuelle du contraste.
- Simulation en niveaux de gris : Activez le mode d’affichage en niveaux de gris via les paramètres d’accessibilité du système d’exploitation (disponible sur Windows, macOS, iOS et Android). Cela supprime toute information de couleur et rend les différences de contraste immédiatement visibles. Le texte qui devient difficile à lire en mode niveaux de gris échoue presque certainement à l’exigence de contraste renforcé.
Comment corriger
Texte de corps sur fond clair — Incorrect
<!-- Fails 1.4.6: #767676 on #ffffff yields approximately 4.54:1,
which passes AA (1.4.3) but falls far short of the 7:1 AAA requirement -->
<p style='color: #767676; background-color: #ffffff;'>
Please review our terms and conditions before proceeding.
</p>
Texte de corps sur fond clair — Correct
<!-- Passes 1.4.6: #595959 on #ffffff yields approximately 7.0:1,
meeting the enhanced contrast requirement for normal-weight body text -->
<p style='color: #595959; background-color: #ffffff;'>
Please review our terms and conditions before proceeding.
</p>
Titre coloré sur fond de marque — Incorrect
<!-- Fails 1.4.6: brand blue #4A90D9 on white #ffffff yields approximately 3.0:1.
Even though this is a heading and may appear large, bold headings at
common web sizes (e.g. 20px bold) may not qualify as WCAG "large text"
depending on rendering, and 3.0:1 fails even the large-text 4.5:1 threshold -->
<h2 style='color: #4A90D9; background-color: #ffffff;'>
Welcome to Our Services
</h2>
Titre coloré sur fond de marque — Correct
<!-- Passes 1.4.6: dark navy #1A3A5C on white #ffffff yields approximately 12.6:1.
Exceeds the 7:1 requirement for normal text and comfortably surpasses
the 4.5:1 large-text requirement. Brand identity is preserved through
the use of a darker shade within the same hue family. -->
<h2 style='color: #1A3A5C; background-color: #ffffff;'>
Welcome to Our Services
</h2>
Texte sur un arrière-plan en dégradé — Incorrect
<!-- Fails 1.4.6: The gradient transitions from a dark color that provides
adequate contrast on the left to a light color that provides insufficient
contrast on the right. Text spanning the full width will fail at some point. -->
<div style='background: linear-gradient(to right, #1a1a1a, #cccccc); padding: 20px;'>
<p style='color: #ffffff;'>Create your account today and get started.</p>
</div>
Texte sur un arrière-plan en dégradé — Correct
<!-- Passes 1.4.6: A semi-transparent dark overlay behind the text ensures
that foreground text maintains at least 7:1 contrast regardless of
the underlying gradient value at any point beneath the text block. -->
<div style='background: linear-gradient(to right, #1a1a1a, #cccccc); padding: 20px;'>
<p style='color: #ffffff; background-color: rgba(0,0,0,0.75); padding: 8px 12px; display: inline-block;'>
Create your account today and get started.
</p>
</div>
Texte d’espace réservé dans un champ de formulaire — Incorrect
<!-- Fails 1.4.6: default browser placeholder styling is typically around
#aaaaaa on white, yielding approximately 2.32:1. If placeholder text
conveys meaningful information (e.g. format hints), it must meet contrast requirements. -->
<input type='text' placeholder='DD/MM/YYYY' style='background: #ffffff;'>
Texte d’espace réservé dans un champ de formulaire — Correct
<!-- Passes 1.4.6: Override the default placeholder color to achieve 7:1 contrast.
Also adds a visible label as best practice, since placeholders disappear on input. -->
<label for='dob'>Date of Birth</label>
<input type='text' id='dob' placeholder='DD/MM/YYYY'
style='background: #ffffff; color: #000000;'>
<style>
input::placeholder {
color: #595959; /* approximately 7.0:1 on white — meets AAA */
}
</style>
Erreurs courantes
- Se fier uniquement aux combinaisons de couleurs conformes au niveau AA sans vérifier les seuils AAA : De nombreux designers utilisent le gris moyen courant
#767676sur blanc, qui respecte 1.4.3 avec environ 4,54:1 mais échoue à 1.4.6 avec une marge importante. Vérifiez toujours par rapport à l’objectif 7:1, et pas seulement 4,5:1. - Supposer que les exemptions pour texte de grande taille s’appliquent trop largement : L’exception pour texte de grande taille (4,5:1 au lieu de 7:1) s’applique uniquement au texte d’au moins 18pt (24px) en graisse normale ou d’au moins 14pt (18,67px) en gras. Un texte de 20px en graisse normale ne se qualifie pas et doit toujours respecter 7:1.
- Ignorer le contraste dans les états interactifs : Appliquer une couleur plus claire au survol pour créer un affordance visuelle sans vérifier si l’état survolé respecte toujours 7:1. Par exemple, assombrir l’arrière-plan d’un bouton au survol tout en conservant un texte blanc peut encore passer, mais éclaircir le texte au survol provoque fréquemment des échecs.
- Passer sous silence les chaînes de propriétés personnalisées CSS : Définir une couleur de texte comme
var(--color-primary)où--color-primaryest définie globalement mais surchargée localement dans le périmètre d’un composant sans revérifier le contraste. La couleur effectivement rendue peut différer de la valeur du jeton global et produire un ratio défaillant dans des contextes de composants spécifiques. - Considérer l’exemption d’état désactivé comme une licence de conception : Utiliser l’exemption d’UI inactive pour justifier le style d’éléments désactivés avec un contraste de 1:1 (texte invisible), empêchant les utilisateurs de savoir qu’un champ existe. Les éléments désactivés doivent rester visuellement perceptibles même s’ils sont exemptés de l’exigence 7:1.
- Ne pas tester le texte rendu sur des images ou des vidéos : Placer du texte directement sur une image de héros ou un arrière-plan vidéo et vérifier le contraste uniquement par rapport à la couleur moyenne plutôt que par rapport à la partie la plus claire de l’image que le texte traverse. Le contraste minimal doit être maintenu sur chaque pixel sous le texte, et non en moyenne.
- Appliquer les corrections de contraste uniquement aux points de rupture desktop : Les conceptions responsives qui utilisent des couleurs d’arrière-plan différentes aux points de rupture mobiles — par exemple, passer d’un arrière-plan blanc sur desktop à un arrière-plan de carte beige clair — peuvent introduire de nouveaux échecs de contraste sur les petits écrans qui n’étaient pas présents lors des tests desktop.
- Oublier le contraste du texte pour les indicateurs de focus : Lorsqu’un anneau de focus personnalisé ou un état de focus modifie à la fois l’arrière-plan et la couleur du texte d’un élément focalisé, la nouvelle combinaison texte/arrière-plan dans l’état de focus doit satisfaire indépendamment le ratio 7:1, quel que soit le résultat de l’état par défaut.
- Supposer que l’exemption de logo s’étend au texte descriptif adjacent : Placer un slogan ou une description de produit dans le même bloc typographique qu’un logo de marque et revendiquer l’exemption de logo pour l’ensemble du bloc. L’exemption s’applique strictement au texte qui fait partie intégrante du logo lui-même, et non à tout texte voisin.
- Ne pas valider le contraste après des surcharges de framework CSS : Importer une bibliothèque de composants tierce ou un framework CSS qui réinitialise ou surcharge les couleurs de texte avec des valeurs inférieures à 7:1, puis livrer ces valeurs par défaut sans audit. Les valeurs par défaut des frameworks ne sont presque jamais calibrées pour les normes de contraste AAA.
Relation avec la réglementation d’accessibilité de la Turquie
La Circulaire présidentielle 2025/10 de la Turquie, publiée au Journal officiel n° 32933 le 21 juin 2025, établit des exigences obligatoires en matière d’accessibilité numérique pour un large éventail d’institutions et d’organisations opérant en Turquie. La circulaire impose la conformité aux WCAG 2.2 au niveau AA comme norme de base. Les types d’entités couvertes incluent les institutions et agences publiques, les plateformes de commerce électronique, les banques et prestataires de services financiers, les hôpitaux et organisations de santé, les entreprises de télécommunications comptant 200 000 abonnés ou plus, les agences de voyage, les entreprises de transport privé et les écoles privées autorisées par le ministère de l’Éducation nationale (MoNE).
WCAG 1.4.6 Contraste (renforcé) est un critère de niveau AAA et n’est donc pas une exigence obligatoire au titre de la Circulaire présidentielle. Les organisations qui atteignent uniquement la conformité de niveau AA — le niveau de base légalement imposé — ne seront pas en violation de la circulaire pour avoir omis l’exigence de contraste renforcé 7:1, à condition qu’elles respectent le seuil AA de 4,5:1 pour le texte normal défini par le critère 1.4.3.
Cependant, atteindre la conformité AAA en matière de contraste représente un engagement significatif en faveur d’une conception inclusive qui va bien au-delà de la conformité juridique minimale. Pour les institutions publiques, qui ont l’obligation la plus large de servir tous les citoyens, quel que soit leur statut de handicap, l’adoption volontaire de la norme de contraste renforcé signale une véritable volonté d’accès universel. Les organisations de santé et les hôpitaux — secteurs où les patients peuvent déjà être soumis à un stress physique ou cognitif, ou interagir avec des systèmes numériques dans des conditions difficiles telles qu’un éclairage clinique intense — ont un argument pratique particulièrement fort pour dépasser le seuil minimal de contraste. De même, les banques et prestataires de services financiers dont la clientèle comprend de plus en plus de personnes âgées sont bien placés pour bénéficier de la crédibilité et de la confiance des utilisateurs que la conformité AAA en matière de contraste communique.
Les organisations poursuivant la certification ISO 30071-1, l’alignement sur la norme européenne EN 301 549 ou tout processus de passation de marchés international qui évalue la maturité en matière d’accessibilité constateront que la conformité de contraste de niveau AAA renforce leur position. À mesure que l’application de l’accessibilité numérique mûrit à l’échelle mondiale et en Turquie en particulier, les critères actuellement de niveau AAA ont historiquement tendance à migrer vers un statut obligatoire lors des mises à jour réglementaires successives. L’adoption du contraste renforcé dès maintenant place les organisations en avance sur les exigences futures probables et réduit le coût des corrections ultérieures.
Pour les organisations utilisant le SDK de surcouche Accsible, les outils d’ajustement de contraste de la plateforme peuvent aider les utilisateurs à appliquer des modes à fort contraste au niveau du widget, fournissant une couche compensatoire qui contribue à combler l’écart entre les niveaux de contraste de la conception publiée et les besoins individuels de l’utilisateur. Cela ne remplace pas le respect du critère au niveau du code source, mais fournit un soutien significatif à l’exécution pour les utilisateurs qui ont besoin d’un contraste renforcé et qui visitent des sites n’ayant pas encore atteint une conformité AAA complète.
