Vérificateur de contraste de couleurs, gratuit

Testez les ratios de contraste WCAG 2.1 pour l'accessibilité.

Vos données ne quittent pas votre appareil
Texte large (24 px gras)
Texte normal à 16 px · Portez ce vieux whisky au juge blond qui fume.
-
Ratio de contraste
AA Normal
≥ 4.5:1
-
AA Large
≥ 3:1
-
AAA Normal
≥ 7:1
-
AAA Large
≥ 4.5:1
-

Comment utiliser

  1. Choisissez une couleur de premier plan (texte) et une couleur d'arrière-plan.
  2. Le ratio de contraste se met à jour instantanément.
  3. Vérifiez les notes WCAG (AA/AAA) pour du texte normal et large.
  4. Cliquez sur Inverser pour permuter les couleurs.

Questions fréquentes

Qu'est-ce que WCAG ?

WCAG (Web Content Accessibility Guidelines) sont les normes internationales pour rendre le contenu web accessible. Le niveau AA est le standard le plus couramment exigé. Le niveau AAA est le plus élevé.

Qu'est-ce qui compte comme « texte large » ?

Le texte large est défini comme au moins 18 pt (24 px) ou 14 pt (18,66 px) en gras. Il a une exigence de contraste plus faible parce qu'il est plus facile à lire.

Quel ratio de contraste viser ?

Pour le corps de texte, visez au moins 4,5 : 1 (AA). Pour la meilleure accessibilité, visez 7 : 1 (AAA). Les titres et textes larges ont besoin d'au moins 3 : 1.

Ce que mesure réellement WCAG

