Accesibilidad • WCAG

Contrast ratio y color: guía práctica para cumplir WCAG sin sacrificar estética

Cómo tomar decisiones de color medibles (AA/AAA) sin “apagar” la marca: patrones, trampas comunes y un flujo rápido para validar contraste en UI real.

Cafetal Dev Studio 10 min de lectura Ir al contenido

En este artículo aprenderás

  • Cómo interpretar ratios de contraste (texto, iconos y componentes).
  • Errores típicos: estados hover, placeholders y chips “bonitos” pero ilegibles.
  • Cómo ajustar paletas sin perder identidad (tinte, tono y valor).
  • Checklist rápido para validar contraste en flujos reales.

El contraste no es “hacer todo negro sobre blanco”. Es garantizar que el texto y los elementos críticos se distingan con claridad en condiciones reales: pantallas con brillo alto, fatiga visual, daltonismo, baja visión, y entornos con luz variable. La buena noticia: puedes cumplir WCAG sin matar tu paleta si diseñas con intención (roles, no colores sueltos) y mides el contraste en los estados correctos.

1) Qué exige WCAG (sin tecnicismos innecesarios)

Para texto normal, el objetivo típico es 4.5:1 (WCAG AA). Para texto grande (≈ 24px regular o 18.66px bold), 3:1. Para componentes de UI y gráficos esenciales (bordes de inputs, iconos de acción, toggles), busca 3:1 contra el fondo.

Regla práctica: si un elemento transmite información o habilita una acción (texto, enlace, icono, borde de control), trátalo como contenido “legible”, no como decoración.

2) Errores comunes que rompen el contraste (aunque “se vea bien”)

  • Estados ignorados: hover/focus/disabled con opacidad baja. El contraste se evalúa en el estado default y también en estados donde se espera leer o actuar.
  • Texto sobre imágenes/gradientes: una zona clara del fondo puede bajar el ratio aunque “en promedio” parezca correcto.
  • Uso de color como única señal: “errores en rojo” sin icono, sin texto, sin borde ni mensaje; o links solo por color.
  • Grises demasiado cercanos: body text en gris medio sobre fondo gris cálido suele fallar y se agrava en móviles.

3) Un método de diseño que sí escala: tokens por rol

En lugar de “este azul es para botones”, define roles: texto primario/secundario, fondo, superficie, borde, énfasis, y estados (hover/focus/disabled). Luego ajustas tonalidades dentro de cada rol hasta que cada combinación supere el ratio esperado. Así mantienes estética y consistencia.

Tip: evita “bajar opacidad” para desactivar. Mejor cambia a una tonalidad específica de texto/borde con ratio suficiente, y reduce el énfasis con tamaño, peso o espaciado.

4) Cómo arreglar contraste sin cambiar tu paleta (estrategias rápidas)

Problema Solución que conserva estética
Texto claro sobre color vibrante falla Oscurece el fondo (no el texto), o añade una capa (overlay) sutil detrás del texto.
Links “solo por color” Subrayado por defecto + color; conserva branding sin depender del tono.
Borde de input casi invisible Sube contraste del borde (3:1) y refuerza focus con anillo visible (no solo sombra suave).
“Disabled” ilegible Mantén legible el texto (al menos para comprender), y comunica deshabilitado con cursor, icono o label.

5) Checklist de contraste (para QA y handoff)

  1. Texto body: 4.5:1 contra el fondo principal y superficies.
  2. Títulos y texto grande: 3:1 mínimo (pero no abuses: la legibilidad también depende de interlineado y ancho de columna).
  3. Controles (inputs, toggles, chips): borde/ícono/estado activo con 3:1.
  4. Focus visible: que se note en teclado (no solo un cambio de color sutil).
  5. Estados: default, hover, active, focus, disabled, error, success.
  6. Fondos complejos: si hay imagen/gradiente, usa overlay o tarjetas para el texto.

6) Ejemplo de decisión “estética + accesible”

Si tu marca usa un secundario coral brillante, no tienes que renunciar: úsalo para acentos (bordes, iconos, pequeñas etiquetas) y reserva texto principal para una tinta sólida. Para CTAs, prueba el coral como fondo con texto en tinta, o coral como borde con texto en tinta y un fondo claro: el contraste se logra con combinación, no con un color “mágico”.

Lectura recomendada: si estás diseñando estados de error y ayuda en formularios, cruza esta guía con diseño de formularios accesibles. Para estándares y tendencias, complementa con accesibilidad en 2026.

Cuando el contraste está bien resuelto, la interfaz se siente “tranquila”: menos esfuerzo para leer, menos errores, y más confianza. La estética no se pierde; se vuelve más intencional.