La relación no es la diferencia entre dos números hex ni un promedio simple de rojo, verde y azul. WCAG aplica una función sRGB y pesos de luminancia antes de comparar el color claro y el oscuro. Mostrar las etapas hace reproducibles los límites.
Expande y normaliza los tres canales
#ABC se expande a #AABBCC. Cada canal de dos dígitos se convierte en un entero de 0 a 255 y se divide por 255, produciendo sRGB codificado entre 0 y 1. ContrastCheck solo acepta hex opaco de tres o seis dígitos, de modo que alfa, nombres CSS y conversiones no entran silenciosamente.
Convierte sRGB codificado en luz lineal
Si un canal normalizado es menor o igual que 0.04045, se divide por 12.92. Si es mayor, se suma 0.055, se divide por 1.055 y se eleva a 2.4. La luminancia es 0.2126 rojo lineal más 0.7152 verde más 0.0722 azul. El verde pesa más, por lo que cambios numéricos iguales no producen cambios iguales.
Compara luminancia clara y oscura
Sea L1 la luminancia mayor y L2 la menor. La relación es (L1 + 0.05) entre (L2 + 0.05); invertir colores no cambia la magnitud y el rango va de 1:1 a 21:1. ContrastCheck decide umbrales con el valor bruto y solo trunca la cifra visible a dos decimales, evitando mostrar 4.50 si el valor real está bajo 4.5.