
Vérifier le contraste de couleur WCAG en ligne : AA, AAA et texte large
Un ratio de contraste texte/fond insuffisant est l'erreur d'accessibilité la plus fréquente sur le web. Vérifiez AA/AAA en collant deux couleurs, sans plugin ni extension.
Le contraste : l'erreur d'accessibilité la plus fréquente sur le web
Chaque année, l'audit WebAIM Million (analyse des pages d'accueil les plus visitées) place le contraste de texte insuffisant en tête des échecs WCAG détectés — devant les images sans texte alternatif ou les liens sans libellé. C'est aussi l'un des rares critères d'accessibilité qui se vérifie en quelques secondes, sans lecteur d'écran ni audit complet. Le vérificateur de contraste FastMinify calcule le ratio WCAG 2.2 entre deux couleurs CSS (HEX, RGB, HSL, OKLCH, color() ou couleurs nommées) et affiche immédiatement les verdicts AA/AAA pour texte normal, texte large et éléments non textuels — sans rien envoyer à un serveur. Il va plus loin qu'un simple couple de couleurs : un mode matrice permet de croiser toute une palette de premier plan contre toute une palette d'arrière-plan en un seul passage. Le cluster complet vit sur le hub Couleur & CSS.
Les erreurs de contraste qui reviennent le plus souvent
Un gris #999999 sur blanc affiche un ratio d'environ 2.85:1 — bien en dessous du seuil AA de 4.5:1. C'est pourtant l'un des choix de design les plus courants pour les textes secondaires, placeholders et légendes.
Les couleurs de marque "douces" (bleu pastel, vert menthe, orange clair) sont souvent choisies pour l'identité visuelle sans jamais être testées avec du texte blanc dessus.
Un titre blanc sur une photo de héros fonctionne sur la zone sombre du ciel, mais devient illisible sur la zone claire du nuage — le contraste varie selon l'endroit de l'image.
outline: none sans remplacement casse la navigation clavier — et c'est un contraste non-texte (SC 1.4.11) qui s'applique aussi aux indicateurs de focus, pas seulement au texte.
AA, AAA et texte large : quel ratio viser ?
Le critère WCAG 1.4.3 (Contrast Minimum) impose un ratio d'au moins 4.5:1 pour le texte normal en niveau AA. Le niveau AAA, plus strict (critère 1.4.6), monte l'exigence à 7:1. AA est le niveau visé par la quasi-totalité des obligations légales (RGAA en France, EN 301 549 en Europe, ADA aux États-Unis) ; AAA reste recommandé mais rarement exigé pour l'ensemble d'un site.
WCAG définit le "texte large" comme du texte d'au moins 24px (18pt), ou d'au moins 18.67px (14pt) s'il est en gras (graisse ≥ 700). En dessous de ces seuils, le texte est considéré comme normal même s'il paraît visuellement imposant. FastMinify calcule automatiquement le seuil applicable à partir de la taille et de la graisse renseignées.
Depuis WCAG 2.1, le critère 1.4.11 (Non-text Contrast) impose un ratio d'au moins 3:1 pour les composants d'interface (bordures de champs, cases à cocher, icônes porteuses de sens, indicateurs de focus) contre leur couleur adjacente — pas seulement pour le texte.
Comment le ratio de contraste est calculé
Le ratio WCAG 2.x compare la luminance relative des deux couleurs (une valeur de 0 à 1 dérivée des composantes RVB linéarisées, pondérées 0.2126 pour le rouge, 0.7152 pour le vert, 0.0722 pour le bleu — l'œil humain perçoit le vert bien plus intensément que le bleu). Le ratio final est (L1 + 0.05) / (L2 + 0.05), où L1 est la luminance de la couleur la plus claire. C'est pour cela que deux couleurs "différentes à l'œil" peuvent donner un ratio proche, tandis que deux teintes qui semblent similaires peuvent avoir des luminances très éloignées.
Avant
Après
color() en entrée et les convertit en sRGB avant calcul (via colorjs.io)Le ratio WCAG 2.x a une limite connue : il traite le contraste "noir sur blanc" et "blanc sur noir" de façon symétrique, ce qui ne correspond pas toujours à la perception réelle. APCA (Advanced Perceptual Contrast Algorithm), pressenti pour WCAG 3, prend en compte la polarité (texte clair sur fond sombre vs l'inverse) et la taille de police pour un jugement plus fin. FastMinify propose un overlay APCA optionnel en complément du ratio WCAG 2.2 officiel — pas en remplacement, puisque WCAG 3 n'est pas encore une norme publiée.
Workflow color-contrast-checker : du couple de couleurs à la palette complète
Ouvrez le vérificateur de contraste, collez votre couleur de premier plan et votre couleur de fond dans n'importe quel format CSS (HEX, RGB, HSL, OKLCH, nommée). Le ratio et les badges AA/AAA/non-texte se recalculent en direct. Ajustez la taille et la graisse du texte pour voir le seuil "texte large" s'appliquer automatiquement.
Étape 1 — Collez les deux couleurs
Premier plan et arrière-plan, dans n'importe quel format CSS valide. Aucune conversion manuelle nécessaire.
Étape 2 — Réglez taille et graisse du texte
16px/400 par défaut (texte normal). Passez à 24px ou 18.67px+bold pour tester un titre — le seuil "texte large" (3:1/4.5:1) s'applique automatiquement.
Étape 3 — Lisez le verdict
Ratio exact (ex. 4.87:1), badge AA/AAA/AA-large/échec pour le texte, et verdict séparé pour le contraste non-texte (3:1, SC 1.4.11).
Un bouton primaire a souvent trois variantes de couleur (normal, hover, disabled) qu'on oublie de tester individuellement.
Plutôt que de tester une à une les combinaisons d'un design system, collez votre liste de couleurs de texte en lignes et votre liste de couleurs de fond en colonnes (jusqu'à 16 couleurs par axe). Le résultat affiche une grille avec le verdict de chaque croisement, filtrable par niveau de conformité (AAA / AA / AA-large / échec).
Chaque vérification (couleurs, taille de texte, mode matrice ou paire, options APCA) est encodée dans l'URL. Copiez le lien depuis la barre d'adresse et collez-le dans une pull request, un ticket ou un message à votre designer — la page se rouvre exactement dans le même état.
Faire du contraste un critère de CI, pas juste un aller-retour design
Un vérificateur manuel est parfait pour concevoir une palette ; pour éviter les régressions, le contraste doit aussi être vérifié automatiquement à chaque pull request. axe-core et Lighthouse CI détectent la plupart des échecs de contraste sur du texte statique (ils ont plus de mal avec le texte sur image ou les dégradés).
Exemple de base
Vérification manuelle rapide, sans installation ni donnée envoyée. Le mode matrice, unique parmi ces options, permet d'auditer un design system complet en un seul passage, et l'URL partageable facilite la collaboration entre designers et développeurs. Limite : c'est une vérification manuelle qui ne remplace pas un audit automatisé en CI, et elle ne détecte pas le contraste sur une image ou un dégradé complexe.
L'inspecteur de couleur intégré affiche le ratio de contraste directement sur l'élément sélectionné dans la page réelle, avec les styles calculés — aucun outil externe nécessaire. Limite : un élément à la fois, ce qui devient fastidieux sur une palette complète, sans mode matrice ni partage par lien.
Un audit automatisé intégré au pipeline CI détecte systématiquement les régressions de contraste à chaque pull request, et couvre l'accessibilité au-delà du seul contraste. Limite : il ne remplace pas la phase de conception de la palette en amont, et peut produire des faux négatifs sur du texte superposé à une image.
Conclusion
Le contraste de couleur reste l'erreur d'accessibilité la plus fréquente sur le web — et l'une des plus simples à corriger une fois détectée. AA (4.5:1) pour le texte normal, 3:1 pour le texte large et les éléments non textuels : trois chiffres à retenir avant de valider une palette. Le vérificateur de contraste FastMinify donne le verdict instantanément, en mode paire ou en mode matrice pour tout un design system, sans jamais transmettre vos couleurs de marque à un serveur. Combinez-le avec un audit axe-core en CI pour éviter les régressions, et avec le reste du hub Couleur & CSS pour construire une palette cohérente de bout en bout.
Articles connexes

Meta description 155 caractères, title ~60, tweet 280 : comptez mots et caractères dans le navigateur avec le compteur FastMinify — presets SEO, temps de lecture, 100 % local.

Deployment, Service, Ingress : validez la structure YAML avant `kubectl apply` — contrôle local dans le navigateur, sans cluster ni kubectl.

Tour d'horizon des clusters FastMinify, intentions SEO et workflows — minify, DevOps, API et SVG dans le navigateur, sans compte.