Skip to content

Convertidor HEX a HSL

Convierta cualquier color hex a HSL en su navegador — admite hex de 3 dígitos, 6 dígitos y 8 dígitos con alfa. Gratis, instantáneo, sin registro, sus colores nunca salen de la página.

Sin rastreo Se ejecuta en el navegador Gratis
Toda la conversión de color sucede localmente en su navegador. No se envía ningún dato a ningún servidor.
Gama: sRGB Display P3 Rec2020
Contraste vs:
AA AA-Lg AAA AAA-Lg · APCA Lc
Simulación de daltonismo (8 tipos)
Protanopia (ciego al rojo)
Deuteranopia (ciego al verde)
Tritanopia (ciego al azul)
Acromatopsia (total)
Protanomalía (débil al rojo)
Deuteranomalía (débil al verde)
Tritanomalía (débil al azul)
Acromatomalía (parcial)
Tintes claros / Matices oscuros / Tonos / Armonías

Tintes claros

Matices oscuros

Tonos

Armonías

Copiar como código
Referencia de colores comunes
Revisado para conformidad con CSS Color 4 §6.4, soporte de formas hex de 3/4/6/8 dígitos, corrección de descodificación de par alfa, y estabilidad de ida y vuelta entre HEX y HSL a lo largo de los rangos 0-360° de matiz y 0-100% S/L. — Equipo de Ingeniería de Go Tools · May 27, 2026

¿Qué es un convertidor HEX a HSL?

Un convertidor HEX a HSL es una pequeña utilidad que transforma un código de color hex (`#3b82f6`) en el triple cilíndrico Matiz / Saturación / Luminosidad que codifica el mismo color sRGB (`hsl(217 91% 60%)`). Los códigos hex son la cadena escueta en base 16 que diseñadores y desarrolladores pegan entre Figma, Sketch, Photoshop, PDFs de guía de marca y hojas de estilo CSS — tres canales de 8 bits empaquetados en una forma `#RRGGBB` de 6 caracteres, anclados al espacio de color sRGB definido por IEC 61966-2-1 en 1996. HSL es una reforma cilíndrica del mismo espacio de color sobre tres ejes más amigables para el diseñador: un ángulo de matiz en la rueda cromática, un porcentaje de saturación cromática y un porcentaje de luminosidad. Los desarrolladores convierten HEX → HSL constantemente: para definir un color de marca como una variable CSS y luego componer matices claros u oscuros ajustando solo L, para alimentar una UI de selector de color que muestra Matiz y SL como controles separados, para generar rampas de tintes claros y matices oscuros para un sistema de diseño, o para realizar matemáticas de variable CSS en tiempo de ejecución vía `hsl(from var(--primary) h s calc(l + 10%))` para tokens de tema derivados. Esta herramienta ejecuta la conversión en vivo mientras escribe, sin botón "Convertir" que pulsar, y expone cada otro formato de color común (RGB, OKLCH, OKLAB, HSV, HWB, CMYK, más los 148 colores CSS con nombre) junto con la salida HSL de forma gratuita.

**El propio formato HSL merece una mirada más detenida.** HSL = Matiz (0-360°), Saturación (0-100%), Luminosidad (0-100%). El matiz es la posición angular en la rueda cromática — 0° es rojo, 60° es amarillo, 120° es verde, 180° es cian, 240° es azul, 300° es magenta, y 360° envuelve de vuelta al rojo. La saturación es intensidad cromática del 0% (gris acromático) al 100% (totalmente cromático sin contenido de gris). La luminosidad es el brillo del 0% (negro puro, independientemente de matiz o saturación) pasando por el 50% (el matiz puro a chroma pleno) hasta el 100% (blanco puro, independientemente de matiz o saturación). Alvy Ray Smith publicó la derivación original en 1978 como parte del impulso temprano de gráficos por computadora para dar a los diseñadores sistemas de coordenadas más cercanos a su modelo cognitivo del color que el direccionamiento de canales RGB en crudo. El modelo ha estado en CSS desde CSS3 (2010) y viene en todos los navegadores hasta IE 9. La sintaxis CSS original usaba comas: `hsl(217, 91%, 60%)` para opaco, `hsla(217, 91%, 60%, 0.5)` para los que llevan alfa. CSS Color 4 (Candidate Recommendation del W3C desde 2022) añadió una forma moderna con espacios: `hsl(217 91% 60%)` y `hsl(217 91% 60% / 0.5)` con alfa precedido por barra — la misma forma sintáctica que las otras notaciones funcionales de CSS Color 4 (`rgb()`, `lab()`, `oklch()`, `color()`). El matiz también puede expresarse en vueltas (`hsl(0.6turn 91% 60%)`) o radianes (`hsl(3.787rad 91% 60%)`), todos equivalentes a la forma canónica en grados. Cada navegador evergreen analiza cada sabor sintáctico; la herramienta emite la forma moderna con espacios por defecto.

Las matemáticas de conversión van en ambas direcciones limpiamente. **HEX → HSL** es una canalización de dos pasos. Primero, analice el hex de 6 dígitos `#RRGGBB` como tres números en base 16 de 2 dígitos vía `parseInt(hex.slice(1, 3), 16)` etc. para obtener canales RGB enteros en 0-255. Segundo, normalice cada canal a 0-1 dividiendo por 255, luego compute `max = Math.max(r, g, b)`, `min = Math.min(r, g, b)`, `delta = max - min`. La luminosidad es el promedio de max y min: `L = (max + min) / 2`. La saturación es condicional sobre la luminosidad: cuando L ≤ 0.5, `S = delta / (max + min)`; cuando L > 0.5, `S = delta / (2 - max - min)`. Equivalentemente en la forma de CSS Color 4 §6.4, `S = delta / (1 - |2L - 1|)` (con S = 0 cuando delta = 0). El matiz es a trozos según qué canal sea el máximo: cuando R es el máximo, `H = ((G - B) / delta) % 6`; cuando G es el máximo, `H = (B - R) / delta + 2`; cuando B es el máximo, `H = (R - G) / delta + 4`; multiplique por 60 para escalar a grados, sume 360 si es negativo. El inverso (HSL → HEX, vía RGB) usa el ayudante `f(n) = L - a * max(-1, min(k-3, 9-k, 1))` donde `a = S * min(L, 1-L)` y `k = (n + H/30) mod 12`, aplicado con n = 0, 8, 4 para producir R, G, B respectivamente, luego escalado a 0-255 y codificado en hex.

