Comprobar contraste de colores
Dos colores pueden parecer legibles en una pantalla y aun así quedar por debajo del contraste necesario para un texto accesible. Introduzca el primer plano y el fondo para obtener la relación exacta y los resultados WCAG AA y AAA por tamaño de texto.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Una respuesta objetiva para dos colores
La vista no es un medidor de contraste confiable. El brillo de la pantalla, el peso de la tipografía, la luz del entorno y los colores vecinos pueden hacer que la misma combinación parezca más clara o más débil. Este comprobador convierte ambos colores a sRGB, calcula su luminancia relativa y compara el valor más claro con el más oscuro mediante la fórmula de WCAG. Devuelve una relación numérica y cuatro decisiones útiles: AA y AAA para texto normal, además de AA y AAA para texto grande. La distinción importa porque un titular puede aprobar aunque el texto pequeño de un párrafo no lo haga.
Formatos admitidos y normalización reproducible
Puede pegar valores habituales de una hoja de estilos o de un token de diseño: HEX de tres o seis dígitos, una función rgb() con tres canales o un color hsl() con saturación y luminosidad porcentuales. La respuesta normaliza cada entrada a HEX de seis dígitos y RGB, por lo que usted puede reproducir el cálculo en un sistema de diseño o en una prueba automática. Los canales alfa quedan fuera a propósito: el aspecto de un color transparente depende de todas las capas inferiores, y aceptar una composición incompleta daría una relación precisa en apariencia, pero potencialmente falsa.
Cómo interpretar el resultado en una interfaz
Use la matriz como una restricción de diseño, no como una certificación de toda la página. Un resultado favorable para texto normal solo describe la relación entre estos dos colores sólidos; no inspecciona el tamaño ni el peso de la fuente, los estados al pasar el puntero, los degradados, las imágenes, el foco del teclado o la semántica. Compruebe por separado cada estado importante de un componente. La herramienta del navegador realiza todo el cálculo localmente y sirve para revisar una paleta con rapidez. Si necesita controlar tokens en integración continua, envíe los mismos dos campos al API y recibirá el mismo objeto estructurado.
Qué puede hacer con ella
Revisión de tokens de diseño
Compruebe los pares de texto y superficie antes de publicar una paleta, con decisiones distintas para cuerpo y titulares.
Control de calidad de componentes
Revise los estados normal, activo, seleccionado y de error sin depender de la pantalla ni de la impresión visual de una persona.
Pruebas automáticas de accesibilidad
Llame al API desde su proceso de integración para rechazar una combinación que no alcance el umbral WCAG exigido.
Preguntas frecuentes
¿Qué formatos de color puedo introducir?
Puede usar HEX de tres o seis dígitos, rgb() con tres canales o hsl() con porcentajes de saturación y luminosidad. No se admiten alfa ni nombres de color.
¿Qué significan AA y AAA en la respuesta?
Son umbrales de conformidad de WCAG. Se muestran por separado para texto normal y grande porque el contraste requerido cambia según el tamaño y el peso.
¿Es gratuito el comprobador de contraste?
La herramienta de esta página funciona gratis dentro de su navegador de escritorio o móvil. El API cuesta $0.002 por solicitud completada y usa su saldo prepago de KIT.
¿La aplicación móvil nativa ejecuta el widget gratuito?
No. La aplicación nativa llama al API y muestra allí el precio de la tarea. Abra esta página en el navegador móvil cuando quiera usar el cálculo local.
¿Este resultado demuestra que toda mi página cumple WCAG?
No. Verifica un par sólido de primer plano y fondo. Una revisión completa también debe cubrir tipografía, estados, imágenes, teclado, etiquetas y otros requisitos de accesibilidad.
¿Por qué se rechazan los colores transparentes?
Su color visible depende de las capas inferiores. Componga primero la transparencia sobre el fondo final y compruebe después los dos colores opacos resultantes.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/verify/color-contrast \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/verify/color-contrast", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/verify/color-contrast",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/verify/color-contrast", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/verify/color-contrast", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "verify.color_contrast",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_color_chars | 100 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |