Contraste de color

El texto gris claro sobre blanco queda elegante en un diseño y desaparece en un móvil al sol. El contraste es el fallo de accesibilidad más común de la web, y uno de los más baratos de corregir.

Qué falla

El contraste es la diferencia de luminosidad entre un texto, o una forma importante, y lo que tiene detrás. Las WCAG lo miden como un ratio que va de 1:1 (blanco sobre blanco) a 21:1 (negro sobre blanco). Por debajo de cierto ratio, quien tiene baja visión no puede leer el texto, y el resto lo lee más despacio.

Estos son los mínimos del nivel AA, el que piden las leyes y normas:

QuéRatio mínimo
Texto normal4,5:1
Texto grande (24 px, o 18,66 px en negrita)3:1
Iconos, bordes de campos, anillos de foco, líneas de gráficos3:1

Falla en los mismos sitios en casi todas las webs:

Texto gris. #999 sobre blanco da 2,8:1. Es el hallazgo más frecuente de la web, y suele venir de un sistema de diseño que eligió un gris “suave” una vez y lo usó en todas partes.

Placeholders y textos de ayuda. El texto pequeño y gris bajo un campo, o dentro de él, suele ser el más claro de la página y a la vez el que explica qué hay que escribir.

Botones con el color de marca. El texto blanco sobre un color de marca de tono medio (naranja, azul claro, verde) cae a menudo entre 2,5:1 y 4:1.

Texto sobre imágenes. Un titular sobre una foto puede cumplir por un lado y fallar por el otro.

Bordes de los campos. Un campo con un borde gris muy claro cuesta incluso encontrarlo, y por eso los elementos no textuales tienen su propia regla de 3:1.

Cómo probarlo

Un minuto por página, sin instalar nada.

  1. Abre la página en Chrome, haz clic derecho sobre un texto y elige Inspeccionar.
  2. En el panel de estilos, pulsa el cuadradito de color junto a color. El selector muestra el ratio de contraste y una marca de cumple o no cumple para AA y AAA.
  3. Busca el texto más claro de la página: placeholders, pies de foto, enlaces del pie, precios, fechas.
  4. Comprueba un botón de cada color, con su texto.
  5. Comprueba el borde de un campo de formulario y el anillo de foco al llegar con el tabulador.

Para comprobar un solo par, como el color de tu marca sobre blanco, usa el comprobador de contraste: te da el ratio y, si falla, el color más cercano que cumple.

Para revisar una página entera de una vez, el análisis automático es la herramienta adecuada: el contraste es un cálculo, así que el test de accesibilidad gratuito encuentra todas las parejas que fallan y te da el ratio exacto de cada una.

Cómo corregirlo

Oscurece, no rediseñes. La mayoría de fallos se arreglan bajando un gris unos pasos. #767676 es el gris más claro que cumple 4,5:1 sobre blanco, y en pantalla sigue leyéndose como gris.

/* 2,8:1, no cumple */
.pie-foto { color: #999999; }

/* 4,5:1, cumple y sigue viéndose claro */
.pie-foto { color: #767676; }

Corrígelo en las variables, no página a página. Si tu web usa variables o un sistema de diseño, cambia el valor una vez (--texto-secundario, --borde, --placeholder) y todos los casos se corrigen a la vez.

En los botones de marca, cambia el texto o el tono. El texto oscuro sobre un color de marca claro suele cumplir donde el blanco no. Si el texto tiene que ser blanco, usa un tono más oscuro del color de marca solo para los botones.

Pon una capa detrás del texto sobre imágenes. Una banda sólida o una capa semitransparente te da un fondo predecible contra el que medir.

.titular-portada {
  background: rgb(0 0 0 / 0.6);
  color: #fff;
}

No dependas solo del color. Los errores llevan un mensaje y un icono, los enlaces dentro del texto van subrayados y los gráficos llevan etiquetas o tramas además de colores.

Por qué importa comercialmente

El bajo contraste no bloquea una compra como lo hace una trampa de teclado. Frena un poco a todo el mundo y deja fuera del todo a algunas personas, y suele estar repartido por todas las páginas. Por eso compensa corregirlo en el origen: unos pocos valores de color cambiados en un solo sitio eliminan decenas de hallazgos de una auditoría, y la web se lee mejor para cualquier visita.

Preguntas frecuentes

¿Qué ratio de contraste exigen las WCAG?

Para el nivel AA, el texto normal necesita al menos 4,5:1 frente a su fondo. El texto grande, a partir de 24 px, o de 18,66 px en negrita, necesita 3:1. Los iconos, los bordes de los campos, los indicadores de foco y cualquier parte de la interfaz que haga falta ver para usar la página también necesitan 3:1. El nivel AAA sube el texto a 7:1, pero lo que piden las leyes y normas es el AA.

¿El texto de ejemplo (placeholder) cuenta?

Sí. Es texto, así que necesita 4,5:1 como cualquier otro. El gris que pone el navegador por defecto suele suspender. Si lo aclaras a propósito para que no parezca un valor real, es señal de que el campo necesita una etiqueta visible.

¿Un botón desactivado tiene que cumplir?

No. Las WCAG excluyen los componentes inactivos, los logotipos y el texto puramente decorativo. Pero ojo: un botón que parece desactivado por su bajo contraste y en realidad funciona sí es un fallo, y además confunde.

¿Y el texto sobre imágenes o degradados?

El texto tiene que alcanzar el ratio en todas las zonas del fondo sobre las que está. En una foto, mide la parte más clara detrás del texto claro, o la más oscura detrás del texto oscuro. La solución habitual es una capa sólida o semitransparente detrás del texto, no otra foto.

¿Basta con el color para marcar un error o un enlace?

No. Es otro criterio, el 1.4.1 Uso del color. Un campo que solo se pone en rojo, o un enlace que solo se distingue por el color, falla para quien no distingue esos colores. Añade un icono, un mensaje o un subrayado.

Los requisitos normativos varían según la jurisdicción, el servicio, el tipo de organización y otros factores. Uxerfy realiza evaluaciones de accesibilidad y proporciona información orientada al cumplimiento; no presta asesoramiento jurídico ni emite certificaciones de conformidad. Consulte con un profesional del derecho para determinar qué obligaciones le aplican.

Prueba tu propia web

Abrimos tu página en un navegador real y te enseñamos cada problema, su gravedad y dónde está.