Comment vérifier le contraste de couleurs pour l'accessibilité

· 7 min de lecture

Environ 1 homme sur 12 et 1 femme sur 200 ont une forme de deficience de la vision des couleurs. Des millions d'autres ont une vision faible, des yeux vieillissants, ou regardent des ecrans en plein soleil. Si votre texte n'a pas assez de contraste par rapport a son arriere-plan, ces personnes ne peuvent pas le lire. Le contraste des couleurs n'est pas juste un plus, c'est une exigence d'accessibilite fondamentale. Un verificateur de contraste base sur navigateur gere tout le travail localement sans televerser de couleurs ou de donnees sur un serveur.

Ce que WCAG exige

Les Web Content Accessibility Guidelines (WCAG) definissent des ratios de contraste minimums entre le texte et son arriere-plan :

NiveauTexte normalGrand texteUI non-texte
AA (minimum)4,5:13:13:1
AAA (ameliore)7:14,5:13:1

«Grand texte» signifie 18px gras ou 24px regulier et plus. Le ratio de contraste varie de 1:1 (pas de contraste, blanc sur blanc) a 21:1 (contraste maximum, noir sur blanc).

Comment verifier le contraste

  1. Selectionnez vos couleurs : entrez les couleurs de premier plan (texte) et d'arriere-plan en utilisant des codes HEX, des valeurs RGB ou des selecteurs de couleurs.
  2. Verifiez les resultats : l'outil affiche instantanement le ratio de contraste et indique si votre combinaison passe WCAG AA et AAA pour le texte normal et grand.
  3. Ajustez si necessaire : si le contraste echoue, assombrissez le texte ou eclaircissez l'arriere-plan (ou vice versa) jusqu'a ce que vous passiez le niveau requis.

Une breve histoire des normes de contraste de couleurs

Avant WCAG, l'accessibilite web etait un patchwork de regles specifiques aux fournisseurs. Le W3C a publie WCAG 1.0 en 1999, avec des conseils sur le contraste mais pas de ratio specifique. WCAG 2.0 (2008) a introduit la formule 4,5:1 / 7:1 basee sur la science des couleurs du Dr Lillian Yetenekian et du laboratoire de recherche IBM, avec la contribution de chercheurs en basse vision. La formule est concue pour qu'une personne avec une vision 20/40 (basse vision legere) puisse lire un texte conforme AA, et qu'une personne avec une vision 20/80 (basse vision significative) puisse lire un texte conforme AAA.

WCAG 2.1 (2018) a ajoute des exigences de contraste pour les composants UI (3:1 pour non-texte), les objets graphiques et les indicateurs de focus. WCAG 2.2 (2023) a ajoute plus d'exigences autour des tailles de cible et de la visibilite du focus.

Le brouillon de travail actuel de WCAG 3.0 propose une nouvelle formule de contraste (APCA, Accessible Perceptual Contrast Algorithm) qui correspond mieux a la perception humaine, en particulier pour le texte plus sombre. APCA n'est pas encore une recommandation du W3C mais est deja pris en charge par certains outils comme apercu.

L'adoption legale de WCAG a ete reguliere :

Pour la plupart des sites web grand public, WCAG 2.1 AA est le minimum legal de facto.

Comment le ratio de contraste est calcule

Le ratio de contraste est calcule en utilisant la luminance relative de chaque couleur :

  1. Convertir chaque couleur de sRGB en RGB lineaire (correction gamma)
  2. Calculer la luminance relative : L = 0,2126 R + 0,7152 G + 0,0722 B
  3. Contraste = (L_plus_clair + 0,05) / (L_plus_sombre + 0,05)

Le resultat est un nombre de 1 (pas de contraste) a 21 (contraste maximum). Les decalages de 0,05 empechent la division par zero et modelisent legerement la contribution de la lumiere ambiante au contraste percu.

La formule a ete deliberement concue pour etre deterministe et calculable, de sorte que les memes couleurs produisent toujours le meme ratio. Elle ne tient pas compte de :

C'est pourquoi les verifications WCAG sont necessaires mais pas suffisantes. La revue visuelle avec des utilisateurs divers (y compris ceux atteints de daltonisme) attrape le reste.

Erreurs de contraste courantes

Texte gris clair sur blanc : #999999 sur #ffffff a un ratio de seulement 2,8:1. Cela echoue WCAG AA. Cela peut sembler «propre» a un designer avec une vision parfaite, mais c'est illisible pour beaucoup de gens.

Texte colore sur arrieres-plans colores : un bouton bleu avec texte blanc passe souvent, mais un bouton vert avec texte blanc peut ne pas passer. Verifiez toujours, vous ne pouvez pas juger du ratio de contraste a l'oeil.

Texte d'espace reserve : les espaces reserves de champs de formulaire sont notoirement a faible contraste. Bien que WCAG n'exige pas strictement que les espaces reserves repondent aux ratios de contraste, les utilisateurs doivent encore les lire.