« Contraste » en accessibilité web ne signifie pas « à quel point les couleurs paraissent différentes », c'est un ratio de luminance relative précis entre deux couleurs. La luminance est une approximation perceptuelle de la clarté apparente d'une couleur pour un observateur voyant typique. Le ratio va de 1 : 1 (deux couleurs de luminance identique, invisibles l'une sur l'autre) à 21 : 1 (noir pur #000000 sur blanc pur #ffffff). Trois critères de succès normatifs de WCAG utilisent ce ratio :

Le seuil de 4,5 : 1 n'est pas arbitraire. La dérivation propre à WCAG part d'une référence ANSI de 3 : 1 pour une vision normale, multipliée par 1,5 pour les utilisateurs ayant une acuité de 20/40 (le seuil souvent utilisé pour définir la « basse vision » au sens légal). 4,5 = 3 × 1,5. Le seuil AAA de 7 : 1 étend la même logique à une acuité d'environ 20/80. Les logos, noms de marque et textes accessoires ou décoratifs sont exemptés, mais tout le reste relève de la règle.

La formule

La formule de contraste de la technique G18 de WCAG comporte trois étapes. Les entrées sont des valeurs de canal sRGB 8 bits (0-255), chacune d'abord convertie dans une plage de 0 à 1 :

  1. Linéariser le sRGB (annuler la courbe gamma). Pour chaque canal V : si V ≤ 0,04045, V_linéaire = V ÷ 12,92 ; sinon, V_linéaire = ((V + 0,055) ÷ 1,055)^2,4. (Les anciens documents WCAG utilisaient 0,03928 ; le W3C l'a corrigé en 0,04045 par erratum pour correspondre à la spécification sRGB formelle, la différence numérique est négligeable.)
  2. Calculer la luminance relative : L = 0,2126·R + 0,7152·G + 0,0722·B (linéarisée). Les coefficients proviennent de la fonction d'efficacité lumineuse photopique de l'observateur standard CIE 1931 : l'œil humain est le plus sensible au vert (~71 %), puis au rouge (~21 %), puis au bleu (~7 %). C'est pourquoi un texte bleu pur sur fond blanc peut échouer au contraste alors même que les couleurs paraissent très différentes.
  3. Prendre le ratio : (L1 + 0,05) ÷ (L2 + 0,05), où L1 est la couleur la plus claire et L2 la plus sombre. Le décalage de 0,05 modélise la lumière parasite ambiante sur un écran typique, et empêche le ratio de s'emballer lorsqu'une couleur est presque noire.

Exemple traité pour du noir sur blanc : le blanc a L = 1,0, le noir a L = 0, donc le ratio est (1 + 0,05) ÷ (0 + 0,05) = 21. C'est le contraste maximal possible en sRGB.

Qu'est-ce qui compte comme « texte large » ?

WCAG définit le texte à grande échelle comme au moins 18 points (graisse normale) ou 14 points gras. Converti en pixels CSS selon la valeur indiquée par le W3C, 1 pt = 1,333 px :

La plupart des navigateurs affichent le corps de texte par défaut à 16 px / 12 pt, ce qui n'est pas large. Une erreur courante consiste à considérer tout titre comme large ; un <h3> stylé à 18 px en graisse normale relève quand même de la règle des 4,5 : 1 pour le texte normal.

Le cas limite célèbre : #767676 sur blanc

Les concepteurs en quête de minimalisme choisissent souvent des gris moyens pour le corps de texte. Deux valeurs identiques à l'œil se trouvent de part et d'autre de la ligne WCAG :

Premier planArrière-planRatioAA Normal
#000000#ffffff21.00Réussi (max)
#595959#ffffff~7.0Réussi + AAA
#767676#ffffff4.54Réussi (de justesse)
#777777#ffffff4.48Échoué
#959595#ffffff3.00Échoué (large uniquement)
#ffff00#ffffff1.07Échoué

Un décalage hexadécimal d'un seul caractère, la différence entre #767676 et #777777 : fait passer ce gris d'apparence identique de la réussite à l'échec, car WCAG interdit explicitement d'arrondir les ratios à la hausse. WebAIM cite spécifiquement #777777 comme une « nuance de gris couramment utilisée » qui ne satisfait pas au niveau AA. Ce seul piège est responsable d'une part mesurable des échecs d'audit automatisé lors des analyses de sites réels.

Là où la formule montre ses limites

La formule de luminance relative est rapide et déterministe, mais elle présente des défauts perceptuels bien documentés :

APCA (Accessible Perceptual Contrast Algorithm) est le candidat de remplacement en cours de prototypage pour WCAG 3. Il renvoie une unique valeur Lc signée allant d'environ −108 à +106, tient compte de la polarité et intègre une table de correspondance graisse / taille de police. APCA est actuellement une référence bêta non commerciale, et non une cible de conformité légale (les sites en production devraient toujours viser WCAG 2.1 / 2.2 AA), mais c'est un contrôle de lisibilité plus précis, en particulier pour le mode sombre. Chrome DevTools intègre un aperçu APCA dans son sélecteur de couleur.

Pourquoi cela compte sur le plan juridique

WCAG 2.2 est devenue une recommandation du W3C le 5 octobre 2023, mais les critères de contraste sont repris sans changement de la version 2.1. Le contraste des couleurs est l'un des problèmes les plus cités dans les procès relatifs à l'accessibilité numérique, et plusieurs juridictions le rendent de fait obligatoire :

Contraste des couleurs et daltonisme

Une confusion fréquente : le ratio WCAG repose sur la luminance et reste utile pour la plupart des utilisateurs daltoniens ; un ratio de 4,5 : 1 dérivé de la luminance correspond à un signal perceptuel fort même lorsque les indices de teinte sont perdus. C'est pourquoi les critères de contraste côtoient un critère distinct, 1.4.1 Utilisation de la couleur, qui interdit de se reposer sur la seule couleur pour transmettre une information. Le contraste ne vous dit pas si un graphique rouge contre vert est lisible pour un deutéranope, seulement si chaque couleur contraste individuellement avec le fond du graphique. Les graphiques et les interfaces à états nécessitent des motifs, des étiquettes ou des formes superposés à la couleur.

Liste de contrôle pratique

Autres questions

Pourquoi le jaune pur sur blanc échoue-t-il alors qu'il paraît lumineux ?

Le jaune (#ffff00) sur blanc donne 1,07 : 1, quasiment aucun contraste. La formule de luminance pondère le vert à 71 % et le rouge à 21 %, si bien que le jaune (R+G) a une luminance très proche de celle du blanc. Le jaune sur noir, à l'inverse, donne 19,56 : 1, l'une des combinaisons les plus lisibles qui soient, ce qui explique son utilisation pour les panneaux routiers et les avertissements sur les casques de chantier.

Faut-il toujours viser le niveau AAA ?

Non. WCAG indique elle-même : « Il n'est pas recommandé d'exiger la conformité de niveau AAA comme politique générale pour des sites entiers, car il n'est pas possible de satisfaire à tous les critères de succès de niveau AAA pour certains contenus. » Le niveau AA est la cible légale presque partout ; le AAA est réservé à la lecture d'informations à fort enjeu (contenus longs, documents gouvernementaux destinés au grand public, publications privilégiant l'accessibilité).

Les outils automatisés peuvent-ils détecter chaque échec de contraste ?

Non. axe-core, Lighthouse et les audits similaires signalent de manière fiable les échecs de texte sur couleur unie, mais ils ne peuvent pas tester le texte superposé à des images d'arrière-plan, des dégradés CSS, des arrière-plans de pseudo-éléments ou des couleurs de bordure CSS ; ces cas sont signalés comme « incomplets » et nécessitent une vérification manuelle. Un sélecteur en direct comme celui-ci est particulièrement utile pour échantillonner la couleur d'arrière-plan dominante d'une image et vérifier uniquement la paire texte/arrière-plan avant la mise en production.

Cet outil prend-il en charge la transparence / le canal alpha ?

Cette page vérifie des paires de couleurs hexadécimales opaques. Si votre texte ou votre arrière-plan utilise un canal alpha, le contraste réel dépend de ce qui se trouve derrière ; vous devrez d'abord calculer le premier plan composité, puis vérifier la couleur opaque obtenue.

Des données sont-elles envoyées à un serveur ?

Non. La formule de luminance et le ratio sont calculés dans votre navigateur ; les couleurs ne quittent jamais votre appareil. La page fonctionne hors ligne une fois chargée.

Outils associés

Convertisseur de couleurs, gratuit Génération de palettes de couleurs en ligne, gratuite Générateur de dégradés CSS, gratuit