Convertidor LAB a hex
Una luminosidad de 53.2408 con a en 80.0925 y b en 67.2032 da #FF0000, rojo puro, y el resultado le avisa de que se recortó para caber en la pantalla. Convierta lecturas de laboratorio en colores útiles. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- L
- 53,2408
- A
- 80,0925
- B
- 67,2032
- X
- 41,245661
- Y
- 21,267295
- Z
- 1,933391
- Resistencia (Ω)
- 255
Este convertidor de LAB a hex transforma coordenadas CIE L*a*b* en una cadena de color sRGB de seis dígitos mediante una ruta D65 transparente. Valida L*, a* y b*, reconstruye CIE XYZ, convierte XYZ a sRGB lineal, aplica la curva de transferencia sRGB estándar y redondea los canales resultantes a bytes. Los colores fuera de la gama sRGB visible se recortan de forma segura y se identifican en la respuesta, en vez de producir canales mal formados.
Qué acepta y qué devuelve el convertidor
Introduzca tres coordenadas numéricas: l para la luminosidad CIE L*, a para el eje de verde a rojo y b para el eje de azul a amarillo. La luminosidad debe estar entre cero y cien, mientras que cada coordenada cromática debe estar entre menos doscientos y doscientos. Estos límites cubren valores Lab prácticos y detectan campos intercambiados, infinitos, valores ausentes y registros claramente dañados antes de la conversión.
La respuesta repite las coordenadas validadas y proporciona valores intermedios X, Y y Z escalados según la convención habitual de cero a cien. Un valor false indica que la conversión sin limitar quedó dentro de sRGB. Un valor true significa que al menos un componente sRGB lineal cayó por debajo de cero o superó uno y se recortó al límite visible más cercano.
El resultado hex siempre es válido, incluso en ese caso.
Cómo Lab se convierte en XYZ y después en color hex
El cálculo utiliza el blanco de referencia D65 estándar asociado con sRGB. Primero, L*, a* y b* se reorganizan en los tres términos de pivote llamados normalmente f-x, f-y y f-z. Cada término pasa por el pivote CIE Lab inverso: los valores superiores a seis veintinueveavos se elevan al cubo, mientras que los menores usan la rama lineal correspondiente.
Al multiplicar esos resultados por el blanco de referencia D65 se reconstruye CIE XYZ. Una matriz fija de tres por tres convierte después XYZ a sRGB lineal. En esta fase, un componente puede ser legítimamente negativo o mayor que uno porque Lab describe colores fuera de la gama visible sRGB.
El convertidor registra esa condición antes de modificar los valores. A continuación, cada componente lineal recibe la curva oficial de compansión sRGB por tramos. Los valores codificados se limitan entre cero y uno, se multiplican por doscientos cincuenta y cinco y se redondean al entero más cercano.
Por último, cada byte se formatea como exactamente dos dígitos hexadecimales en mayúsculas y se concatena después de una almohadilla. Así, los canales visibles no se calculan a partir de campos XYZ ya redondeados y se evita perder precisión cerca de los umbrales entre bytes.
Cómo usar la información de gama y los resultados deterministas
Lab abarca un conjunto de colores teóricos mucho mayor que el que puede reproducir una pantalla sRGB típica, por lo que un convertidor necesita una política explícita para resultados imposibles. Esta capacidad usa recorte de canales, una política sencilla y reproducible: los componentes lineales negativos pasan a cero y los superiores a uno pasan a uno.
Conserve el hex generado cuando necesite una alternativa concreta compatible con CSS, pero mantenga las coordenadas Lab originales cuando importe la fidelidad cromática o un futuro flujo de gama amplia pueda tratar mejor el origen. En sistemas de control de calidad, considere un indicador true como motivo para revisar o reasignar el color mediante una estrategia específica de mapeo de gama. El determinismo también es intencional.
La implementación solo realiza aritmética y formato fijos: nunca consulta la hora, usa aleatoriedad, llama a servicios remotos, lee perfiles de color instalados ni depende del renderizado del navegador.
Qué puede hacer con ella
Publicar tokens de diseño
Convierta colores Lab de marca medidos o definidos en valores hex estables de seis dígitos para variables CSS, documentación y temas de aplicaciones.
Comprobar límites de gama sRGB
Identifique muestras Lab que necesitan recorte de canales antes de poder representarse en pantallas sRGB estándar.
Crear datos de prueba deterministas
Genere resultados esperados XYZ, RGB y hex repetibles para bibliotecas de color, importadores y flujos de validación de datos.
Preguntas frecuentes
¿Qué punto blanco se utiliza?
La conversión usa el blanco de referencia D65 Xn 0.95047, Yn 1.00000 y Zn 1.08883, conforme a la ruta de conversión sRGB estándar.
¿El hex devuelto siempre tiene seis dígitos?
Sí. Cada byte RGB recortado se representa con dos dígitos hexadecimales en mayúsculas, incluidos los ceros iniciales, después de una almohadilla.
¿Este convertidor conserva la transparencia?
No. La entrada CIE Lab no contiene una coordenada alfa, por lo que la salida es un color hex opaco de seis dígitos y no un valor de ocho dígitos.
¿Qué pasa si un color LAB no se puede mostrar en pantalla?
Cada canal que queda fuera del rango visible se lleva al borde más cercano, así que siempre obtiene un hex válido. El resultado se marca como fuera de rango, y los colores extremos pueden cambiar algo de tono o intensidad.
¿Qué color hex es una luminosidad de 53.2408 con a en 80.0925 y b en 67.2032?
Es #FF0000, rojo puro, con el rojo en 255 y el verde y el azul en 0. El valor exacto queda justo fuera del rango de pantalla, por eso aparece marcado como recortado.
Herramientas relacionadas
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, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/color/lab-hex \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"l":53.2408,"a":80.0925,"b":67.2032}'const res = await fetch("https://api.kit.forhosting.com/color/lab-hex", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"l": 53.2408,
"a": 80.0925,
"b": 67.2032
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/lab-hex",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"l": 53.2408,
"a": 80.0925,
"b": 67.2032
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/lab-hex", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"l":53.2408,"a":80.0925,"b":67.2032}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"l":53.2408,"a":80.0925,"b":67.2032}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/lab-hex", 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
{
"l": 53.2408,
"a": 80.0925,
"b": 67.2032
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.lab_hex",
"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.
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. |
Notas técnicas
El mismo cálculo determinista funciona en el navegador y mediante la API por $0.002 por solicitud correcta, sin consultas de red, entradas aleatorias ni dependencia del reloj.
Qué acepta y qué devuelve el convertidor
También devuelve canales enteros rojo, verde y azul, una cadena hex de seis dígitos en mayúsculas precedida por almohadilla y un booleano out_of_gamut. Los errores de validación usan invalid_input en lugar de sustituir valores predeterminados sin avisar; por ello, el endpoint resulta adecuado para formularios, importaciones por lotes, datos de prueba y flujos automatizados de tokens de diseño donde debe distinguirse una coordenada ausente de una coordenada neutra igual a cero.
Cómo Lab se convierte en XYZ y después en color hex
Los valores XYZ intermedios se redondean a seis decimales para ofrecer JSON legible y estable, pero la ruta RGB conserva todos los valores intermedios de coma flotante.
Cómo usar la información de gama y los resultados deterministas
El recorte puede cambiar el tono o el croma de colores extremos; por tanto, el indicador out_of_gamut aporta contexto importante y no es una advertencia que deba ignorarse. Una entrada JSON idéntica produce una salida idéntica. Esto resulta útil para pruebas instantáneas, compilaciones, normalización de bases de datos y herramientas compartidas de sistemas de diseño. La conversión interactiva es gratuita en el navegador; mediante la API cuesta $0.002 por solicitud correcta y sigue exactamente la misma ruta matemática.
Preguntas técnicas
¿Cuánto cuesta convertir LAB a hex?
Puede ejecutarlo gratis en su navegador. Mediante la API, cada solicitud correcta cuesta $0.002; las entradas no válidas se rechazan antes de generar un resultado.
¿Por qué el resultado indica out_of_gamut?
Lab puede describir colores fuera de sRGB. El indicador es true cuando un canal RGB lineal sin limitar necesitó recorte por debajo de cero o por encima de uno.