
Comprobar el contraste de color WCAG en línea: AA, AAA y texto grande
Un contraste insuficiente entre texto y fondo es el error de accesibilidad más frecuente en la web. Comprueba AA/AAA pegando dos colores, sin plugin ni extensión.
El contraste: el error de accesibilidad más frecuente en la web
Cada año, la auditoría WebAIM Million (un análisis de las páginas de inicio más visitadas de la web) sitúa el contraste de texto insuficiente como el fallo WCAG más detectado — por delante del texto alternativo ausente o los enlaces sin etiqueta. Es también uno de los pocos criterios de accesibilidad que se puede verificar en segundos, sin lector de pantalla ni auditoría completa. El comprobador de contraste de FastMinify calcula el ratio WCAG 2.2 entre dos colores CSS (HEX, RGB, HSL, OKLCH, color() o colores con nombre) y muestra al instante los veredictos AA/AAA para texto normal, texto grande y elementos no textuales — sin enviar nada a un servidor. Va más allá de un simple par de colores: un modo matriz permite cruzar toda una paleta de primer plano contra toda una paleta de fondo en un solo paso. El cluster completo vive en el hub de Color y CSS.
Los errores de contraste que se repiten una y otra vez
Un gris #999999 sobre blanco da un ratio de aproximadamente 2.85:1 — muy por debajo del umbral AA de 4.5:1. Aun así, es una de las elecciones de diseño más comunes para texto secundario, placeholders y leyendas.
Los colores de marca "suaves" (azul pastel, verde menta, naranja claro) suelen elegirse por identidad visual sin probarlos nunca con texto blanco encima.
Un titular blanco funciona sobre la zona oscura del cielo de una foto de cabecera, pero se vuelve ilegible sobre la zona clara de una nube — el contraste varía según el punto de la imagen.
outline: none sin sustituto rompe la navegación por teclado — y el contraste no-texto (SC 1.4.11) también se aplica a los indicadores de foco, no solo al texto.
AA, AAA y texto grande: ¿qué ratio hay que buscar?
El criterio WCAG 1.4.3 (Contrast Minimum) exige un ratio de al menos 4.5:1 para el texto normal en nivel AA. El nivel AAA, más estricto (criterio 1.4.6), eleva la exigencia a 7:1. AA es el nivel que exige prácticamente toda normativa legal de accesibilidad (ADA en EE. UU., EN 301 549 en Europa, RGAA en Francia); AAA sigue siendo recomendado pero rara vez obligatorio para todo un sitio.
WCAG define "texto grande" como texto de al menos 24px (18pt), o de al menos 18.67px (14pt) si está en negrita (grosor ≥ 700). Por debajo de esos umbrales, el texto se considera normal aunque visualmente parezca grande. FastMinify calcula automáticamente el umbral aplicable a partir del tamaño y el grosor indicados.
Desde WCAG 2.1, el criterio 1.4.11 (Non-text Contrast) exige un ratio de al menos 3:1 para los componentes de interfaz (bordes de campos de formulario, casillas de verificación, iconos con significado, indicadores de foco) frente a su color adyacente — no solo para el texto.
Cómo se calcula realmente el ratio de contraste
El ratio WCAG 2.x compara la luminancia relativa de los dos colores (un valor de 0 a 1 derivado de los canales RGB linealizados, ponderados con 0.2126 para el rojo, 0.7152 para el verde y 0.0722 para el azul — el ojo humano percibe el verde con mucha más intensidad que el azul). El ratio final es (L1 + 0.05) / (L2 + 0.05), donde L1 es la luminancia del color más claro. Por eso dos colores "claramente diferentes" pueden dar un ratio parecido, mientras que dos tonos que parecen similares pueden tener luminancias muy distintas.
Antes
Después
color() como entrada y los convierte a sRGB antes de calcular (vía colorjs.io)El ratio WCAG 2.x tiene una limitación conocida: trata "negro sobre blanco" y "blanco sobre negro" de forma simétrica, lo cual no siempre coincide con la percepción real. APCA (Advanced Perceptual Contrast Algorithm), candidato para WCAG 3, tiene en cuenta la polaridad (texto claro sobre fondo oscuro frente a lo contrario) y el tamaño de fuente para un juicio más preciso. FastMinify ofrece un overlay APCA opcional además del ratio WCAG 2.2 oficial — no como sustituto, ya que WCAG 3 todavía no es un estándar publicado.
Flujo de trabajo de color-contrast-checker: de un par de colores a una paleta completa
Abre el comprobador de contraste, pega tu color de primer plano y de fondo en cualquier formato CSS (HEX, RGB, HSL, OKLCH, con nombre). El ratio y las insignias AA/AAA/no-texto se recalculan en vivo. Ajusta el tamaño y el grosor del texto para ver cómo se aplica automáticamente el umbral de "texto grande".
Paso 1 — Pega ambos colores
Primer plano y fondo, en cualquier formato CSS válido. No se necesita conversión manual.
Paso 2 — Ajusta tamaño y grosor del texto
16px/400 por defecto (texto normal). Cambia a 24px o 18.67px+negrita para probar un titular — el umbral de "texto grande" (3:1/4.5:1) se aplica automáticamente.
Paso 3 — Lee el veredicto
Ratio exacto (p. ej. 4.87:1), insignia AA/AAA/AA-large/fallo para el texto, y un veredicto separado para el contraste no-texto (3:1, SC 1.4.11).
Un botón primario suele tener tres variantes de color (normal, hover, disabled) que a menudo no se prueban individualmente.
En lugar de probar una a una las combinaciones de un design system, pega tu lista de colores de texto en filas y tu lista de colores de fondo en columnas (hasta 16 colores por eje). El resultado muestra una cuadrícula con el veredicto de cada cruce, filtrable por nivel de conformidad (AAA / AA / AA-large / fallo).
Cada comprobación (colores, tamaño de texto, modo matriz o par, opciones APCA) se codifica en la URL. Copia el enlace desde la barra de direcciones y pégalo en un pull request, un ticket o un mensaje a tu diseñador — la página se reabre exactamente en el mismo estado.
Convertir el contraste en un criterio de CI, no solo un vaivén de diseño
Un comprobador manual es perfecto para diseñar una paleta; para evitar regresiones, el contraste también debe verificarse automáticamente en cada pull request. axe-core y Lighthouse CI detectan la mayoría de los fallos de contraste en texto estático (les cuesta más con texto sobre imágenes o degradados).
Ejemplo básico
Comprobación manual rápida, sin instalación ni datos enviados. El modo matriz, único entre estas opciones, permite auditar un design system completo en un solo paso, y la URL compartible facilita la colaboración entre diseño y desarrollo. Límite: es una comprobación manual que no sustituye una auditoría automatizada en CI, y no detecta el contraste sobre una imagen o un degradado complejo.
El selector de color integrado muestra el ratio de contraste directamente sobre el elemento seleccionado en la página real, con los estilos calculados — no requiere ninguna herramienta externa. Límite: un elemento a la vez, lo que resulta tedioso en una paleta completa, sin modo matriz ni enlace compartible.
Una auditoría automatizada integrada en el pipeline de CI detecta sistemáticamente las regresiones de contraste en cada pull request, y cubre la accesibilidad más allá del contraste. Límite: no sustituye la fase previa de diseño de la paleta, y puede producir falsos negativos con texto superpuesto a una imagen.
Conclusión
El contraste de color sigue siendo el error de accesibilidad más frecuente en la web — y uno de los más fáciles de corregir una vez detectado. AA (4.5:1) para texto normal, 3:1 para texto grande y elementos no textuales: tres cifras que conviene recordar antes de dar por buena una paleta. El comprobador de contraste de FastMinify ofrece el veredicto al instante, en modo par o en modo matriz para todo un design system, sin enviar nunca tus colores de marca a un servidor. Combínalo con una auditoría axe-core en CI para evitar regresiones, y con el resto del hub de Color y CSS para construir una paleta coherente de principio a fin.
Artículos relacionados

Meta description 155 caracteres, title ~60, tweet 280: cuenta palabras y caracteres en el navegador con el contador FastMinify — presets SEO, tiempo de lectura, 100 % local.

Deployment, Service e Ingress: valida la estructura YAML antes de `kubectl apply` — comprobación local en el navegador, sin cluster ni kubectl.

Recorrido por los clusters FastMinify, intenciones de búsqueda y flujos — minify, DevOps, API y SVG en el navegador, sin cuenta.