**Por qué HSL sigue siendo útil.** Deslizadores intuitivos — ajustar L aclara u oscurece de forma predecible sin romper la identidad del matiz, mientras que ajustar un canal RGB produce un desplazamiento de color menos predecible. Matemáticas CSS en tiempo de ejecución — los navegadores modernos soportan `hsl(from var(--primary) h s calc(l + 10%))` para derivar tokens de tema en tiempo de renderizado. Cognición del diseñador — los diseñadores criados con selectores de color HSV razonan sobre color en términos de matiz + chroma incluso cuando el archivo entrega hex. **El problema de HSL** es que su eje de Luminosidad no es perceptualmente uniforme — un verde a L=50% se ve visiblemente más brillante que un azul a L=50% porque HSL hereda las peculiaridades de gamma de sRGB y trata cada matiz como equivalente en la escala L. Cuando necesita uniformidad perceptual (generación de paletas donde cada paso debería verse igual de brillante, computación de tokens de modo oscuro que no haga accidentalmente que el texto azul sea más difícil de leer que el verde), recurra a OKLCH — la misma herramienta expone ambos, así que la elección está a un vistazo de distancia.

El flujo HEX → HSL de esta herramienta es una dirección de una familia de 5 radios que comparten el mismo convertidor de color unificado subyacente. El convertidor de color unificado dedicado es el centro — muestra los 9 formatos editables simultáneamente y es la herramienta correcta cuando su flujo de trabajo necesita más que solo hex y HSL. Los radios de dirección única apuntan a intenciones específicas de búsqueda en Google: el convertidor hex a RGB para la dirección de canvas y hardware, el convertidor RGB a hex para el inverso, el convertidor hex a OKLCH para sistemas de diseño modernos perceptualmente uniformes (Tailwind v4 y shadcn ahora vienen por defecto en OKLCH), y el convertidor hex a CMYK para aproximaciones de preparación de imprenta. Los cinco radios y el centro comparten el mismo motor de análisis y las mismas matemáticas de conversión, así que los resultados están garantizados idénticos a lo largo de la familia. Cada conversión se ejecuta localmente en su navegador — sus códigos hex nunca se suben, nunca se registran, y se disparan cero peticiones de red mientras escribe. Verifique en DevTools.

