Conversor HSL para HWB
Descreva uma cor como um matiz com um pouco de branco e de preto: hsl(210, 80%, 45%) vira brancura de 9% e negrura de 19% no mesmo matiz, escrito como hwb(210 9% 19%). Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- H
- 210
- S
- 80
- L
- 45
- W
- 9
- B
- 19
- Css
- hwb(210 9% 19%)
HSL descreve uma cor pelo matiz na roda, a saturação como o quão vívida é a mistura e a luminosidade como o quão perto ela fica do preto ou do branco. HWB usa esse mesmo matiz e nomeia quanto branco e quanto preto se misturam ao matiz puro. Quem já escolhe cores em HSL costuma precisar de HWB ao escrever funções hwb() do CSS Color Module, ao falar com ferramentas de ilustração que expõem controles de brancura e negrura, ou ao documentar uma amostra como tinta mais sombra. Este conversor recebe o matiz em graus de zero a trezentos e sessenta e a saturação e a luminosidade como porcentagens de zero a cem, e devolve o triplo HWB correspondente com uma string CSS hwb().
Como o HSL se mapeia para matiz, brancura e negrura
O matiz é compartilhado por HSL e HWB: zero graus é vermelho puro, cento e vinte é verde puro, duzentos e quarenta é azul puro e trezentos e sessenta fecha o círculo de volta ao vermelho. O HSL então guarda a saturação como até onde um cinza da luminosidade escolhida é esticado rumo à cor plenamente cromática naquele matiz, e a luminosidade como a mistura entre preto a zero por cento, um tom médio perto de cinquenta por cento e branco a cem por cento.
O HWB nomeia a mesma cor como um matiz puro misturado com uma quantidade de branco e uma quantidade de preto. No intervalo unitário o mapeamento é de forma fechada e não precisa passar por RGB inteiro: o croma é um menos o valor absoluto de duas vezes a luminosidade menos um, tudo multiplicado pela saturação; a brancura é a luminosidade menos a metade do croma; a negrura é um menos a luminosidade menos a metade do croma.
Isso equivale a tomar o canal RGB mínimo como branco e um menos o canal RGB máximo como preto, que é como o CSS Color Module Level Four define HWB. Quando a saturação é zero o croma some, então brancura e negrura viram porcentagens complementares que somam cem e descrevem um cinza, um preto ou um branco. Quando a luminosidade é cinquenta por cento e a saturação é cem por cento, o croma vale um e tanto o branco quanto o preto colapsam a zero, que é o matiz puro.
O matiz deve estar no intervalo fechado de zero a trezentos e sessenta; saturação e luminosidade devem cada uma estar entre zero e cem por cento inclusive.
O que você envia e o que recebe de volta
Envie três números finitos nos campos h, s e l. O campo h é o matiz em graus e é obrigatório; deve ficar entre zero e trezentos e sessenta inclusive porque HSL e HWB compartilham esse ângulo e este conversor não inventará um envelopamento. Os campos s e l são saturação e luminosidade como porcentagens de zero a cem.
Quando a saturação fica fora de zero a cem, a resposta explica que s deve ser uma porcentagem nessa faixa fechada para que um cliente possa limitar ou corrigir o token antes de tentar de novo; a mesma regra vale para a luminosidade.
Em caso de sucesso, a resposta ecoa os valores h, s e l limpos, informa a brancura w e a negrura b como porcentagens, aninha o objeto hsl de origem e o objeto hwb resultante, emite uma string CSS imprimível na forma hwb(H W% B%) e inclui uma nota curta de fórmula que reafirma as identidades de croma.
Verificações clássicas incluem o azul-ciano de tom médio com matiz duzentos e dez, saturação oitenta e luminosidade quarenta e cinco, mapeando para nove por cento de branco e dezenove por cento de preto; o vermelho puro com matiz zero, saturação cem e luminosidade cinquenta, mapeando para zero de branco e zero de preto; e qualquer matiz com saturação zero, que colapsa em uma mistura acromática cuja brancura mais negrura soma cem.
Onde a conversão de HSL para HWB aparece no trabalho real
Sistemas de design costumam redigir rampas de marca em HSL para que as equipes de produto possam escalonar a luminosidade com contraste acessível mantendo estáveis o matiz e uma faixa de saturação; ainda assim, folhas de estilo modernas, aplicativos de ilustração e vários seletores nativos já expõem HWB porque misturar um matiz puro com branco e preto coincide com o modo como pintores falam de tintas e sombras.
Engenheiros front-end que migram um token de propriedades customizadas hsl() para hwb() precisam de um oráculo determinístico que não dependa da serialização do estilo computado de um navegador específico. Ferramentas de visualização de dados e de arte generativa que montam paletas categóricas avançando o matiz com saturação e luminosidade fixas ainda precisam despejar HWB quando um renderizador ou um pipeline de impressão pede brancura e negrura em vez de um terceiro eixo de luminosidade.
Currículos e aulas de bootcamp ensinam modelos cilíndricos lado a lado e precisam de uma única chave confiável para as tarefas que combine com as identidades do CSS Color Module, e não com uma captura de um seletor de cor. Fluxos de acessibilidade que ajustam a luminosidade percebida em HSL e depois entregam a um editor baseado em HWB ainda precisam de mapeamento exato de canais sem APIs exclusivas do navegador.
Se mais tarde você precisar de HSL para RGB, HSL para HSV, conversão multi-formato HEX LAB CMYK ou checagens de contraste WCAG, trate-as como intenções de busca e páginas de destino separadas em vez de sobrecarregar esta página dedicada ao conversor de HSL para HWB.
Casos de uso
Tokens de design de HSL para CSS hwb()
Converta rampas de marca HSL em triplos de matiz, brancura e negrura para folhas de estilo modernas, seletores de ilustração e tabelas de documentação que falam HWB.
Documentação de tintas e sombras
Expresse uma amostra HSL como um matiz puro misturado com branco e preto para que as revisões de design falem de tintas e sombras sem um segundo modelo de cor.
Perguntas frequentes
Quais intervalos matiz, saturação e luminosidade aceitam?
O matiz h deve estar entre 0 e 360 graus inclusive. Saturação s e luminosidade l são porcentagens de 0 a 100.
O matiz muda entre HSL e HWB?
Não. O matiz é compartilhado pelos dois modelos e é copiado sem alteração. Só a brancura e a negrura são calculadas a partir da saturação e da luminosidade.
Como a brancura e a negrura são calculadas?
No intervalo unitário, o croma C vale (1 − |2L − 1|) · S. A brancura é L − C/2 e a negrura é 1 − L − C/2. Os resultados voltam como porcentagens de 0 a 100.
Como é uma string CSS hwb()?
O campo css é uma string do Color Module como hwb(210 9% 19%). O matiz é o ângulo compartilhado; as duas porcentagens são brancura e negrura.
Quanto custa o conversor de HSL para HWB?
A ferramenta do navegador é gratuita e roda localmente.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/color/hsl-hwb \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"h":210,"s":80,"l":45}'const res = await fetch("https://api.kit.forhosting.com/color/hsl-hwb", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"h": 210,
"s": 80,
"l": 45
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/hsl-hwb",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"h": 210,
"s": 80,
"l": 45
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/hsl-hwb", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"h":210,"s":80,"l":45}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"h":210,"s":80,"l":45}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/hsl-hwb", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"h": 210,
"s": 80,
"l": 45
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.hsl_hwb",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Saturação e luminosidade fora das faixas legais falham com um erro invalid_input claro para que tokens inválidos nunca sejam recortados em silêncio.
Como o HSL se mapeia para matiz, brancura e negrura
O pipeline é aritmética de ponto flutuante pura, sem sementes aleatórias, sem carimbos de relógio e sem chamadas de rede, de modo que entradas HSL idênticas sempre produzem o mesmo JSON. Valores fora dessas faixas falham com invalid_input em vez de envelopamento silencioso ou recorte sem aviso.
O que você envia e o que recebe de volta
Campos ausentes, strings vazias, tokens não numéricos, NaN e Infinity falham com invalid_input nomeando o campo e não são cobrados. O preço de chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item; falhas de validação não consomem saldo pré-pago.
Onde a conversão de HSL para HWB aparece no trabalho real
Como esta capacidade é um motor de parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação falha não consome saldo.
Casos de integração
Fixtures em massa de tokens e currículo
Programe a conversão determinística de HSL para HWB para fixtures de regressão, chaves de tarefas e exportações de paleta com uma só API a US$ 0,002 por item.