Mode sombre : les designers utilisent souvent du texte gris moyen sur des arriere-plans gris fonces pour un look «subtil». Cela echoue frequemment aux verifications de contraste.

Texte sur images : le texte place sur une image heros passe souvent quand l'image est sombre et echoue quand l'image est claire. Utilisez un calque de degrade sombre/clair ou une toile de fond unie derriere le texte sur les images.

Decalages de couleurs de marque : l'identite d'entreprise dicte souvent une couleur de marque principale. Si cette couleur echoue comme texte de corps, utilisez-la pour les titres (grand texte, seuil 3:1) et utilisez une teinte plus sombre pour le corps.

Couleurs de liens : les liens doivent etre distinguables du texte environnant. WCAG exige un ratio de 3:1 entre le lien et le texte du corps, plus un autre indice visuel (soulignement, gras ou icone).

Indicateurs de focus : le contour autour d'un bouton ou lien focalise doit atteindre un contraste de 3:1 par rapport a son arriere-plan. Les anneaux de focus par defaut du navigateur sont generalement surs ; les styles de focus personnalises echouent souvent.

Pieges courants

Au-dela de WCAG : APCA et le contraste perceptuel moderne

L'Accessible Perceptual Contrast Algorithm (APCA) est une nouvelle formule proposee par Andrew Somers pour WCAG 3.0. Contrairement a la formule WCAG 2, APCA :

Les scores APCA varient approximativement de -108 a +108. Un score de 60 (positif ou negatif) est approximativement equivalent au 4,5:1 de WCAG 2. APCA n'est pas encore legalement requis nulle part, mais est adopte par des systemes de design comme Material Design et IBM Carbon comme standard tourne vers l'avenir.

Pour la plupart des objectifs pratiques aujourd'hui, WCAG 2.1 AA (4,5:1 / 3:1) reste le standard legal et industriel. Certaines equipes utilisent APCA en parallele comme verification de qualite.

Outils et integrations

OutilCas d'usage
Browser DevTools (Chrome, Firefox)Inspecter l'element affiche le ratio de contraste en temps reel
axe DevToolsAudit WCAG automatise incluant le contraste
WAVE (WebAIM)Extension de navigateur visualisant les erreurs de contraste
Stark (plugin Figma)Verification du contraste au moment de la conception
Color Contrast Analyser (TPGi)Application de bureau avec pipette
Lighthouse (Chrome)Audit d'accessibilite integre incluant le contraste
ARC Toolkit (Deque)Extension de navigateur d'accessibilite complete
PolypaneNavigateur pour designers avec outillage de contraste integre
GitHub Action : a11y-actionsVerifications automatisees au niveau PR
CI : pa11y, axe-core/cliBloquer les PR qui introduisent des echecs de contraste

Integrez au moins un outil automatise dans CI afin que les echecs de contraste ne puissent pas etre livres sans etre detectes.

Conseils

Confidentialite et donnees de conception

Le verificateur de contraste de couleurs s'execute entierement dans votre navigateur. Les couleurs et valeurs que vous entrez, les calculs et les resultats de contraste restent tous sur votre appareil. Rien n'est televerse sur un serveur, enregistre ou partage avec qui que ce soit.

Cela importe moins pour les couleurs individuelles (elles ne sont pas secretes) et plus pour la verification par lots ou le travail de systeme de design ou vous pourriez coller une palette de marque complete, des couleurs de maquette de produit internes ou des specifications UI de produit non publiees. Les outils de contraste en nuage enregistrent chaque collage dans leurs journaux de requetes, les conservent parfois pour «amelioration du service», et pourraient fuir des couleurs de marque non publiees ou des designs UI. Un verificateur base sur navigateur a une exposition nulle : les couleurs ne quittent jamais votre machine.

La verification de contraste basee sur navigateur fonctionne aussi hors ligne une fois la page chargee, utile pour les revues de design dans les avions, dans des environnements securises sans acces internet, ou partout ou vous ne pouvez pas ou ne devriez pas partager des donnees de conception avec un service tiers.

Questions fréquentes

Quel ratio de contraste viser ?

Pour du texte normal, visez au moins 4,5 : 1 (WCAG AA). Pour du texte large (18 px gras ou 24 px régulier), 3 : 1 suffit. Pour le niveau d'accessibilité le plus élevé (AAA), visez 7 : 1 pour du texte normal.

Cela ne s'applique-t-il qu'au texte ?

Non. WCAG 2.1 exige aussi un contraste suffisant pour les composants d'interface et les objets graphiques (icônes, bordures de champs, indicateurs de focus). Le minimum pour les éléments non textuels est 3 : 1.

Et en mode sombre ?

Le mode sombre nécessite les mêmes vérifications de contraste. Texte blanc sur fond sombre passe souvent facilement, mais texte gris sur fond gris foncé échoue souvent. Testez les deux modes.

Le contraste de couleur est-il une exigence légale ?

Dans de nombreuses juridictions, oui. L'ADA (US), EN 301 549 (UE) et des lois similaires imposent l'accessibilité numérique. La conformité WCAG est le standard reconnu pour y répondre.