Accesibilidad

Las ratios de contraste de la WCAG explicadas: guía práctica para diseñadores

Por el equipo de colorPaletteFinder10 min de lectura

He aquí un número al que vuelvo una y otra vez: en el informe WebAIM Million de 2025, el texto de bajo contraste fue el fallo de accesibilidad más común de toda la web, presente en el 79,1% del millón de páginas de inicio más visitadas. No el texto alternativo ausente. No los botones sin etiquetar. El contraste. El problema de accesibilidad más detectado del mundo son dos colores demasiado parecidos, y casi todos los equipos que lo publican no tienen ni idea de que lo han hecho.

Yo mismo he publicado ese fallo. Hace años construí un panel "premium" con un elegante texto gris #9CA3AF sobre blanco, aprobado por todos los presentes en la sala porque se veía refinado en una pantalla Retina recién estrenada, en una sala de reuniones a oscuras. Una semana después llegó un ticket de soporte de un usuario en un tren soleado que, literalmente, no podía leer las etiquetas. El texto estaba en torno a 2,6:1. La WCAG pide 4,5:1. Esa brecha es todo el tema de este artículo.

Qué es realmente una ratio de contraste de la WCAG

Una ratio de contraste de la WCAG es un único número que describe cuánto difieren dos colores en luminosidad, expresado como una ratio de 1:1 a 21:1. Blanco sobre blanco es 1:1 (invisible). Negro puro sobre blanco puro es 21:1 (el máximo). Todo lo que diseñas vive en algún punto intermedio, y la WCAG fija el suelo por debajo del cual no se te permite bajar.

