Um conversor de hex para HSL é um pequeno utilitário que transforma um código de cor hex (`#3b82f6`) na tripla cilíndrica Matiz / Saturação / Luminosidade que codifica a mesma cor sRGB (`hsl(217 91% 60%)`). Códigos hex são a string concisa em base 16 que designers e desenvolvedores colam entre Figma, Sketch, Photoshop, PDFs de guia de marca e folhas de estilo CSS — três canais de 8 bits empacotados em uma forma `#RRGGBB` de 6 caracteres, ancorada no espaço de cor sRGB definido pela IEC 61966-2-1 em 1996. HSL é uma reformulação cilíndrica desse mesmo espaço de cor em três eixos mais amigáveis para designer: um ângulo de matiz na roda de cores, uma porcentagem de saturação cromática e uma porcentagem de luminosidade. Desenvolvedores convertem HEX → HSL o tempo todo: para definir uma cor de marca como variável CSS e depois compor matizes claras ou escuras ajustando apenas L, para alimentar uma UI de seletor de cor que exibe Matiz e SL como controles separados, para gerar rampas de matizes claras e escuras para um design system ou para fazer matemática de variável CSS em tempo de execução via `hsl(from var(--primary) h s calc(l + 10%))` para tokens derivados de tema. Esta ferramenta roda a conversão ao vivo enquanto você digita, sem botão "Converter" para clicar, e expõe todo outro formato de cor comum (RGB, OKLCH, OKLAB, HSV, HWB, CMYK, mais as 148 cores nomeadas do CSS) ao lado da saída HSL, grátis.
**O próprio formato HSL merece um olhar mais próximo.** HSL = Matiz (0-360°), Saturação (0-100%), Luminosidade (0-100%). Matiz é posição angular na roda de cores — 0° é vermelho, 60° é amarelo, 120° é verde, 180° é ciano, 240° é azul, 300° é magenta e 360° volta para vermelho. Saturação é intensidade cromática de 0% (cinza acromático) a 100% (totalmente cromático sem conteúdo de cinza). Luminosidade é brilho de 0% (preto puro, independente do matiz ou saturação) passando por 50% (a matiz pura em chroma cheio) até 100% (branco puro, independente do matiz ou saturação). Alvy Ray Smith publicou a derivação original em 1978 como parte do empurrão inicial da computação gráfica para dar a designers sistemas de coordenadas mais próximos do seu modelo cognitivo de cor do que o endereçamento bruto de canais RGB. O modelo está no CSS desde o CSS3 (2010) e vem em todo navegador até o IE 9. A sintaxe CSS original usava vírgulas: `hsl(217, 91%, 60%)` para opaco, `hsla(217, 91%, 60%, 0.5)` para com alfa. O CSS Color 4 (Candidate Recommendation do W3C desde 2022) adicionou uma forma moderna separada por espaços: `hsl(217 91% 60%)` e `hsl(217 91% 60% / 0.5)` com alfa prefixado por barra — mesma forma de sintaxe das outras notações funcionais do CSS Color 4 (`rgb()`, `lab()`, `oklch()`, `color()`). Matiz também pode ser expresso em turns (`hsl(0.6turn 91% 60%)`) ou radianos (`hsl(3.787rad 91% 60%)`), tudo equivalente à forma canônica em graus. Todo navegador evergreen interpreta toda variação sintática; a ferramenta emite a forma moderna separada por espaços por padrão.
A matemática da conversão vai nos dois sentidos de forma limpa. **HEX → HSL** é um pipeline de dois passos. Primeiro, interprete o hex de 6 dígitos `#RRGGBB` como três números base 16 de 2 dígitos via `parseInt(hex.slice(1, 3), 16)` etc. para obter canais RGB inteiros em 0-255. Segundo, normalize cada canal para 0-1 dividindo por 255, depois compute `max = Math.max(r, g, b)`, `min = Math.min(r, g, b)`, `delta = max - min`. Luminosidade é a média de max e min: `L = (max + min) / 2`. Saturação é condicional na luminosidade: quando L ≤ 0,5, `S = delta / (max + min)`; quando L > 0,5, `S = delta / (2 - max - min)`. De forma equivalente na forma do CSS Color 4 §6.4, `S = delta / (1 - |2L - 1|)` (com S = 0 quando delta = 0). Matiz é por trechos sobre qual canal é o máximo: quando R é o máximo, `H = ((G - B) / delta) % 6`; quando G é o máximo, `H = (B - R) / delta + 2`; quando B é o máximo, `H = (R - G) / delta + 4`; multiplique por 60 para escalar para graus, some 360 se negativo. O inverso (HSL → HEX, via RGB) usa o auxiliar `f(n) = L - a * max(-1, min(k-3, 9-k, 1))` onde `a = S * min(L, 1-L)` e `k = (n + H/30) mod 12`, aplicado com n = 0, 8, 4 para produzir R, G, B respectivamente, depois escalado para 0-255 e codificado em hex.
**Por que o HSL ainda é útil.** Sliders intuitivos — ajustar L previsivelmente clareia ou escurece sem quebrar a identidade do matiz, enquanto ajustar um canal RGB produz um deslocamento de cor menos previsível. Matemática CSS em tempo de execução — navegadores modernos suportam `hsl(from var(--primary) h s calc(l + 10%))` para derivar tokens de tema em tempo de renderização. Cognição de designer — designers criados em seletores de cor HSV raciocinam sobre cor em termos de matiz + chroma mesmo quando o arquivo entrega hex. **O problema do HSL** é que seu eixo de Luminosidade não é perceptualmente uniforme — um verde em L=50% parece visivelmente mais brilhante do que um azul em L=50% porque o HSL herda as peculiaridades de gama do sRGB e trata todo matiz como equivalente na escala L. Quando você precisa de uniformidade perceptual (geração de paleta onde cada passo deve parecer igualmente brilhante, cálculo de token de modo escuro que não torne acidentalmente texto azul mais difícil de ler do que texto verde), vá para o OKLCH — a mesma ferramenta expõe os dois, então a escolha fica a um olhar de distância.
O fluxo HEX → HSL desta ferramenta é uma direção de uma família de 5 spokes que compartilham o mesmo conversor de cor unificado por baixo. O conversor de cores unificado dedicado é o hub — ele mostra todos os 9 formatos simultaneamente editáveis e é a ferramenta certa quando seu fluxo precisa de mais do que apenas hex e HSL. Os spokes de direção única miram intenções específicas de busca no Google: o conversor de hex para RGB para a direção de canvas-e-hardware, o conversor de RGB para hex para o inverso, o conversor de hex para OKLCH para design systems perceptualmente uniformes modernos (Tailwind v4 e shadcn agora padronizam OKLCH) e o conversor de hex para CMYK para aproximações de preparação de impressão. Todos os cinco spokes e o hub compartilham o mesmo motor de parsing e a mesma matemática de conversão, então os resultados são garantidamente idênticos pela família toda. Cada conversão roda localmente no seu navegador — seus códigos hex nunca são enviados, nunca registrados, e zero requisições de rede disparam enquanto você digita. Confira no DevTools.