// Convert a hex color string to {h, s, l, alpha} per CSS Color 4 §6.4
// h in 0-360, s and l in 0-1, alpha in 0-1.
function hexToHsl(input) {
  let h = input.trim().replace(/^#/, '');
  if (h.length === 3 || h.length === 4) h = h.split('').map(c => c + c).join('');
  const r = parseInt(h.slice(0, 2), 16) / 255;
  const g = parseInt(h.slice(2, 4), 16) / 255;
  const b = parseInt(h.slice(4, 6), 16) / 255;
  const alpha = h.length === 8 ? parseInt(h.slice(6, 8), 16) / 255 : 1;
  const max = Math.max(r, g, b), min = Math.min(r, g, b), delta = max - min;
  const L = (max + min) / 2;
  const S = delta === 0 ? 0 : delta / (1 - Math.abs(2 * L - 1));
  let H = 0;
  if (delta !== 0) {
    if (max === r) H = ((g - b) / delta) % 6;
    else if (max === g) H = (b - r) / delta + 2;
    else H = (r - g) / delta + 4;
    H = (H * 60 + 360) % 360;
  }
  return { h: H, s: S, l: L, alpha };
}

console.log(hexToHsl('#3b82f6')); // { h: 217, s: 0.91, l: 0.60, alpha: 1 }

Características principales

Las cinco formas de hex se analizan idénticamente

3 dígitos `#F73`, alfa de 4 dígitos `#F738`, 6 dígitos `#3b82f6`, alfa de 8 dígitos `#FF573380`, más la variante sin `#` para cada una. El parser normaliza todas ellas en el mismo color interno antes de derivar HSL, así que puede pegar la forma que use su fuente sin expandir manualmente la abreviación primero. La capitalización también se normaliza — `#3b82f6` y `#3B82F6` producen una salida HSL idéntica.

Salida HSL en sintaxis moderna con espacios

El campo HSL expone el valor en la forma moderna de CSS Color 4: `hsl(217 91% 60%)` para colores opacos, `hsl(217 91% 60% / 0.5)` para los que tienen alfa. Ambas formas funcionan en todos los navegadores evergreen (Chrome 65+, Safari 13+, Firefox 52+). La forma heredada con comas `hsl(217, 91%, 60%)` está a un reemplazo mecánico de distancia si su objetivo la necesita; la sintaxis moderna es preferida en código nuevo porque se alinea con las otras sintaxis funcionales de CSS Color 4.

Fuente de verdad OKLCH, no pivote HSL

Aunque este radio apunta a HEX → HSL específicamente, el convertidor subyacente compartido mantiene el color canónico como un triple OKLCH internamente. Esto significa que HEX → HSL → RGB → OKLAB → HEX hace ida y vuelta sin deriva de coma flotante por paso; los convertidores heredados que enrutan a través de HSL como su pivote acumulan error de redondeo y pueden desviar el matiz varios grados a lo largo de unas pocas conversiones. El pivote OKLCH mantiene cada otro formato anclado matemáticamente al mismo punto de origen.

Canal alfa decodificado limpiamente

El hex de 8 dígitos y 4 dígitos con alfa (`#RRGGBBAA` y `#RGBA`) se analiza correctamente. El par final se asigna a un flotante alfa 0-1: `00` → 0, `80` → 0.502, `FF` → 1. La salida usa la sintaxis con barra de CSS Color 4 (`hsl(217 91% 60% / 0.5)`) por defecto; la forma heredada `hsla(217, 91%, 60%, 0.5)` está a un reemplazo de distancia. Útil para migración de tokens de diseño donde los valores alfa pueden haber estado enterrados en códigos hex de 8 dígitos.

Otros ocho formatos visibles simultáneamente

El mismo hex que pega también impulsa RGB, HSV, HWB, OKLCH, OKLAB, CMYK y el color CSS con nombre más cercano — todos visibles de un vistazo en la misma página. Nunca está atrapado en hex → HSL solamente. Si un compañero de equipo necesita el triple OKLCH para un token de Tailwind v4 (donde la uniformidad perceptual importa más que la L de HSL afectada por gamma), el color con nombre más cercano para prosa de documentación, o la tupla RGB para una llamada de canvas, los valores ya están ahí con sus propios botones Copiar.

Contraste WCAG + APCA integrado

Pase un hex y la fila de contraste inmediatamente lo puntúa contra blanco y negro usando WCAG 2.1 (piso regulatorio: 4.5:1 para texto del cuerpo, 7:1 para AAA) y APCA Lc (sucesor propuesto de WCAG 3: objetivo `|Lc| ≥ 75` para texto del cuerpo). Útil cuando acaba de convertir un hex de marca a HSL y quiere verificar que el color resultante (o una variante con luminosidad ajustada) sea realmente legible como color de texto del cuerpo antes de enviarlo.

Copiar como CSS / Tailwind v4 / SwiftUI / Compose / Flutter

Debajo del selector, la sección Copiar como código convierte el color actual en fragmentos listos para pegar para cinco plataformas: propiedad personalizada CSS (`--color-brand: hsl(217 91% 60%)`), token `@theme` de Tailwind v4, literal SwiftUI `Color(hue:saturation:brightness:)`, constante Jetpack Compose `Color.hsl(217f, 0.91f, 0.60f)`, Flutter `HSLColor.fromAHSL(...)`. La sintaxis exacta que cada plataforma espera, lista para soltar en un catálogo de assets de iOS, archivo de tema de Android, o un `ThemeData` de Flutter.

100% en el navegador — sin subida, sin rastreo

Todo el análisis hex, la conversión HSL, la puntuación de contraste y la generación de paletas se ejecutan localmente en su navegador. Sus códigos hex nunca se transmiten, nunca se registran en ningún servidor, nunca se analizan. Cero peticiones de red mientras escribe — verifique en DevTools. Seguro para paletas de marca no anunciadas, tokens de diseño internos, mockups borrador bajo NDA, y cualquier otro trabajo de color confidencial.

Hash de URL compartible para el color exacto

El color actual se codifica en el hash de URL como `#hex=3b82f6` automáticamente en cada cambio. Copie la URL, péguela en un hilo de Slack o en una issue de GitHub, y cualquiera que la abra aterrizará en el mismo hex con el mismo triple HSL. El hash vive solo en su barra de direcciones y nunca se transmite al servidor (los navegadores no incluyen los fragmentos de URL en las peticiones HTTP), así que incluso compartir el enlace no filtra el color a ningún tercero.

Alternativas al convertidor HEX a HSL

RapidTables Hex to HSL

herramienta de navegador

El resultado por defecto de Google para "hex to hsl" — un formulario de una sola dirección con hex entrando, HSL saliendo, sin otros formatos visibles. Útil para búsquedas puntuales al llegar desde la búsqueda. Carece de OKLCH, comprobación de contraste, detección de gama, manejo de alfa, y la vista simultánea multi-formato. Esta herramienta gana en cada eje excepto el caso desnudo de conversión única.

ColorHexa

herramienta de navegador

Páginas SEO por color de larga trayectoria con metadatos profundos: conversiones, paletas, armonías, gradientes para cualquier hex que consulte. La UI está fechada (principios de los 2010), sin soporte OKLCH, sin contraste APCA, sin manejo de gama amplia. Fuerte para descubrimiento SEO de un hex específico vía Google; más débil para flujos de conversión activos donde escribir en una UX de campos unificados es más rápido.

Calculadora HSL de W3Schools

herramienta de navegador

Conmutador HEX/RGB/HSL amigable para principiantes en una página enfocada en enseñanza, omnipresente en los resultados de búsqueda. Sin OKLCH, sin manejo de alfa más allá de hsla, sin características avanzadas. Útil como referencia junto al contenido explicativo de W3Schools. Esta herramienta gana en cada otro eje: más formatos, matemáticas perceptuales, características de gama + contraste + CVD, exportación de código moderna para Tailwind v4 / SwiftUI / Compose / Flutter.

Selector de color de DevTools del navegador

característica incorporada del navegador

Chrome, Firefox y Safari DevTools todos vienen con un selector de color que conmuta entre HEX, RGB y HSL en línea cuando hace clic en una muestra de color en el panel CSS. Gratis, sin instalar, siempre disponible. Carece de OKLCH, carece de URLs compartibles, carece de exportación de código para plataformas no-web (SwiftUI, Compose). Recurra a DevTools cuando ya esté depurando CSS; recurra a esta herramienta cuando necesite salida multiplataforma.

Selector de color HSL de Mothereff

herramienta de navegador

Un selector HSL enfocado con deslizadores en vivo de matiz/saturación/luminosidad y una salida hex. UI mínima, bueno para exploración HSL rápida. Carece de OKLCH y de la cuadrícula de formato más amplia; sin características de contraste o gama. Útil como herramienta enfocada solo en HSL; esta herramienta cubre el mismo flujo más 8 otras vistas de formato y las comprobaciones perceptuales.

ConvertingColors

herramienta de navegador

Páginas SEO por color cubriendo muchos espacios (HEX, RGB, HSL, HSV, CMYK, XYZ, CIELAB). Carece de soporte OKLCH moderno y de la UX de edición de campos unificados. Las páginas de contenido autogenerado se sienten algo granja-de-contenido pero los datos de conversión son correctos. Bueno para explorar metadatos de colores individuales vía Google; esta herramienta es más rápida para flujos activos.

Ejemplos de HEX a HSL

Definición de variable CSS para un color de marca

#3b82f6

Salida HSL: `hsl(217 91% 60%)`. El flujo canónico para un sistema de diseño construido sobre HSL: defina la marca como `--primary: hsl(217 91% 60%)` una sola vez, luego componga tintes claros más brillantes ajustando solo el porcentaje L — `hsl(217 91% 70%)` para un tinte claro de hover, `hsl(217 91% 80%)` para un estado deshabilitado, `hsl(217 91% 90%)` para un relleno de fondo sutil. El matiz y la saturación permanecen fijos, así que la familia se lee como una rampa coherente. Las hojas de estilo basadas en RGB necesitan tres ediciones de canal coordinadas por paso; HSL necesita una.

Diseñador traduciendo color de Figma al selector HSL

#FF5733

Salida HSL: `hsl(11 100% 60%)`. Los diseñadores que razonan sobre color en términos de matiz + saturación + luminosidad (el modelo cognitivo que Munsell formalizó en 1905) a menudo quieren el triple HSL incluso cuando el archivo de fuente de verdad entrega hex. Matiz = 11° lo sitúa en el lado rojo de la cuña naranja; saturación = 100% significa que el canal es totalmente cromático; luminosidad = 60% se sitúa un escalón por encima del punto medio. Pegar el hex de Figma una vez produce el HSL correspondiente, listo para soltar en el selector mental del diseñador sin una conjetura manual de rueda cromática.

Barrido rápido de luminosidad para una paleta

#3b82f6

Salida HSL: `hsl(217 91% 60%)`. Con el triple HSL en mano, generar una rampa de tintes claros es un barrido unidimensional: gire L a 70% para `hsl(217 91% 70%)`, 80% para `hsl(217 91% 80%)`, 90% para `hsl(217 91% 90%)` para subir hacia el blanco; baje a 50%, 40%, 30% para matices oscuros más profundos. Toda la rampa de 9 pasos emerge de cambiar un solo número. Los tintes claros y los matices oscuros se mantienen relacionados tonalmente porque el matiz y la saturación permanecen constantes — el truco que los sistemas de diseño heredados usaban antes de que OKLCH abaratara las rampas perceptualmente uniformes.

Hex de 8 dígitos con alfa → hsla()

#FF573380

Salida HSL: `hsl(11 100% 60% / 0.5)`. El par final (`80`) se decodifica como `128/255 ≈ 0.502`, expuesto como canal alfa vía la sintaxis con barra de CSS Color 4. La forma heredada equivalente es `hsla(11, 100%, 60%, 0.5)`, que ha estado soportada en todos los navegadores desde IE 9 y es lo que esperan los preprocesadores antiguos. El hex de 8 dígitos con alfa llegó de forma nativa a los navegadores evergreen en 2018; antes de eso, el alfa tenía que expresarse explícitamente a través de la función `hsla()`.

Conversiones HEX → HSL comunes

Tabla de referencia de los 10 códigos hex más convertidos y sus equivalentes HSL — primarios puros, secundarios puros, y dos colores de marca reales de la paleta de Tailwind.

Negro

#000000 hsl(0 0% 0%)

Negro puro. Luminosidad al 0% — la ausencia de luz emitida. El matiz y la saturación son convencionalmente 0 para los grises.

#000000 hsl(0 0% 0%)

El negro puro en una pantalla rara vez es la elección de diseño correcta — pruebe `hsl(0 0% 7%)` o luminosidad perceptual OKLCH 0.1-0.15 para texto del cuerpo más suave.

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Blanco

#FFFFFF hsl(0 0% 100%)

Blanco puro. Luminosidad al 100% — el color sRGB más brillante posible. El matiz y la saturación son convencionalmente 0 para los grises.

#FFFFFF hsl(0 0% 100%)

Los fondos blancos puros pueden producir fatiga visual en entornos oscuros — pruebe `hsl(0 0% 98%)` o OKLCH 0.98 para alternativas más cálidas.

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Rojo

#FF0000 hsl(0 100% 50%)

Rojo puro. Matiz a 0° (la posición inicial de la rueda), saturación totalmente cromática, luminosidad en el punto medio donde viven los matices puros.

#FF0000 hsl(0 100% 50%)

El rojo puro está altamente saturado y rara vez encaja en una paleta de marca — la mayoría de los colores "rojos" de marca se sitúan más cerca de `hsl(0 73% 50%)` (#DC2626).

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Verde

#00FF00 hsl(120 100% 50%)

Verde puro. Matiz a 120° (un tercio del camino alrededor de la rueda), saturación totalmente cromática, luminosidad al 50%. Color CSS con nombre `lime`.

#00FF00 hsl(120 100% 50%)

La palabra clave CSS `green` se resuelve a #008000 (hsl(120 100% 25%)), no #00FF00 — una fuente frecuente de confusión. Use `lime` para hsl(120 100% 50%) puro.

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Azul

#0000FF hsl(240 100% 50%)

Azul puro. Matiz a 240° (dos tercios del camino alrededor de la rueda), saturación totalmente cromática, luminosidad en el punto medio.

#0000FF hsl(240 100% 50%)

El azul puro sobre un fondo blanco falla el contraste WCAG AA (3.7:1) — considere `hsl(224 76% 48%)` (blue-700 de Tailwind) para texto del cuerpo.

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Cian

#00FFFF hsl(180 100% 50%)

Cian. Matiz a 180° (el punto medio de la rueda, opuesto al rojo), saturación totalmente cromática, luminosidad en el punto medio del matiz puro. Color CSS con nombre `cyan` o `aqua`.

#00FFFF hsl(180 100% 50%)

El cian se sitúa opuesto al rojo en la rueda (180°/0°), haciéndolo el compañero natural de armonía complementaria para cualquier color de marca de la familia roja.

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Magenta

#FF00FF hsl(300 100% 50%)

Magenta. Matiz a 300° (cinco sextos alrededor de la rueda), saturación totalmente cromática, luminosidad en el punto medio del matiz puro. Color CSS con nombre `magenta` o `fuchsia`.

#FF00FF hsl(300 100% 50%)

El magenta se sitúa opuesto al verde en la rueda (300°/120°), haciéndolo el compañero natural de armonía complementaria para cualquier color de marca de la familia verde.

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Amarillo

#FFFF00 hsl(60 100% 50%)

Amarillo. Matiz a 60° (un sexto alrededor de la rueda, entre rojo y verde), saturación totalmente cromática, luminosidad en el punto medio del matiz puro.

#FFFF00 hsl(60 100% 50%)

El amarillo a hsl(60 100% 50%) se ve mucho más brillante que el rojo a hsl(0 100% 50%) — un ejemplo vívido de la no-uniformidad perceptual de HSL. OKLCH normaliza esto.

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Tailwind blue-500

#3b82f6 hsl(217 91% 60%)

El color de marca por defecto blue-500 de Tailwind CSS — el "azul web" canónico de mediados de los 2020. Usado en innumerables paneles, sitios de marketing y herramientas de administración.

#3b82f6 hsl(217 91% 60%)

Tailwind v4 redefine blue-500 en OKLCH (`oklch(0.629 0.193 263.4)`) para rampas perceptualmente uniformes — HSL es el fallback v3.

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Tailwind rose-500

#f43f5e hsl(350 89% 60%)

El rose-500 por defecto de Tailwind CSS — un rosa-rojo de alta saturación usado comúnmente para botones de acento, estados de alerta y contraste de marca.

#f43f5e hsl(350 89% 60%)

El matiz de rose-500 (350°) se sitúa justo antes del rojo (0°/360°) en la rueda — un ligero desplazamiento rosa que se lee como más cálido que el rojo puro.

¿Necesita salida perceptualmente uniforme en su lugar? Pruebe el convertidor hex a OKLCH dedicado — cada paso L se ve igual de brillante en todos los matices, a diferencia de HSL.

Cómo usar el convertidor HEX a HSL

  1. 1

    Pegue un código hex en el campo HEX

    Suelte cualquier valor hex en la entrada HEX — con o sin el `#` inicial, en abreviación de 3 dígitos (`#F73`), forma completa de 6 dígitos (`#3b82f6`), abreviación alfa de 4 dígitos (`#F738`), o forma completa alfa de 8 dígitos (`#FF573380`). La herramienta normaliza las cinco formas de entrada al mismo color canónico internamente. La capitalización no importa (`#3b82f6` y `#3B82F6` se analizan de forma idéntica). Caracteres inválidos o conteos de dígitos incorrectos producen un error discreto en línea; un hex válido actualiza cada otro campo de formato en tiempo real, incluido HSL.

  2. 2

    Lea el triple HSL del campo HSL

    El campo HSL debajo del campo HEX muestra el valor `hsl()` correspondiente en la sintaxis moderna con espacios de CSS Color 4: `hsl(217 91% 60%)` para un color opaco, `hsl(217 91% 60% / 0.5)` para uno con alfa. El matiz es un grado entero de 0 a 360; la saturación y la luminosidad son porcentajes enteros de 0 a 100. Los valores se redondean para legibilidad en pantalla — la fuente de verdad interna OKLCH de la herramienta significa que la precisión subyacente es flotante, así que los viajes de ida y vuelta de regreso a hex permanecen estables.

  3. 3

    Haga clic en Copiar para tomar la cadena HSL

    Cada tarjeta de formato tiene un botón Copiar a la derecha. Un clic y el valor aterriza en su portapapeles — la etiqueta del botón cambia brevemente a "¡Copiado!" para que lo sepa. La cadena copiada es la sintaxis canónica de CSS Color 4 (`hsl(217 91% 60%)`); si su objetivo necesita la forma heredada con comas (`hsl(217, 91%, 60%)`), la conversión es mecánica. Para salida específica de plataforma (Tailwind v4, SwiftUI, Compose, Flutter), use la sección Copiar como código debajo del selector — esos fragmentos emiten el formato que cada plataforma espera de forma nativa.

  4. 4

    También visibles: RGB, OKLCH, OKLAB, HSV, HWB, CMYK, color con nombre

    El mismo hex que pega también ilumina los otros campos de formato — RGB para llamadas de canvas y hardware, OKLCH y OKLAB para sistemas de diseño perceptualmente uniformes, HSV y HWB para flujos de selector de color de diseñadores, CMYK para estimaciones de imprenta, y el color CSS con nombre más cercano para prosa de documentación. Nunca está atrapado en hex → HSL solamente. Si también necesita el triple OKLCH para un bloque `@theme` de Tailwind v4 (donde la luminosidad perceptual importa más que la L de HSL afectada por gamma), está justo ahí en el campo OKLCH con su propio botón Copiar.

  5. 5

    Use el selector para barrer la luminosidad visualmente

    Debajo de la cuadrícula de formato hay un cuadrado SL + deslizador de matiz + deslizador de alfa para exploración visual. El cuadrado SL se asigna directamente al plano Saturación × Luminosidad de HSL: arrastre verticalmente para recorrer L del 0% al 100% mientras observa el campo HSL actualizarse en tiempo real. Útil para generar un tinte claro o matiz oscuro visualmente antes de fijar el porcentaje exacto. En navegadores basados en Chromium (Chrome, Edge, Brave) el botón EyeDropper activa la API nativa `EyeDropper` para muestrear cualquier píxel en pantalla, incluso fuera del navegador.

Errores comunes de HEX / HSL

Suponer que la luminosidad HSL es perceptualmente uniforme

Un verde a `hsl(120 100% 50%)` se ve visiblemente más brillante que un azul a `hsl(240 100% 50%)`, aunque ambos estén a L=50%. Generar rampas de tintes claros barriendo L produce resultados de aspecto desigual entre matices — el extremo claro de la rampa verde sube más rápido que el de la rampa azul. Esta es una propiedad estructural de HSL heredando las peculiaridades de gamma de sRGB, no un error en su código. Para rampas perceptualmente uniformes, cambie a OKLCH.

✗ Incorrecto
Barrer L de HSL para una paleta de 9 pasos:
hsl(120 100% 50%) y hsl(240 100% 50%) al mismo L
Se ven visiblemente diferentes en brillo — la paleta se siente desigual.
✓ Correcto
Barrer L de OKLCH en su lugar:
oklch(0.7 0.2 130) y oklch(0.7 0.2 250)
Se ven igual de brillantes; la paleta se lee coherente en todos los matices.

Olvidar que el matiz envuelve a 360°

El matiz HSL es angular — `hsl(370 91% 60%)` se interpreta como `hsl(10 91% 60%)` porque 370° mod 360° = 10°. Animar el matiz de 350° a 380° envuelve limpiamente a través de 360°/0° (una delgada porción de rojo), pero interpolar linealmente de H=350 a H=10 por el camino equivocado toma la ruta *larga* a través de cian, verde, amarillo — un desvío de 320°. Use `Math.min(diff, 360 - diff)` para elegir el camino corto, o use la interpolación de matiz incorporada de una biblioteca de color.

✗ Incorrecto
Interpolación lineal de H=350 a H=10:
(350 + 10) / 2 = 180° (punto medio cian)
Incorrecto — va por el camino largo alrededor de la rueda.
✓ Correcto
Interpolación de matiz por camino corto:
punto medio = ((350 + 10 + 360) / 2) % 360 = 0° (punto medio rojo)
Va por el rojo, el camino corto alrededor de la rueda.

Confundir HSL con HSV

HSL y HSV comparten el eje de matiz pero difieren en su tercer eje. La Luminosidad de HSL es simétrica — 0% negro, 50% matiz puro, 100% blanco. El Valor de HSV es asimétrico — 0% negro, 100% matiz puro, blanco solo cuando la Saturación cae a 0. `hsl(0 100% 100%)` es blanco; `hsv(0 100% 100%)` es rojo puro. Muchas bibliotecas de color y herramientas de diseño (el selector HSB de Photoshop, el panel de color de Sketch) usan HSV — copiar valores entre los dos sistemas sin convertir produce colores radicalmente diferentes.

✗ Incorrecto
Pegar valores HSV de Photoshop en una regla CSS hsl():
HSB de Photoshop 0, 100, 100 (rojo puro)
CSS hsl(0 100% 100%) se renderiza como blanco — color completamente equivocado.
✓ Correcto
Convertir HSV → HSL antes de pegar en CSS:
HSV 0, 100, 100 → HSL 0, 100%, 50%
CSS hsl(0 100% 50%) se renderiza como rojo puro — correcto.

Quitar los signos de porcentaje en HSL

Los ejes S y L de HSL requieren el sufijo `%` en CSS — `hsl(217 91 60)` es un error de análisis en todos los navegadores; la forma correcta es `hsl(217 91% 60%)`. Solo el matiz es adimensional (su unidad son grados, pero el sufijo es opcional). Muchos convertidores ad-hoc olvidan emitir los signos de porcentaje en su salida HSL, produciendo CSS inválido que falla silenciosamente al pegarse. La herramienta siempre emite los signos de porcentaje en el campo HSL.

✗ Incorrecto
Emitir HSL sin signos de porcentaje:
hsl(217 91 60)
Error de análisis CSS — cada navegador ignora la regla entera.
✓ Correcto
Emitir HSL con signos de porcentaje en S y L:
hsl(217 91% 60%)
CSS válido — funciona en todos los navegadores evergreen e IE 9+.

Quién usa HEX a HSL

Desarrolladores frontend definiendo variables CSS HSL
Defina `--primary: hsl(217 91% 60%)` una vez desde el hex de Figma, luego componga `--primary-hover: hsl(217 91% 70%)`, `--primary-active: hsl(217 91% 50%)`, `--primary-bg: hsl(217 91% 95%)` ajustando solo el número L. Pegue el hex una vez, lea el triple HSL, suéltelo en el bloque de propiedades personalizadas CSS. El patrón que los sistemas de diseño heredados usaban para mantener los tintes claros y matices oscuros tonalmente coherentes antes de que las rampas basadas en OKLCH tomaran el relevo.
Diseñadores traduciendo hex al selector HSL
Los diseñadores criados con selectores de matiz + saturación + valor (Adobe, Sketch, el modo HSB de Figma) a menudo quieren el triple HSL incluso cuando el archivo fuente entrega hex. Pegar el hex una vez produce el HSL correspondiente, listo para leer en la posición mental de rueda cromática del diseñador sin una conjetura manual. Útil cuando se revisa una especificación de color de marca y se quiere saber dónde se sitúa en la rueda de matices relativa a otros colores de marca de la familia.
Autores de sistemas de temas computando tokens de modo oscuro
La tematización de modo oscuro a menudo invierte L manteniendo H y S — un `hsl(217 91% 60%)` primario de modo claro se asigna a un `hsl(217 91% 40%)` (o similar) de modo oscuro. Pegue el hex de modo claro, lea el HSL, compute la L del modo oscuro, escriba el nuevo HSL de vuelta en el token del tema oscuro. El patrón es mecánico cuando tiene el triple HSL; es mucho más laborioso hacerlo con canales RGB en crudo.
Autores de sistemas de diseño generando rampas de tintes claros y matices oscuros
Genere una rampa de tintes claros/matices oscuros de 9 pasos barriendo L: `hsl(217 91% 95%)` (más claro), 85%, 75%, 65%, 55%, 45%, 35%, 25%, `hsl(217 91% 15%)` (más oscuro). Pegue el hex base, lea el HSL, barra L en pasos del 10% mentalmente o en código. (Para rampas perceptualmente uniformes donde cada paso se ve igual de brillante, cambie al campo OKLCH al lado — las rampas HSL se ven desiguales entre matices porque L no es perceptualmente uniforme.)
Autores CSS usando matemáticas hsl(from ...) en tiempo de ejecución
El CSS moderno soporta la sintaxis `color-function-from`: `hsl(from var(--primary) h s calc(l + 10%))` deriva una variante más clara de `--primary` en tiempo de renderizado, sin precomputar cada paso. Pegue el hex de marca, confirme el triple HSL, suelte la base en una variable CSS, y use las matemáticas en tiempo de ejecución para tokens derivados. Viene en Chrome 119+, Safari 17.2+, Firefox 128+.
Desarrolladores frontend construyendo conjuntos de tokens HSL de Tailwind v3
Tailwind v3 almacenaba los colores del tema como triples HSL separados por espacios en variables CSS (`--primary: 217 91% 60%`), compuestos vía `hsl(var(--primary))` en `tailwind.config.js`. Pegue el hex de marca, lea el HSL, suelte los tres números (sin el envoltorio `hsl(...)`) en la definición de variable. Tailwind v4 desde entonces ha pivotado a OKLCH-primero, pero los bases de código v3 todavía usan el patrón HSL y lo harán durante años.
Autores de UI de selector de color asignando hex a controles HSL
Construir un selector de color que expone matiz / saturación / luminosidad como tres deslizadores separados (la UI clásica al estilo de Adobe) significa asignar un hex entrante a los tres controles del selector. Pegue el hex aquí, lea el triple HSL, posicione los tres deslizadores programáticamente. La conversión es la misma que su selector ejecutaría internamente; esta herramienta expone los valores intermedios para depuración.
Ingenieros de accesibilidad ajustando la luminosidad del color de marca para contraste
Cuando un color de marca falla el contraste WCAG contra un fondo, la solución barata es subir L hasta que la proporción pase — sin cambiar H o S, el color sigue leyéndose como la misma identidad de marca. Pegue el hex de marca, observe las insignias de contraste, ajuste L mentalmente (o use el eje L del selector) hasta que tanto WCAG como APCA pasen. El campo HSL expone el nuevo porcentaje L para el documento de especificación; el campo hex expone el código correspondiente para la hoja de estilos.

Matemáticas y análisis de HEX a HSL

HEX → RGB → HSL es una canalización de dos pasos
La conversión pasa por RGB como intermedio. Paso uno: analice hex a enteros RGB vía `parseInt(hex.slice(1, 3), 16)` por canal. Paso dos: normalice RGB a 0-1, compute `max`/`min`/`delta`, aplique la trigonometría a trozos de CSS Color 4 §6.4: `L = (max + min) / 2`, `S = delta / (1 - |2L - 1|)`, `H = a trozos * 60`. La estructura de dos pasos es por qué la herramienta también expone la tupla RGB intermedia — es gratis de mostrar y útil para depuración.
CSS Color 4 §6.4 define el algoritmo de referencia
La especificación W3C CSS Color 4 §6.4 (algoritmo `rgb()` a `hsl()`) define las matemáticas canónicas a trozos: luminosidad como el punto medio de max y min, saturación como `delta / (1 - |2L - 1|)` (con S = 0 cuando delta = 0, para evitar división por cero en grises), matiz como una trigonometría de 60-grados-por-paso según qué canal sea el máximo. La especificación también maneja casos extremos: el negro puro (`#000`) produce `hsl(0 0% 0%)` con un matiz arbitrario de 0°; el blanco puro (`#FFF`) produce `hsl(0 0% 100%)` similarmente; el gris puro produce `hsl(0 0% 50%)`.
El matiz envuelve a 360°, S y L son porcentajes
Los tres ejes de HSL tienen unidades diferentes. El matiz es un grado angular de 0 a 360 con envoltura — `hsl(370 ...)` se interpreta como `hsl(10 ...)` porque las posiciones angulares envuelven. La saturación y la luminosidad son porcentajes del 0% al 100%, sin envoltura; los valores fuera de rango se recortan. CSS Color 4 también acepta matiz en vueltas (`hsl(0.6turn ...)`) o radianes (`hsl(3.787rad ...)`); la salida de la herramienta usa grados porque esa es la forma más común en las UIs de herramientas de diseño y los documentos de especificación de marca.
La luminosidad HSL NO es perceptualmente uniforme
Un verde a `hsl(120 100% 50%)` se ve visiblemente más brillante que un azul a `hsl(240 100% 50%)`, aunque ambos tengan la misma Luminosidad nominal — porque HSL hereda las peculiaridades de gamma de sRGB y usa la misma escala L en cada matiz. Por eso las rampas de tintes claros basadas en HSL se ven desiguales (el extremo claro de la rampa verde sube más rápido que el extremo claro de la rampa azul) y por qué los sistemas de diseño han migrado en gran parte a OKLCH para generación de rampas. La herramienta expone tanto HSL como OKLCH para que la elección esté a un vistazo de distancia.
Fuente de verdad interna OKLCH para estabilidad de ida y vuelta
Aunque este radio apunta a HEX → HSL específicamente, el convertidor subyacente compartido mantiene el color canónico como un triple OKLCH internamente. HEX → HSL → RGB → OKLAB → HEX hace ida y vuelta manteniéndose bit-estable; los convertidores heredados con pivote HSL acumulan error de redondeo y pueden desviar el matiz varios grados a lo largo de unas pocas conversiones. El pivote OKLCH también preserva el matiz como un eje estable, así que arrastrar el deslizador de matiz no cruza accidentalmente por gris. Según el artículo de OKLAB de Björn Ottosson de 2020.
Codificación de canal: 8 bits sin signo, sRGB codificado en gamma
Los códigos hex codifican canales RGB sin signo de 8 bits (0-255) en el espacio de color sRGB definido por IEC 61966-2-1 (1996). Los valores están *codificados en gamma* — la relación entre el valor de canal y el brillo percibido es no lineal, siguiendo la función de transferencia sRGB a trozos (aproximadamente un exponente 2.4 con un pequeño segmento lineal cerca de cero). HSL se deriva directamente de estos valores RGB codificados en gamma sin ningún paso de linealización, que es la causa raíz del problema de uniformidad perceptual de HSL. OKLCH lineariza primero y luego re-asigna a un espacio perceptualmente uniforme; HSL no.

Buenas prácticas para flujos HEX / HSL

Use la sintaxis HSL moderna con espacios en código nuevo
`hsl(217 91% 60%)` (con espacios) y `hsl(217 91% 60% / 0.5)` (barra para alfa) de CSS Color 4 son las sintaxis canónicas para código enviado en 2025 y posteriores. Las formas heredadas con comas `hsl(217, 91%, 60%)` y `hsla(217, 91%, 60%, 0.5)` siguen soportadas en todas partes pero están estilísticamente desaconsejadas en CSS Color 4. Use la sintaxis moderna en hojas de estilo nuevas; mantenga `hsla()` solo para contextos de fallback de IE 9-11 donde genuinamente necesite soporte heredado.
Genere rampas en OKLCH, no en HSL
El eje de Luminosidad de HSL no es perceptualmente uniforme — un barrido L de 9 pasos produce una rampa donde los pasos verdes se ven más brillantes que los pasos azules en cada valor L. Para rampas donde cada paso debería verse igual de brillante (la petición por defecto de un sistema de diseño), genere en OKLCH en su lugar: `oklch(0.7 0.15 217)`, `oklch(0.6 0.15 217)`, etc. La herramienta expone tanto HSL como OKLCH para el mismo hex, así que cambiar entre los dos está a un clic de Copiar de distancia.
Fije el matiz y la saturación, barra la luminosidad
Al usar HSL para trabajo de tintes claros/matices oscuros, cambie solo el número L — mantenga H y S idénticos en toda la rampa. La deriva del matiz (incluso por 5°) hace que una rampa se vea desordenada. La deriva de saturación hace que el extremo claro se vea desvaído y el extremo oscuro se vea turbio. La disciplina de un-eje-a-la-vez es lo que da a HSL su reputación amigable para el diseño; abandonarla le da lo peor de ambos mundos.
Prefiera hex para tokens fuente de verdad, HSL para variantes computadas
Cuando escriba una especificación de tokens de diseño, prefiera hex (u OKLCH) como forma canónica — son más escuetos y caben limpiamente en JSON o YAML. HSL es más útil para tokens *derivados* en tiempo de ejecución (`hsl(from var(--primary) h s calc(l + 10%))`) que como formato de fuente de verdad. Los dos formatos describen el mismo color; la elección es sobre qué papel juega el token en el sistema.
Documente las variantes HSL con el hex base
Cuando envíe una variable CSS como `--primary-light: hsl(217 91% 70%)`, incluya un comentario apuntando de vuelta al hex base: `/* base: #3b82f6 → hsl(217 91% 60%), variante clara +10% L */`. Seis meses después, cuando alguien quiera derivar `--primary-lighter`, necesita el color base para computar desde — y HSL por sí solo no expone eso. El hex + HSL juntos preservan la procedencia completa.
Use el hash de URL para compartir decisiones de color en vivo
Cada cambio de color actualiza el hash de URL como `#hex=3b82f6` automáticamente. Copie la URL en un hilo de Slack o issue de GitHub y cualquiera que la abra aterrizará en el mismo color con el mismo triple HSL. Esto es más fiable que pegar una cadena HSL en chat — los destinatarios a veces escriben mal el grado o se saltan un signo de porcentaje al introducir el valor manualmente — y permite a un hilo de revisión de diseño hacer referencia a un color exacto en lugar de "el azul que discutimos el martes". El hash nunca se transmite al servidor.

Preguntas frecuentes

¿Cómo convierto hex a HSL?
Primero convierta el hex a enteros RGB vía `parseInt(hex, 16)`, luego normalice cada canal a 0-1 dividiendo por 255, luego compute `max`/`min`/`delta` entre los tres canales y aplique la trigonometría a trozos de CSS Color 4 §6.4: luminosidad = `(max + min) / 2`, saturación = `delta / (1 - |2L - 1|)` (cero cuando delta es cero), matiz = a trozos según qué canal sea el máximo (60° por paso alrededor de la rueda). `#3b82f6` se analiza a `rgb(59 130 246)` y luego se convierte a `hsl(217 91% 60%)`. Esta herramienta ejecuta toda la canalización en vivo mientras escribe.
¿Qué es el color HSL?
HSL es una reforma cilíndrica del espacio de color sRGB en tres ejes perceptualmente significativos: Matiz (0-360°, posición angular en la rueda cromática — 0° rojo, 120° verde, 240° azul), Saturación (0-100%, intensidad cromática — 0% gris, 100% totalmente cromático) y Luminosidad (0-100%, brillo — 0% negro, 50% matiz puro, 100% blanco). Alvy Ray Smith publicó la derivación en 1978 para dar a los diseñadores un sistema de coordenadas más cercano a cómo piensan sobre el color que el direccionamiento de canales RGB en crudo. HSL ha estado en CSS desde 2010 (CSS3) y viene en todos los navegadores.
¿Cuál es la diferencia entre HSL y HSV?
Ambos son reformas cilíndricas de sRGB con ejes de matiz idénticos, pero tratan el tercer eje de forma diferente. La Luminosidad de HSL va de negro al 0% pasando por matiz puro al 50% hasta blanco al 100% — simétrica, así que `hsl(0 100% 50%)` es rojo puro y `hsl(0 100% 100%)` es blanco. El Valor de HSV va de negro al 0% a matiz puro al 100% — asimétrico, así que `hsv(0 100% 100%)` es rojo puro y el blanco solo aparece cuando la saturación cae a 0. HSL es más útil para rampas de tinte/matiz oscuro de sistemas de diseño porque el punto medio del 50% marca la referencia de color puro; HSV es más útil para selectores de color porque el cuadrado saturación/valor se asigna limpiamente a una UI de selector SV.
¿Por qué usar HSL en lugar de RGB?
Tres razones. Primero, deslizadores intuitivos — mover L del 60% al 70% produce de forma predecible un matiz claro más brillante del mismo color; mover R de 130 a 150 produce un desplazamiento de color menos predecible. Segundo, generación de paletas — `hsl(217 91% 60%)`, `hsl(217 91% 70%)`, `hsl(217 91% 80%)` es una rampa de tintes claros tonalmente coherente generada cambiando un solo número; lo mismo en RGB necesita tres ediciones coordinadas. Tercero, matemáticas CSS en tiempo de ejecución — el CSS moderno permite computar `hsl(from var(--primary) h s calc(l + 10%))` para derivar una variante más clara a partir de un token base sin precomputar cada paso. RGB no tiene tal conveniencia de eje cilíndrico.
¿Cómo se lee un valor HSL?
HSL tiene tres partes en orden: Matiz, Saturación, Luminosidad. `hsl(217 91% 60%)` significa matiz = 217° (un azul limpio, justo más allá del territorio del azul puro a 240° y de vuelta hacia el cian), saturación = 91% (altamente cromático, casi sin gris), luminosidad = 60% (un escalón más brillante que el punto medio del matiz puro). El matiz es el único eje sin sufijo de porcentaje porque se expresa en grados — los valores envuelven a 360°, así que `hsl(370 ...)` es idéntico a `hsl(10 ...)`. El valor precedido por barra al final (si está presente) es el alfa en el rango 0-1: `hsl(217 91% 60% / 0.5)` es el mismo color al 50% de opacidad.
¿Soporta CSS HSL?
Sí — HSL ha estado en CSS desde CSS3 en 2010 y viene en todos los navegadores, incluido IE 9. La sintaxis original usaba comas: `hsl(217, 91%, 60%)` para opaco y `hsla(217, 91%, 60%, 0.5)` para los que llevan alfa. CSS Color 4 (Candidate Recommendation del W3C desde 2022) añadió la forma moderna con espacios: `hsl(217 91% 60%)` y `hsl(217 91% 60% / 0.5)` con alfa precedido por barra. El matiz también puede expresarse en vueltas o radianes (`hsl(0.6turn 91% 60%)` es idéntico a `hsl(217 91% 60%)`). Las sintaxis heredada y moderna son intercambiables en todos los navegadores evergreen.
¿Qué significa la L en HSL?
Luminosidad (Lightness en inglés). El eje 0-100% que controla qué tan brillante aparece el color, con 0% asignándose a negro puro y 100% a blanco puro. El punto medio (50%) es donde vive el matiz puro — `hsl(0 100% 50%)` es rojo puro, mientras que `hsl(0 100% 25%)` es un rojo más oscuro y `hsl(0 100% 75%)` es un rosa más claro. La luminosidad es la contraparte simétrica del Valor asimétrico de HSV. Tenga en cuenta que la luminosidad de HSL *no* es perceptualmente uniforme — un verde a L=50% se ve visiblemente más brillante que un azul a L=50% porque HSL hereda las peculiaridades de gamma de sRGB; para uniformidad perceptual, recurra a OKLCH.
¿Qué tan precisa es la conversión de hex a HSL?
El paso HEX → RGB es bit-exacto (`parseInt(hex, 16)` devuelve enteros sin involucración de coma flotante). El paso RGB → HSL involucra trigonometría y división, así que la salida es un flotante que la herramienta redondea a grados enteros y porcentaje entero para mostrar. Un viaje de ida y vuelta HEX → HSL → HEX recupera el hex original dentro de 1 unidad de canal (el error de redondeo de mostrar H como un grado entero). Para trabajo sin pérdida, OKLCH es un mejor formato interno — esta herramienta de hecho mantiene OKLCH como fuente de verdad internamente, luego deriva HSL para mostrar, así que la estabilidad de ida y vuelta es mejor que la de los convertidores ingenuos con pivote HSL.

Herramientas relacionadas

Ver todas las herramientas →