Lo crucial que hay que interiorizar pronto: el contraste tiene que ver con la luminancia, no con que los colores "se vean diferentes". El rojo y el verde se ven enormemente distintos para la mayoría de la gente, pero un rojo saturado (#FF0000) sobre un verde saturado (#008000) se sitúa solo en torno a 1,3:1 porque tienen casi la misma luminosidad. Para una persona con daltonismo rojo-verde, o para cualquiera que eche un vistazo a una pantalla de baja calidad, ese emparejamiento es una masa indistinguible. Tu ojo se deja engañar por el tono; la fórmula de contraste no.

La fórmula, en términos sencillos

La ratio se calcula como (L1 + 0.05) / (L2 + 0.05), donde L1 es la luminancia relativa del color más claro y L2 la luminancia del más oscuro. Casi nunca la calcularás a mano, pero entender las dos etapas te dice por qué tu intuición te engaña.

Primero, la luminancia relativa de cada color se encuentra tomando sus canales rojo, verde y azul, "linealizándolos" (deshaciendo la curva gamma que aplican las pantallas, con la regla de que los canales iguales o inferiores a 0.03928 se dividen entre 12.92, y los superiores se pasan por ((c + 0.055) / 1.055) ^ 2.4), y luego ponderándolos: 0.2126 para el rojo, 0.7152 para el verde y 0.0722 para el azul. Esos pesos no son arbitrarios. El ojo humano es extraordinariamente sensible al verde y, en comparación, casi ciego al azul.

Este es el aprendizaje más útil de toda la matemática: el verde aporta más o menos diez veces el brillo percibido del azul. Por eso el texto azul puro sobre negro es doloroso y apenas pasa, mientras que la misma "oscuridad" en verde se lee bien. Por eso tus enlaces azules sobre un fondo oscuro se ven débiles por más que los satures. Si solo recuerdas una cosa de la fórmula, recuerda los pesos.

El + 0.05 de la ratio es una constante que modela la luz ambiental que se refleja en la pantalla, de modo que ni siquiera unos negros teóricamente perfectos producen una ratio infinita. Es la razón por la que las ratios de contraste topan en 21:1.

Los tres umbrales que tienes que conocer

La WCAG (las Pautas de Accesibilidad para el Contenido Web, mantenidas por el W3C) define un pequeño conjunto de números. Memoriza estos y habrás cubierto la inmensa mayoría del trabajo real.

Fíjate en el patrón: cada nivel es más o menos el siguiente hacia arriba. El AA-grande y los no textuales comparten 3:1; el AA-normal y el AAA-grande comparten 4,5:1. Es menos de lo que parece para recordar.

AA frente a AAA: ¿cuál debes de verdad?

El AA es el estándar del mundo real. Es lo que referencian la Ley Europea de Accesibilidad, los acuerdos derivados de la ADA en EE. UU., la Sección 508 y prácticamente cualquier contrato de adquisición. Cuando un abogado o un auditor dice "conforme a la WCAG", se refiere al AA. El AAA es el nivel de oro, y las propias pautas dicen explícitamente que la conformidad AAA no se exige como política general para sitios enteros, en parte porque hay contenido que sencillamente no puede alcanzar 7:1 sin verse roto.

Mi opinión honesta tras años con esto: diseña el texto del cuerpo para superar el AA con holgura y luego trata el AAA como un objetivo que alcanzas para el contenido que más importa: la columna de lectura principal de un artículo, los mensajes de error, cualquier cosa que un usuario estresado o con baja visión deba descifrar bajo presión. Perseguir el 7:1 en cada pie de foto y etiqueta deshabilitada es una batalla perdida que aplana toda tu paleta en negro sobre blanco.

Texto normal frente a texto grande, y la trampa que esconde

La WCAG es más indulgente con el texto grande (3:1 en lugar de 4,5:1) porque las formas de letra más grandes y pesadas son legibles con menos contraste. Pero la definición de "grande" es específica y la gente la entiende mal constantemente.

La conversión que confunde a todo el mundo es 1pt = 1,333px, por lo que 18pt se convierten en 24px y 14pt en ~18,5px. Así que un encabezado regular de 19px no es texto grande según la definición de la WCAG: sigue debiendo el 4,5:1 completo. Una etiqueta en negrita de 16px tampoco es grande. He visto diseños "pasar" en la cabeza de alguien porque el encabezado "se veía grande", cuando en píxeles quedaba justo por debajo del umbral y necesitaba la ratio más estricta. En caso de duda, mantén el cuerpo y los subtítulos en 4,5:1 y reclama el descuento de 3:1 solo para tipografía de display genuinamente grande.

Contraste de elementos no textuales: el criterio que todos olvidan (1.4.11)

Aquí es donde fallan la mayoría de los equipos, por lo demás cuidadosos. La WCAG 2.1 añadió el Criterio de Conformidad 1.4.11, Contraste de elementos no textuales, que exige 3:1 para dos categorías que no tienen nada que ver con la lectura:

La violación clásica: un campo de búsqueda que no es más que una caja #FFFFFF con un borde gris claro #E5E7EB de 1px sobre una página blanca. Ese borde está en torno a 1,2:1. Los usuarios videntes con baja visión, literalmente, no pueden encontrar dónde pulsar. El texto de marcador de posición pálido y los contornos de los botones fantasma fallan de la misma manera. La decoración pura está exenta, y también el texto dentro del componente (eso cae bajo el 1.4.3), pero lo que señala "esto es interactivo" debe alcanzar 3:1 frente a lo que tenga al lado.

Cómo medirlo, y cómo corregirlo

El contraste no se juzga a ojo. Se mide. Mi flujo de trabajo del día a día:

Cuando algo falla, resiste el impulso de retocar el tono. Cambiar la saturación apenas mueve el contraste; cambiar la luminosidad lo mueve mucho. En concreto:

Los errores que veo en equipos reales

Una palabra sobre el futuro: la WCAG 3 está explorando un modelo perceptual llamado APCA que juzga el contraste más como lo hace el ojo humano, teniendo en cuenta el tamaño y el peso del texto juntos en lugar de una ratio plana. Es prometedor y vale la pena seguirlo, pero a día de hoy las ratios de este artículo —respaldadas por Understanding 1.4.3 del W3C— son lo que te hace conforme legal y prácticamente. Constrúyelas, déjate un margen y mide en lugar de adivinar. El 79,1% de los sitios que fallan, fallaron en su mayoría porque nadie comprobó. Comprobar es todo el trabajo.

Preguntas frecuentes

¿Cuál es la ratio de contraste mínima de la WCAG para el texto normal?

El texto del cuerpo normal necesita una ratio de contraste de al menos 4,5:1 frente a su fondo para cumplir el nivel AA de la WCAG, que es el estándar que referencian la mayoría de leyes y contratos. El texto grande (18pt/24px regular, o 14pt/~18,5px en negrita) solo necesita 3:1. El nivel más estricto AAA eleva el texto normal a 7:1 y el texto grande a 4,5:1.

¿Cuál es la diferencia entre el contraste WCAG AA y AAA?

El AA es el estándar práctico y referenciado legalmente: 4,5:1 para el texto normal y 3:1 para el texto grande. El AAA es el nivel reforzado para usuarios con baja visión: 7:1 para el texto normal y 4,5:1 para el grande. El W3C no exige el AAA en un sitio entero, así que la mayoría de equipos construyen el texto del cuerpo en AA con margen y reservan el AAA para el contenido de lectura más crítico.

¿Qué cuenta como texto grande según la WCAG?

El texto grande es 18pt o más (24px) con peso normal, o 14pt o más (unos 18,5px) si está en negrita. La conversión es 1pt = 1,333px. Un error habitual es suponer que un encabezado que simplemente se ve grande cumple: un encabezado regular de 19px o 20px sigue estando por debajo de 24px y debe cumplir el 4,5:1 completo del texto normal.

¿La WCAG exige contraste para botones e iconos, no solo para el texto?

Sí. El Criterio de Conformidad 1.4.11 (Contraste de elementos no textuales), añadido en la WCAG 2.1, exige una ratio de 3:1 para los límites de los componentes de interfaz que indican estado —bordes de campos, anillos de foco, contornos de casillas— y para objetos gráficos como las formas de los iconos y los elementos de gráficos necesarios para entenderlos. La decoración pura está exenta.

¿Cómo corrijo un texto que no pasa la comprobación de contraste?

Ajusta la luminosidad, no el tono ni la saturación: esos apenas mueven la ratio. Oscurece el primer plano o aclara el fondo hasta superar el umbral; para texto claro sobre un botón de color, suele ser más rápido oscurecer el color del fondo. Mide el resultado con un comprobador de contraste en lugar de juzgar a ojo, ya que las diferencias de tono engañan al ojo pero no a la fórmula de luminancia.

¿Quieres experimentar con los colores?

Prueba nuestro generador gratuito de paletas de color para encontrar tu armonía perfecta, con un comprobador de contraste WCAG integrado.

Abrir el generador