Verificador de Contraste de Color (Luminancia WCAG)

Introduce un color de primer plano y uno de fondo para calcular a continuación la luminancia relativa WCAG actual y la relación de contraste (AA/AAA). Las muestras de la derecha, debajo de la vista previa, muestran lo que la fórmula WCAG moderna "ve" para cada color; las de la izquierda muestran lo que habría mostrado la fórmula de luma de un ingeniero de radiodifusión de 1953 para esos mismos colores — una comparación directa entre lo antiguo y lo nuevo.

Cargando simulación interactiva...

Por qué el verde pesa más que el rojo y el azul — y por qué la ley sigue usando las matemáticas de 1953 🖖

Los pesos en la fórmula de luminancia (0.2126 con predominio de verde hoy en día, 0.299/0.587/0.114 en 1953) no son arbitrarios: se remontan al observador estándar CIE 1931, que descubrió que la respuesta de los conos del ojo humano y la curva de eficiencia luminosa nos hacen mucho más sensibles a la luz verde que al rojo o al azul. NTSC necesitaba exactamente este tipo de suma ponderada en 1953 para que una nueva transmisión en color siguiera produciendo una imagen en escala de grises correcta en los millones de televisores en blanco y negro que ya había en los salones — la 'luma' se inventó como un truco de compatibilidad retroactiva, no como un ideal perceptual. Esa historia importa hoy porque la relación de contraste WCAG 2 verificada arriba tiene peso legal (citada por la ADA y por la EN 301549), y sin embargo los científicos de la visión la consideran defectuosa: se sabe que sobrevalora el contraste de texto oscuro sobre fondo claro e infravalora el de texto claro sobre fondo oscuro — algo directamente relevante ya que este mismo sitio usa un tema oscuro por defecto. El reemplazo en borrador de WCAG 3, APCA, modela correctamente esa asimetría; hasta que se publique, la fórmula de arriba sigue siendo la que realmente estás obligado a cumplir.

Qué mide realmente una relación de contraste 🖖

El número que muestra esta herramienta es una relación de luminancia relativa: (L1 + 0.05) / (L2 + 0.05), donde L1 es el color más claro y L2 el más oscuro. Va de 1:1 (colores idénticos, invisibles) a 21:1 (negro puro sobre blanco puro). El 0.05 sumado a ambos no es un redondeo: modela el tenue reflejo de luz ambiental que devuelven las pantallas reales, así que ni siquiera el 'negro puro' llega a cero. Apunta a 4.5:1 en texto corrido y 3:1 en texto grande para superar el umbral WCAG AA.

Una errata congelada en la ley 🖖

La fórmula lineariza cada canal sRGB con una curva por tramos que pasa de un inicio lineal a un exponente gamma en un umbral. WCAG 2 sitúa ese cambio en 0.03928, pero el estándar sRGB real lo fija en 0.04045. El valor de WCAG es una errata, copiada de un borrador temprano de sRGB antes de que se corrigiera la cifra, y desde entonces quedó grabada en una norma de accesibilidad citada internacionalmente. El error desplaza los resultados menos de 10⁻⁴, así que nadie se ha molestado en corregir el texto.

Problema resuelto al detalle

  1. Relación de contraste entre texto #e2e6f0 y un fondo #1a1d27 5 pasos

    Calcula la relación de contraste entre el texto #e2e6f0 y el fondo #1a1d27 —los propios colores de esta página. Promediar los canales da 5,55. La WCAG da 13,46. Averigüe de dónde procede ese factor de dos y medio.

    1. La definición parece inofensiva: una razón entre dos luminancias, cada una ajustada en 0,05 para que el negro puro no provoque una división por cero. Los pesos no son iguales, y esa es la primera sorpresa: al verde se le atribuye diez veces más luminancia que al azul.

    2. La segunda sorpresa es que los valores de los canales no se pueden utilizar tal cual. Un byte en un archivo de imagen está codificado mediante gamma: 128 no significa la mitad de la luz, sino aproximadamente una quinta parte. La expresión definida a trozos deshace esa codificación, y es el paso que omiten todos los que implementan su propia comprobación de contraste.

    3. Pase ambos colores por ella. El claro queda en 0,79 y el oscuro en 0,0124: una diferencia por un factor de 63 en luz física, a partir de bytes que solo difieren por un factor aproximado de 7.

    4. Los desplazamientos de 0,05 comprimen después ese 63 hasta 13,46, que es la cifra que muestra el panel. Ese desplazamiento no es estético: modela la luz que refleja la pantalla incluso cuando muestra negro, razón por la cual un tema oscuro no puede alcanzar un contraste ilimitado en una habitación iluminada.

    5. Los pesos explican la queja más habitual de los diseñadores. El verde puro y el azul puro consisten ambos en un único canal al máximo de intensidad, pero el verde aporta 0,7152 de la luminancia y el azul solo 0,0722.

    Respuesta

    La herramienta muestra 13,46 : 1, superando con holgura el 4,5 del nivel AA y el 7 del AAA. La razón para calcularlo a mano es el paso de la gamma: si se omite y se promedian los canales en su lugar, este par obtiene 5,55 —sigue siendo un aprobado, pero equivocado por un factor de 2,4, y en un par más cercano ese error marca la diferencia entre aprobar y suspender. Los pesos son la otra mitad. El verde es 9,9 veces más brillante que el azul para el mismo valor de canal, por lo que el texto azul sobre negro resulta mucho peor de lo que parece en un selector de color, y el amarillo sobre blanco mucho mejor de lo que esperan los diseñadores. Pruebe #0000ff frente a #000000 y lea la relación.

Referencias (2)

Problemas de ejemplo