Skip to content

Conversor de HEX para OKLCH

Converta HEX para OKLCH para tokens de design do Tailwind v4. Saída perceptualmente uniforme ao vivo com avisos de gama Display P3. Grátis, apenas no navegador.

Sem rastreamento Roda no navegador Grátis
Toda conversão de cor acontece localmente no seu navegador. Nenhum dado é enviado para qualquer servidor.
Gama: sRGB Display P3 Rec2020
Contraste contra:
AA AA-Lg AAA AAA-Lg · APCA Lc
Simulação de daltonismo (8 tipos)
Protanopia (cego para vermelho)
Deuteranopia (cego para verde)
Tritanopia (cego para azul)
Acromatopsia (total)
Protanomalia (deficiência de vermelho)
Deuteranomalia (deficiência de verde)
Tritanomalia (deficiência de azul)
Acromatomalia (parcial)
Tints / Shades / Tones / Harmonies

Tints

Shades

Tones

Harmonies

Copiar como código
Referência de cores comuns
Revisado para conformidade com CSS Color 4 §11.2 + §15.1, correção da matriz OKLAB de Ottosson 2020, paridade com a paleta Tailwind v4, precisão da detecção de gama Display P3 / Rec2020 e estabilidade de round-trip entre HEX e OKLCH pelas faixas 0-1 de Luminosidade perceptual, 0-0.4 de Chroma e 0-360° de Matiz. — Go Tools Engineering Team · May 27, 2026

O que é um Conversor de HEX para OKLCH?

Um conversor de hex para OKLCH é um pequeno utilitário que transforma um código de cor hex (`#3b82f6`) na tripla perceptualmente uniforme de Luminosidade perceptual / Chroma / Matiz que codifica a mesma cor no espaço OKLCH (`oklch(0.629 0.193 263.4)`). Códigos hex são as strings concisas em base 16 que designers e devs 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, ancorados no espaço de cor sRGB definido pela IEC 61966-2-1 em 1996. OKLCH é a forma polar do OKLAB, o espaço de cor perceptualmente uniforme de Björn Ottosson de 2020, adicionado ao CSS pela sintaxe `oklch()` no CSS Color 4 (W3C Candidate Recommendation desde 2022). Os canais são Luminosidade perceptual (0-1, também escrita como 0-100%), Chroma (0 até cerca de 0.4 para as cores sRGB mais saturadas, sem limite superior para cores de gama ampla) e Matiz (0-360°, o mesmo eixo angular que o HSL usa). O suporte em navegadores pousou em todos os evergreens entre março de 2022 (Safari 15.4) e maio de 2023 (Firefox 113), com o Chrome 111 no meio (março de 2023) — a cobertura combinada do caniuse passa de 94%. Exemplo: o blue-500 do Tailwind é `oklch(0.629 0.193 263.4)`.

**Uniformidade perceptual — por que importa.** No OKLCH (e em seu primo retangular OKLAB), distância numérica igual no canal L corresponde a distância percebida igual em brilho — em todos os matizes, todos os níveis de chroma, todas as regiões do espaço de cor. No HSL, valores iguais de L parecem irregularmente brilhantes entre matizes porque o HSL herda os defeitos de gama do sRGB: um verde em `hsl(120 100% 50%)` parece visivelmente mais brilhante que um azul em `hsl(240 100% 50%)`, mesmo com os dois reportando L=50%. A causa estrutural é que o HSL deriva o L geometricamente (média do máximo e mínimo de canal em sRGB gama-codificado), enquanto o OKLCH deriva o L de um modelo ancorado perceptualmente que lineariza primeiro e roteia por um estágio LMS de resposta cone. A consequência prática: manter o L constante entre matizes no OKLCH produz brilho visualmente equivalente — um verde em `oklch(0.7 0.2 130)` e um azul em `oklch(0.7 0.2 250)` parecem igualmente brilhantes na tela. É por isso que o Tailwind v4 migrou sua paleta padrão para rampas baseadas em OKLCH em 2025 — cada passo de matiz escura (50, 100, 200, …, 900, 950) atinge a mesma diferença de luminosidade percebida, então as cores de marca parecem consistentes entre matizes sem ajuste manual por cor.

**Tailwind v4 e a revolução dos design tokens.** O Tailwind v4 (lançado em janeiro de 2025) substituiu sua geração de cor baseada em HSL por um sistema baseado em OKLCH. O shadcn/ui veio logo depois, adotando OKLCH para seu tema de variáveis CSS; o Radix Colors v3 também adotou. Por que agora: design systems precisam de matizes escuras que pareçam uniformemente espaçadas pela paleta inteira, e precisam dessa propriedade automaticamente conforme a paleta cresce. Com HSL, designers precisavam corrigir cada passo de cor manualmente — subir 5% extras no L no extremo escuro da rampa azul para casar com o extremo escuro da rampa verde, depois re-subir quando a marca evoluísse. Com OKLCH, uma fórmula única (dê passos de 0.1 no L, mantenha C e H constantes) produz rampas consistentes automaticamente. Exemplo real: no Tailwind v3, `red-500` e `blue-500` tinham pesos perceptuais visivelmente diferentes apesar de L% HSL idênticos; no v4, `red-500` e `blue-500` parecem balanceados porque os dois ficam no mesmo L OKLCH. Isso importa para acessibilidade (contraste consistente contra fundos compartilhados significa que estados de componente parecem uniformes pela paleta), consistência de marca (a hierarquia visual se mantém entre paletas — um botão `primary` e um botão `accent` no mesmo L parecem o mesmo nível de hierarquia) e ergonomia de dev (um modelo mental único em vez de dezenas de exceções ajustadas à mão enterradas na spec de design tokens).

**Implicações de gama ampla.** OKLCH é ilimitado — consegue representar cores fora do sRGB, incluindo tudo que Display P3 e Rec2020 conseguem reproduzir. Isso faz dele a escolha natural para telas modernas de gama ampla. A maioria dos aparelhos Apple desde 2017 (iPhone 7 em diante, MacBook Pro 2016 em diante, todo iPad Pro) renderiza Display P3 nativamente, e muitos aparelhos Android modernos e telas de laptop também. A contrapartida: nem toda tripla OKLCH mapeia para uma cor sRGB válida. A ferramenta mostra três badges de gama — sRGB, Display P3, Rec2020 — para você ver imediatamente se o OKLCH atual vai exibir corretamente em um alvo dado. Quando a cor é apenas-sRGB, o botão **Snap to sRGB** usa redução binária de chroma (pelo algoritmo informativo de mapeamento de gama do CSS Color 4 §13) para encolher a cor para dentro da gama preservando L e H — entregando um fallback hex que você pode embarcar via `@supports not (color: oklch(0 0 0))` ao lado do valor OKLCH original para os clientes de gama mais ampla.

**A matemática da conversão HEX → OKLCH.** O pipeline é bem definido e fundamentado em duas fontes primárias: W3C CSS Color 4 para os estágios sRGB e XYZ, Ottosson 2020 para o estágio OKLAB. Passo um: parse `#RRGGBB` para três canais inteiros de 8 bits sRGB via `parseInt(hex.slice(1, 3), 16)` por canal. Passo dois: normalize cada canal para 0-1 dividindo por 255. Passo três: decodifique a gama para sRGB linear via a função por trechos do CSS Color 4 §11.2 (`v <= 0.04045 ? v/12.92 : ((v+0.055)/1.055)^2.4`). Passo quatro: multiplique pela matriz 3×3 do §15.1 para obter coordenadas CIE XYZ D65. Passo cinco: multiplique pela matriz LMS do Ottosson (da implementação de referência de 2020 dele) e tire a raiz cúbica de cada canal. Passo seis: multiplique pela matriz OKLAB do Ottosson para obter L / a / b. Passo sete: cartesiano-para-polar — `C = sqrt(a² + b²); H = atan2(b, a) * 180 / π`, embrulhe H em 0-360°. O pipeline completo roda em microssegundos — cada tecla re-renderiza a saída OKLCH instantaneamente sem debounce.

O fluxo HEX → OKLCH 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 OKLCH. 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 canvas-e-hardware, o conversor de RGB para hex para o inverso, o conversor de hex para HSL para o espaço cilíndrico legado de designer ainda usado em muitas bases de código Tailwind v3, e o conversor de hex para CMYK para aproximações de preparação de impressão. Os cinco spokes e o hub compartilham a mesma fonte-de-verdade OKLCH internamente e as mesmas matrizes do Ottosson 2020, 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. Para um mergulho mais profundo no porquê de OKLCH ter virado o padrão de design systems em 2024–2026, confira o guia complementar: Espaço de cor OKLCH explicado — por que o Tailwind v4 adotou.

// sRGB hex → OKLCH per W3C CSS Color 4 + Ottosson 2020
// References: https://www.w3.org/TR/css-color-4/#color-conversion-code
//             https://bottosson.github.io/posts/oklab/
// Worked example: #3b82f6 (Tailwind blue-500) → oklch(0.629 0.193 263.4)
function hexToOklch(hex) {
  const h = hex.trim().replace(/^#/, '');
  const srgb = [0, 2, 4].map(i => parseInt(h.slice(i, i + 2), 16) / 255);
  // sRGB → linear-sRGB (CSS Color 4 §11.2 piecewise gamma)
  const lin = srgb.map(v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4));
  const [lr, lg, lb] = lin;
  // linear-sRGB → XYZ D65 (CSS Color 4 §15.1 matrix)
  const x = 0.4124564 * lr + 0.3575761 * lg + 0.1804375 * lb;
  const y = 0.2126729 * lr + 0.7151522 * lg + 0.0721750 * lb;
  const z = 0.0193339 * lr + 0.1191920 * lg + 0.9503041 * lb;
  // XYZ D65 → LMS (Ottosson 2020), cube-root, → OKLAB
  const l_ = Math.cbrt(0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z);
  const m_ = Math.cbrt(0.0329845436 * x + 0.9293118715 * y + 0.0361456387 * z);
  const s_ = Math.cbrt(0.0482003018 * x + 0.2643662691 * y + 0.6338517070 * z);
  const L = 0.2104542553 * l_ + 0.7936177850 * m_ - 0.0040720468 * s_;
  const a = 1.9779984951 * l_ - 2.4285922050 * m_ + 0.4505937099 * s_;
  const b = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.8086757660 * s_;
  // OKLAB → OKLCH (Cartesian to polar)
  const C = Math.sqrt(a * a + b * b);
  const H = (Math.atan2(b, a) * 180 / Math.PI + 360) % 360;
  return `oklch(${L.toFixed(3)} ${C.toFixed(3)} ${H.toFixed(1)})`;
}
console.log(hexToOklch('#3b82f6')); // → oklch(0.629 0.193 263.4)

Principais Recursos

Saída Perceptualmente Uniforme em Todos os Matizes

O canal L do OKLCH está ancorado no modelo perceptual OKLAB (Ottosson 2020), então cada passo de L parece a mesma mudança de brilho em todos os matizes — um verde em `oklch(0.7 0.2 130)` e um azul em `oklch(0.7 0.2 250)` se leem como igualmente brilhantes na tela. Essa é a propriedade estrutural que deixa o Tailwind v4 gerar rampas visualmente uniformes automaticamente sem ajuste manual por cor, a mesma propriedade que a rampa HSL equivalente não consegue garantir porque o HSL herda os defeitos de gama do sRGB.

Pronto para Tailwind v4 — Jogue em Blocos @theme

A saída OKLCH usa a forma separada por espaços do CSS Color 4 (`oklch(0.629 0.193 263.4)`) — a sintaxe exata que o Tailwind v4 espera dentro de um bloco `@theme` como `--color-primary: oklch(0.629 0.193 263.4);`. A precisão do L bate com a precisão da paleta publicada do Tailwind (três decimais em L e C, um grau decimal em H), então um fluxo de colar-no-config produz tokens idênticos aos que o Tailwind embarca por padrão. Combine com o snippet Tailwind v4 da seção Copiar como código para a linha de token completa.

Badges de Gama Display P3 + Rec2020

Três badges ao vivo (sRGB, Display P3, Rec2020) sinalizam se a tripla OKLCH atual cabe no alcance reprodutível de cada espaço. Útil porque o OKLCH é ilimitado — muitas cores de alto chroma excedem o sRGB mas cabem em P3, o que a maioria dos aparelhos Apple desde 2017 consegue renderizar nativamente. Os badges ficam vermelhos para fora-da-gama para você decidir se mantém o valor de gama ampla para telas modernas ou faz snap para sRGB para compatibilidade universal. A verificação de faixa de canal roda a cada tecla.

Snap to sRGB para Compatibilidade Legada

O botão Snap to sRGB roda redução binária de chroma (algoritmo informativo do CSS Color 4 §13): mantenha L e H fixos, busque C para baixo até a conversão sRGB resultante ficar dentro da gama. A busca termina em ~30 iterações com precisão sub-pixel. Preservar L e H significa que a cor após o snap se lê como a mesma família de matiz no mesmo brilho — apenas perde saturação, o que é o compromisso visualmente menos perturbador. O hex resultante combina com o OKLCH original via `@supports not (color: oklch(0 0 0))` para fallback em camadas.

Conversão Instantânea por Tecla

Não há botão Converter. Digite um único caractere no campo HEX e o campo OKLCH atualiza no mesmo quadro de animação. A representação canônica interna é a própria tripla OKLCH, então editar OKLCH diretamente é igualmente rápido — o cursor fica onde você colocou, apenas os outros campos de formato re-renderizam. A matemática de conversão (sRGB → linear → XYZ → LMS → OKLAB → polar) roda em microssegundos; sem debounce, sem latência, sem reflow visível.

Exemplo Pronto via Pipeline W3C + Ottosson 2020

A seção de exemplo de código embarca uma implementação JavaScript funcional do pipeline HEX → OKLCH completo usando as matrizes exatas e a função de gama publicadas no W3C CSS Color 4 (§11.2 gama por trechos, §15.1 matriz sRGB linear → XYZ D65) e a implementação de referência OKLAB 2020 de Björn Ottosson. Cole em um REPL do Node e confira que `#3b82f6` retorna `oklch(0.629 0.193 263.4)`. Cada valor de matriz é copiado e colado de sua fonte primária — sem re-derivações ou arredondamentos.

Bidirecional com HSL / RGB / HEX no Hub Unificado

Embora este spoke mire em HEX → OKLCH especificamente, a mesma página também expõe os outros oito campos de formato — RGB para hardware, HSL para CSS legado, OKLAB para matemática de paleta, HSV/HWB para UIs de seletor, CMYK para impressão e a cor nomeada CSS mais próxima. A fonte-de-verdade OKLCH interna significa que cada campo é bit-estável em round-trips: HEX → OKLCH → HSL → HEX recupera o hex original. Clique em qualquer campo para editar diretamente e veja os outros atualizarem.

Resumo de Suporte em Navegadores Inline

A ferramenta mostra os dados canônicos de suporte em navegadores onde for relevante: Chrome e Edge 111 (março de 2023), Safari 15.4 (março de 2022 — o primeiro), Firefox 113 (maio de 2023), cobertura combinada do caniuse acima de 94%. Para clientes mais antigos, embrulhe tokens em `@supports (color: oklch(0 0 0))` e forneça um fallback hex no branch alternativo. A saída do Snap to sRGB é exatamente esse fallback, gerado automaticamente a partir da tripla OKLCH atual — sem ajuste manual de chroma necessário.

100% no Navegador — Sem Upload, Sem Rastreamento

Todo parsing de hex, conversão OKLCH, detecção de gama, pontuação de contraste e geração de paleta roda localmente no seu navegador. Seus códigos hex nunca são transmitidos, nunca registrados em servidor, nunca analisados. Zero requisições de rede enquanto você digita — confira no DevTools. Seguro para paletas de marca não anunciadas, design tokens internos para produtos não lançados, mockups em rascunho sob NDA e qualquer outro trabalho de cor confidencial onde o valor não pode vazar.

Alternativas ao Conversor de HEX para OKLCH

OKLCH.com

ferramenta de navegador

Ferramenta lindamente construída focada em OKLCH por Andrey Sitnik (autor do polyfill postcss-oklab-function e do Autoprefixer). Best-in-class para exploração OKLCH pura com seletor consciente de gama ampla, visualização consciente de P3 e geração de paleta. Não cobre conversão HEX/RGB/HSL/CMYK como saídas primárias — focada apenas em OKLCH. Vá para o OKLCH.com quando estiver fazendo trabalho profundo de design OKLCH; vá para esta ferramenta quando também precisar de conversão entre espaços e dos recursos de gama/contraste/CVD.

Paleta da Documentação do Tailwind v4

referência de documentação

A documentação do Tailwind v4 publica a paleta padrão completa em OKLCH ao lado dos equivalentes hex. Melhor para consultar uma matiz Tailwind exata (`blue-500` → `oklch(0.629 0.193 263.4)`) ou casar cores customizadas com o peso visual de uma matiz Tailwind. Não é interativa — sem conversão de códigos hex arbitrários. Esta ferramenta cobre a mesma precisão OKLCH e funciona para qualquer hex, não apenas os 200+ padrões do Tailwind.

Playground do ColorJS.io

ferramenta de navegador

O ColorJS.io é a biblioteca CSS de cor de autoridade de Lea Verou e Chris Lilley; o playground expõe o grafo completo de conversão (HEX, RGB, HSL, HWB, LCH, OKLCH, OKLAB, P3, Rec2020, ProPhoto, A98). Matemática profundamente correta, ideal para trabalho de cor a nível de especificação. UI é focada em dev (não focada em designer) e não tem os recursos de contraste / CVD / paleta. Combine com esta ferramenta: use o ColorJS.io para a matemática que você não consegue conferir de outra forma, use esta ferramenta para fluxos ativos.

Gerador de Temas shadcn/ui

ferramenta de navegador

O gerador de temas shadcn da Vercel produz temas de variáveis CSS OKLCH prontos para colar em projetos shadcn/ui. Melhor para geração de tema ponta-a-ponta quando o entregável é um arquivo de config shadcn. Não mostra valores OKLCH intermediários para códigos hex arbitrários — focado no fluxo de tema completo. Use o gerador shadcn quando estiver construindo um tema shadcn; use esta ferramenta quando precisar do OKLCH de qualquer cor individual.

ColorHexa

ferramenta de navegador

Páginas SEO de longa data por cor com metadados profundos. Recentemente adicionou suporte a OKLCH ao lado de HEX/RGB/HSL/CMYK. UI datada (começo dos anos 2010), sem detecção de gama ampla, sem contraste APCA. Forte para descoberta SEO de um hex específico via Google; mais fraco para fluxos ativos de conversão onde a UX de campos unificados e os recursos de gama/contraste importam. Esta ferramenta vence em todo eixo de fluxo ativo.

Color Picker do DevTools do Navegador

recurso embutido do navegador

Chrome, Firefox e Safari DevTools todos vêm com um color picker que alterna entre HEX, RGB, HSL, HWB e OKLCH inline quando você clica em uma amostra de cor no painel CSS. Grátis, sem instalação, sempre disponível. Não tem os badges de gama, pontuação de contraste, simulação de daltonismo e exportação de código para plataformas não-web (SwiftUI, Compose). Vá para o DevTools quando já estiver depurando CSS; vá para esta ferramenta quando precisar de saída cross-platform ou das verificações mais profundas.

Culori CLI

biblioteca de linha de comando

O Culori é a biblioteca JavaScript de cor mais completa consciente de OKLCH; sua CLI faz conversão HEX → OKLCH como uma linha só (`culori convert '#3b82f6' --to oklch`). Excelente para scripts de CI e migração em lote de tokens. Sem seletor visual ou badges de gama. Use o Culori CLI para automação; use esta ferramenta para trabalho interativo de cor única e o feedback visual imediato.

Exemplos de HEX para OKLCH

Migre uma paleta HSL do Tailwind 3 → tokens OKLCH do v4

#3b82f6

Saída OKLCH: `oklch(0.629 0.193 263.4)`. O fluxo canônico de migração para o Tailwind v4: defina a cor de marca uma vez no seu bloco `@theme` como `--color-primary: oklch(0.629 0.193 263.4)`, depois componha matizes claras subindo o L (`oklch(0.7 0.193 263.4)`, `oklch(0.8 0.15 263.4)`) e matizes escuras descendo o L (`oklch(0.5 0.193 263.4)`, `oklch(0.4 0.18 263.4)`). O Matiz fica travado em 263.4°, o chroma se ancora perto de 0.19, a luminosidade é o único eixo varrendo — uma rampa unidimensional que se lê como visualmente uniforme pela escala inteira, o que a rampa HSL equivalente não consegue garantir.

Migração de design tokens com matizes escuras perceptualmente uniformes

#FF5733

Saída OKLCH: aproximadamente `oklch(0.66 0.18 28)`. Para construir uma rampa de 5 passos de matizes escuras a partir deste laranja de marca, mantenha C = 0.18 e H = 28 constantes e dê passos no L por 0.3, 0.45, 0.6, 0.75, 0.9 — produzindo de `oklch(0.3 0.18 28)` a `oklch(0.9 0.18 28)`. Cada par adjacente parece o mesmo salto visual de brilho, porque o L do OKLCH está ancorado no modelo perceptual OKLAB (Ottosson 2020) em vez do L geométrico embaralhado por gama do HSL. O chroma pode quietamente fazer clip em direção ao sRGB nos extremos; os badges de gama da ferramenta sinalizam exatamente quais passos precisam de atenção.

OKLCH de gama ampla → fallback sRGB para sites Tailwind v3

#FF1744

Saída OKLCH: aproximadamente `oklch(0.62 0.27 26)`. Um vermelho de alto chroma como este excede o cubo sRGB — o badge de gama **sRGB** acende vermelho, o badge **Display P3** confirma que cabe em P3, e o Rec2020 também cobre. Em um monitor padrão de 24 bits ele renderiza como uma aproximação dessaturada; em uma tela Display P3 (a maioria dos aparelhos Apple desde 2017) renderiza saturado. Clique em **Snap to sRGB** para rodar o algoritmo de redução binária de chroma (CSS Color 4 §13 informativo) — L e H ficam travados enquanto o C encolhe até a cor caber, produzindo um fallback hex adequado para uma base de código Tailwind v3 que ainda usa tokens hex de 8 bits.

Migração de tema shadcn/ui

#0f172a

Saída OKLCH: aproximadamente `oklch(0.21 0.04 264.7)`. O shadcn/ui migrou seu tema de variáveis CSS para OKLCH pouco depois do Tailwind v4 chegar, e `#0f172a` (slate-900 do Tailwind) é o fundo canônico do modo escuro. A ferramenta reproduz o valor OKLCH publicado do shadcn para o mesmo hex, então você pode confirmar que uma porta de tema da comunidade bate com a definição upstream. Combine com a linha de contraste para confirmar que o primeiro plano do modo escuro (branco ou quase branco) continua passando WCAG AA contra este fundo — `oklch(0.21 ...)` contra `oklch(1 0 0)` reporta uma razão confortável de 16:1.

Construa um par claro/escuro do Tailwind v4 a partir de um hex de marca

#3b82f6

Saída OKLCH: `oklch(0.629 0.193 263.4)`. Para derivar um par escuro/claro casado para um tema, pivote apenas o canal L mantendo C e H constantes: o primário do modo claro vira `oklch(0.7 0.15 263)` (um pouco mais brilhante, um pouco menos cromático para evitar cansaço visual em fundos brancos), o primário do modo escuro vira `oklch(0.5 0.18 263)` (um pouco mais escuro, um pouco mais cromático para manter saliência em fundos escuros). As duas variantes se leem como a mesma identidade de marca porque o matiz está travado; a mudança perceptual de L equilibra legibilidade em ambos os modos sem ajuste manual por canal RGB.

Conversões Comuns de HEX → OKLCH (Tailwind v4)

Tabela de referência de 10 matizes médias populares da paleta padrão do Tailwind v4 com seus equivalentes HEX e OKLCH. Os valores batem com a precisão da paleta publicada do Tailwind v4 (três decimais em L e C, inteiro ou um decimal em H).

Tailwind slate-500

#64748b oklch(0.55 0.04 257)

O slate-500 padrão do Tailwind CSS — o cinza neutro frio usado para corpo de texto, superfícies secundárias e elementos de UI com menos ênfase. Chroma baixo (0.04) o mantém visualmente neutro.

#64748b oklch(0.55 0.04 257)

slate é a rampa neutra canônica para temas amigáveis ao modo escuro — toda matiz slate fica em chroma muito baixo para se ler como cinza em vez de azulada.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Tailwind gray-500

#6b7280 oklch(0.55 0.03 258)

O gray-500 padrão do Tailwind CSS — a contraparte realmente neutra do slate. Chroma um pouco mais baixo que o slate (0.03 vs 0.04) para uma aparência mais acromática.

#6b7280 oklch(0.55 0.03 258)

gray e slate ficam em L quase idêntico (0.55) — o brilho perceptual está casado, apenas a pequena diferença de chroma os distingue.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Tailwind red-500

#ef4444 oklch(0.64 0.21 25)

O red-500 padrão do Tailwind CSS — o vermelho canônico de ação destrutiva / erro. Chroma alto (0.21) o mantém saliente contra fundos neutros.

#ef4444 oklch(0.64 0.21 25)

red-500 fica em L=0.64, casando com o L=0.63 do blue-500 — as rampas do v4 são perceptualmente balanceadas entre matizes, diferente da paleta baseada em HSL do v3.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Tailwind orange-500

#f97316 oklch(0.71 0.19 42)

O orange-500 padrão do Tailwind CSS — o matiz de destaque quente e de CTA. Fica entre o vermelho e o âmbar no círculo de matiz (42°).

#f97316 oklch(0.71 0.19 42)

o L mais alto do orange-500 (0.71) vs o L do red-500 (0.64) é intencional — amarelos e laranjas parecem brilhantes em L perceptual mais baixo do que vermelhos.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Tailwind amber-500

#f59e0b oklch(0.76 0.16 70)

O amber-500 padrão do Tailwind CSS — o matiz de aviso / cautela, entre o laranja e o amarelo na roda.

#f59e0b oklch(0.76 0.16 70)

amber-500 atinge o L mais alto (0.76) de qualquer cor Tailwind nível 500 — amarelos naturalmente precisam de L mais alto para aparecer visualmente como 'tom médio'.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Tailwind green-500

#22c55e oklch(0.72 0.19 149)

O green-500 padrão do Tailwind CSS — o matiz de sucesso / confirmação. Fica em 149° na roda de matiz, na região ciano-verde.

#22c55e oklch(0.72 0.19 149)

green-500 em L=0.72 é uma pitada mais brilhante que red-500 em L=0.64 — isso casa com a realidade perceptual (verdes parecem brilhantes) e dá à paleta peso visual balanceado.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Tailwind teal-500

#14b8a6 oklch(0.7 0.13 184)

O teal-500 padrão do Tailwind CSS — o matiz de destaque frio entre verde e ciano. Chroma mais baixo que o green-500 porque tons teal de alto chroma ultrapassam o sRGB facilmente.

#14b8a6 oklch(0.7 0.13 184)

o H=184° do teal-500 fica logo depois do ciano (180°) — ciano puro no OKLCH é difícil de expressar em sRGB sem clipping de chroma; teal é o compromisso prático.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Tailwind blue-500

#3b82f6 oklch(0.63 0.19 263)

O blue-500 padrão do Tailwind CSS — o 'azul web' canônico dos anos 2020, a cor âncora de marca para a paleta v4 e o tema padrão do shadcn/ui.

#3b82f6 oklch(0.63 0.19 263)

blue-500 é a cor de referência mais usada como ponto de partida de migração OKLCH para Tailwind v4 — cole #3b82f6 aqui para conferir a conversão contra o valor publicado.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Tailwind indigo-500

#6366f1 oklch(0.59 0.21 277)

O indigo-500 padrão do Tailwind CSS — a companheira fria de destaque do azul, ficando em 277° (em direção ao roxo). Chroma alto (0.21) dá saliência.

#6366f1 oklch(0.59 0.21 277)

indigo-500 fica em L mais baixo que blue-500 (0.59 vs 0.63) — o matiz mais profundo absorve mais brilho aparente, e a rampa do v4 leva isso em conta perceptualmente.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Tailwind violet-500

#8b5cf6 oklch(0.6 0.24 295)

O violet-500 padrão do Tailwind CSS — o matiz de destaque roxo em 295°. Chroma mais alto (0.24) de qualquer cor Tailwind nível 500, frequentemente usado para marca de produtos de IA / criativos.

#8b5cf6 oklch(0.6 0.24 295)

o C=0.24 alto do violet-500 o coloca perto do teto da gama sRGB — empurre muito mais alto e cruza para território de gama ampla apenas-P3.

Precisa do seletor de cor completo com RGB, HSL, CMYK, avisos de gama e exportação de código? Experimente o conversor de cores unificado — todos os formatos simultaneamente editáveis.

Como Usar o Conversor de HEX para OKLCH

  1. 1

    Cole um código hex no campo HEX

    Jogue qualquer valor hex na entrada HEX — com ou sem o `#` na frente, na forma abreviada de 3 dígitos (`#F73`), forma cheia de 6 dígitos (`#3b82f6`), forma abreviada alfa de 4 dígitos (`#F738`) ou forma cheia alfa de 8 dígitos (`#FF573380`). O parser normaliza todas as cinco formas de entrada para a mesma cor interna antes de derivar o OKLCH. A capitalização não importa (`#3b82f6` e `#3B82F6` interpretam de forma idêntica). Caracteres inválidos ou contagem errada de dígitos produzem um erro discreto inline; hex válido atualiza todo outro campo de formato em tempo real, incluindo OKLCH.

  2. 2

    Leia a tripla OKLCH do campo OKLCH

    O campo OKLCH mostra o valor na forma moderna do CSS Color 4: `oklch(0.629 0.193 263.4)` para uma cor opaca, `oklch(0.629 0.193 263.4 / 0.5)` para uma com alfa. L é arredondado para três decimais (bate com a precisão publicada do Tailwind v4), C para três decimais, H para um grau decimal. A fonte-de-verdade OKLCH interna da ferramenta significa que a precisão de float subjacente é preservada por todos os outros campos — round-trips de volta para hex permanecem bit-estáveis, diferente de conversores legados que pivotam por HSL e derivam um grau ou dois por round-trip.

  3. 3

    Clique em Copiar para pegar a string OKLCH

    Cada card de formato tem um botão Copiar à direita. Um clique e o valor cai na sua área de transferência — o rótulo do botão brevemente pisca "Copiado!" para você saber. A string copiada é a sintaxe canônica do CSS Color 4 (`oklch(0.629 0.193 263.4)`), pronta para jogar em um bloco `@theme` do Tailwind v4 ou em uma definição de variável CSS do shadcn/ui. Para saída específica de plataforma (propriedade customizada CSS, token Tailwind v4, SwiftUI, Compose, Flutter), use a seção Copiar como código abaixo do seletor — esses snippets emitem o formato que cada plataforma espera nativamente.

  4. 4

    Confira os badges de gama Display P3 / Rec2020

    Três badges de gama (sRGB, Display P3, Rec2020) mostram se a cor atual cabe no alcance reprodutível de cada espaço. Se o badge sRGB ficar vermelho mas o P3 ficar verde, a cor é um OKLCH de gama ampla que vai renderizar saturado em hardware Apple (iPhone, iPad, MacBook a partir de 2017) mas dessaturar em um monitor legado de 24 bits. O botão **Snap to sRGB** usa redução binária de chroma (algoritmo informativo do CSS Color 4 §13) para encolher a cor para dentro do sRGB preservando L e H, produzindo um fallback hex que você pode embarcar via `@supports not (color: oklch(0 0 0))`.

  5. 5

    Também visíveis: RGB, HSL, OKLAB, HSV, HWB, CMYK, cor nomeada

    O mesmo hex que você cola também acende os outros oito campos de formato — RGB para chamadas de canvas e hardware, HSL para variáveis CSS legadas, OKLAB para matemática de paleta e matrizes de daltonismo, HSV e HWB para fluxos de seletor de cor de designer, CMYK para estimativas de impressão e a cor nomeada CSS mais próxima para prosa de documentação. Você nunca fica trancado em hex → OKLCH apenas. O seletor (quadrado SL + controle de matiz + controle de alfa) dirige todos os nove simultaneamente, e em navegadores baseados em Chromium o botão EyeDropper amostra qualquer pixel na tela, incluindo fora do navegador.

Erros Comuns de HEX / OKLCH

Ler o Chroma do OKLCH como Saturação do HSL

O Chroma do OKLCH é sem limite (0 até ~0.4 para cores que cabem em sRGB, mais alto para gama ampla) — NÃO é uma porcentagem de saturação 0-100% como o S do HSL. Assumir que C=0.3 significa "30% saturado" interpreta a escala errado: 0.3 é altamente cromático, perto do teto sRGB para alguns matizes e bem além para outros. O C máximo varia por L e H — um verde em L=0.7 suporta C muito mais alto que um azul em L=0.3. Trate o C como uma distância absoluta do cinza, não uma porcentagem relativa.

✗ Incorreto
Set OKLCH C = 0.3 expecting "30% saturation":
oklch(0.7 0.3 250) → may exceed sRGB gamut for blues
Wide-gamut color renders desaturated on legacy displays.
✓ Correto
Treat C as absolute chroma, check gamut badges:
oklch(0.7 0.15 250) → comfortably in sRGB for this L+H pair
Use the badges to find the max C that fits the target gamut.

Tratar o L do OKLCH Igual ao L do HSL

Os dois espaços reportam Luminosidade em um eixo 0-1 (ou 0-100%), mas medem coisas diferentes. O L do HSL é geométrico — derivado da média máximo/mínimo do RGB em sRGB gama-codificado. O L do OKLCH é perceptual — ancorado no modelo OKLAB. Portar uma paleta baseada em HSL como `oklch(L%, C, H)` esperando brilho casado produz resultados irregulares porque a relação de L entre os dois espaços é não-linear. Para cores de tom médio, OKLCH L = 0.6 é aproximadamente HSL L = 50%, mas a curva deriva nos extremos escuro e claro.

✗ Incorreto
Copy HSL L percentages into OKLCH directly:
hsl(220 50% 30%) ported as oklch(0.30 0.10 220)
The two colors look noticeably different in brightness.
✓ Correto
Re-derive OKLCH from the original hex, don't port HSL:
hex source → OKLCH conversion → oklch(0.34 0.08 254)
The perceptual L stays correct; the palette feels even.

Esquecer que OKLCH de Gama Ampla Não Vai Exibir em sRGB

OKLCH é sem limite — você pode escrever `oklch(0.7 0.4 30)` e a sintaxe é válida, mas o chroma excede o que o espaço de byte 256-por-canal do sRGB consegue codificar. Em um monitor sRGB aquela cor faz clip para a aproximação mais próxima dentro da gama (geralmente uma versão dessaturada). Em um monitor Display P3 renderiza corretamente. Embarcar OKLCH de gama ampla sem conferir os badges de gama produz uma cor que parece diferente em telas diferentes — um bug sutil mas real de consistência cross-platform.

✗ Incorreto
Ship oklch(0.7 0.4 30) without checking sRGB gamut:
P3 displays render saturated red; sRGB displays render desaturated
Brand color looks inconsistent across user hardware.
✓ Correto
Check sRGB gamut badge, Snap to sRGB if needed, layer with @supports:
@supports (color: oklch(0 0 0)) { --primary: oklch(0.7 0.4 30); }
@supports not (color: oklch(0 0 0)) { --primary: #ef6b50; }
P3 hardware gets the wide-gamut value; sRGB hardware gets the snapped fallback.

Suporte em Navegadores Faltando para oklch()

O parsing nativo de `oklch()` pousou no Chrome e Edge 111 (março de 2023), Safari 15.4 (março de 2022) e Firefox 113 (maio de 2023). A cobertura combinada do caniuse é 94%+, mas os 6% restantes incluem IE 11, Safari antigo em iOS 15.3 ou anterior, Chrome Android antigo e webviews embarcadas. Embarcar `oklch()` sem um fallback para essa cauda longa renderiza como o valor `inherit` do CSS ou falha completamente. Sempre detecte o recurso com `@supports` para sites de produção com audiências amplas.

✗ Incorreto
Define brand color in OKLCH only:
:root { --primary: oklch(0.629 0.193 263.4); }
IE 11 and old iOS Safari render no color at all.
✓ Correto
Layer with @supports for graceful fallback:
:root { --primary: #3b82f6; }
@supports (color: oklch(0 0 0)) { :root { --primary: oklch(0.629 0.193 263.4); } }
Modern browsers get OKLCH; legacy browsers get the hex fallback.

Confundir OKLCH e LCH (Forma Polar do CIE-LAB)

O CSS Color 4 embarca tanto `oklch()` quanto `lch()`. Os dois parecem idênticos em formato (L / C / H) mas usam espaços subjacentes diferentes: `lch()` é a forma polar do CIE-LAB (1976), `oklch()` é a forma polar do OKLAB (Ottosson 2020). Os dois NÃO são intercambiáveis — `lch(60% 50 240)` e `oklch(0.6 0.15 240)` descrevem cores diferentes. A uniformidade perceptual do CIE-LAB falha em torno de azuis saturados, motivo pelo qual o Ottosson re-derivou o OKLAB. Para trabalho novo de design system, prefira `oklch()` a `lch()`.

✗ Incorreto
Substitute lch() for oklch() expecting same result:
lch(60% 50 240) ≠ oklch(0.6 0.15 240) — different colors entirely
Copy-pasted across spaces, the value is silently wrong.
✓ Correto
Pick one space and stay in it:
oklch(0.629 0.193 263.4) for modern design systems
or lch(60% 50 240) — but don't swap function names without re-converting

Quem Usa HEX para OKLCH

Devs Front-end Migrando para Tokens OKLCH do Tailwind v4
O Tailwind v4 padronizou OKLCH para sua paleta padrão em janeiro de 2025. Migrar uma base de código v3 com cores de marca em hex significa converter cada hex para OKLCH e jogar o resultado no novo bloco `@theme`. Cole cada hex aqui, copie o valor `oklch()`, defina `--color-primary: oklch(0.629 0.193 263.4)` e companhia. Os badges de gama ao vivo sinalizam quaisquer cores que excedam o sRGB para você decidir se mantém o valor de gama ampla para usuários Display P3 ou faz snap para sRGB.
Autores de Temas shadcn/ui Construindo Paletas Customizadas
O tema de variáveis CSS do shadcn/ui usa OKLCH para todo token (`--background`, `--foreground`, `--primary`, etc.). Temas customizados derivam de um hex de marca base convertendo para OKLCH e depois varrendo o L para as variantes claro/escuro. Cole o hex de marca, leia a tripla OKLCH, construa o resto do tema dando passos no L mantendo C e H fixos. Bate exatamente com o fluxo canônico do shadcn.
Autores de Design Systems Gerando Rampas Perceptualmente Uniformes
Gere uma rampa 50/100/200/.../900 dando passos iguais no canal L do OKLCH mantendo C e H fixos. O intervalo visual entre paradas adjacentes parece idêntico em todos os matizes — o que uma paleta de cor de marca realmente precisa. O Tailwind v4 usa exatamente essa construção para sua paleta padrão, e o shadcn/ui espelha. Cole cada hex de marca, leia o OKLCH, gere a rampa algoritmicamente ou pelo painel Tints/Shades/Tones abaixo do seletor.
Engenheiros de Acessibilidade Verificando Contraste no Espaço OKLCH
Contraste WCAG 2.1 e APCA ambos reportam contra a cor sRGB resolvida, não contra a tripla OKLCH — mas saber o L OKLCH de uma cor de marca torna o ajuste de contraste previsível: suba o L em 0.1 para passar AA contra branco, baixe o L em 0.1 para passar AA contra preto. A visão simultânea OKLCH + WCAG + APCA torna a relação visível. Cole o hex de marca, confira os badges de contraste, ajuste o L em OKLCH (mais previsível que HSL) até o par passar nas duas métricas.
Web Devs Construindo Tokens de Cor de Gama Ampla para Telas Modernas
A maioria dos aparelhos Apple desde 2017 (e muitos aparelhos Android modernos) renderiza Display P3 nativamente. Definir cores de destaque de marca em OKLCH te deixa endereçar vermelhos e verdes saturados apenas-P3 que nenhum código hex consegue codificar. Cole um hex existente para ler seu OKLCH, depois empurre o canal C acima do teto sRGB para reivindicar a saturação extra do P3. Os badges de gama confirmam que o novo valor cabe em P3 (e faz fallback graciosamente em telas apenas-sRGB via compressão de chroma aplicada pelo navegador).
Educadores Ensinando Luminosidade Perceptual vs Geométrica
A visão simultânea OKLCH + HSL torna óbvia a diferença entre luminosidade perceptual e geométrica. Cole um verde saturado e um azul saturado no mesmo HSL L=50%; os valores OKLCH L diferem notavelmente porque o OKLCH mede brilho percebido de verdade. Arraste o slider de matiz do HSL e veja o L OKLCH oscilar enquanto você mantém o L HSL constante — a curva é o defeito de gama visualizado. Uma demonstração pronta para sala de aula de por que design systems migraram para OKLCH.
Mantenedores Open-Source Modernizando Documentação de Tokens
Docs de design system mais antigos tipicamente listam cores de marca apenas como códigos hex. Modernizar para OKLCH significa mostrar a mesma cor nos dois espaços — o hex para compatibilidade com bloco de código, o OKLCH para a tabela de spec e a definição de token moderna. Cole cada hex, copie a saída OKLCH, atualize os docs. O hash de URL compartilhável também deixa contribuidores linkarem para a cor exata em discussão em uma issue do GitHub sem ambiguidade.

Matemática e Pipeline de HEX para OKLCH

HEX → OKLCH é um Pipeline de 7 Passos
A conversão roteia por cinco representações intermediárias: hex → sRGB inteiro → sRGB normalizado (0-1) → sRGB linear (gama-decodificado) → CIE XYZ D65 → OKLAB → OKLCH. Cada passo é uma matriz ou função por trechos bem definida de uma fonte primária. A ferramenta roda o pipeline completo a cada tecla; a matemática é rápida o suficiente (microssegundos) que nenhum debounce é necessário. Mostrar a tupla RGB intermediária ao lado do OKLCH significa que você pode depurar um valor OKLCH inesperado inspecionando os canais RGB.
Função de Gama do CSS Color 4 §11.2
A conversão sRGB → sRGB linear usa a função por trechos do CSS Color 4 §11.2: `v ≤ 0.04045 ? v/12.92 : ((v + 0.055) / 1.055)^2.4`. A forma por trechos (com um pequeno segmento linear perto de zero) evita a instabilidade numérica da forma de expoente puro em cores muito escuras. Essa é a mesma função que perfis ICC usam para codificar sRGB e a mesma função que navegadores usam internamente ao renderizar códigos hex. O inverso para OKLCH → hex aplica a mesma função ao contrário: `v ≤ 0.0031308 ? v * 12.92 : 1.055 * v^(1/2.4) - 0.055`.
Matriz do CSS Color 4 §15.1: sRGB linear ↔ XYZ D65
A matriz do CSS Color 4 §15.1 converte sRGB linear para CIE XYZ sob o ponto branco D65: `X = 0.4124564 R + 0.3575761 G + 0.1804375 B`, `Y = 0.2126729 R + 0.7151522 G + 0.0721750 B`, `Z = 0.0193339 R + 0.1191920 G + 0.9503041 B`. A linha Y dá a fórmula de luminância sRGB. A matriz é a mesma usada em toda biblioteca de gerenciamento de cor, incluindo ICC, Adobe Color Engine e o pipeline open-source LCMS. A matriz inversa para OKLCH → hex aplica a inversa do §15.1.
Matrizes OKLAB do Ottosson 2020 e Passo de Raiz Cúbica
A conversão XYZ D65 → OKLAB usa duas matrizes e um passo de raiz cúbica publicados no paper OKLAB de 2020 de Björn Ottosson. A primeira matriz transforma XYZ em um espaço LMS de resposta cone (modelado vagamente nas sensibilidades dos cones L/M/S humanos). Tire a raiz cúbica de cada canal para comprimir a faixa dinâmica de forma não-linear (o passo corretor de uniformidade perceptual). A segunda matriz transforma o LMS de raiz cúbica em coordenadas L/a/b do OKLAB. As três operações usam os valores exatos publicados na implementação de referência do paper; sem re-derivações ou arredondamentos. O inverso para OKLCH → hex aplica essas matrizes ao contrário.
OKLAB ↔ OKLCH é Cartesiano-para-Polar
Os eixos `a` e `b` do OKLAB formam um plano de chroma perpendicular ao eixo L. O OKLCH codifica em polar esse plano: `C = sqrt(a² + b²)` (distância euclidiana do cinza), `H = atan2(b, a) * 180 / π` (ângulo em graus, embrulhado em 0-360°). O inverso: `a = C * cos(H * π / 180)`, `b = C * sin(H * π / 180)`. A forma polar é preferida ao OKLAB para armazenamento de design tokens porque o Matiz é um eixo estável — rotacionar o Matiz não cruza acidentalmente pelo cinza do jeito que rotacionar `a` ou `b` pode no OKLAB.
Detecção de Gama via Verificação de Faixa de Canal
Uma cor é considerada dentro da gama para um espaço alvo (sRGB, Display P3, Rec2020) se cada canal cair dentro de `[-ε, 1 + ε]` após conversão para os primários daquele espaço, onde `ε = 1e-7` para absorver ruído de precisão de float em torno de fronteiras. O badge de gama de cada espaço fica vermelho quando qualquer canal excede a faixa. OKLCH é sem-limite-de-gama — `oklch(0.7 0.4 30)` é uma coordenada válida mas pode exceder o espaço de byte 256-por-canal do sRGB. A verificação roda a cada tecla; combinada com Snap to sRGB, isso pega a armadilha de adoção mais comum (OKLCH de gama ampla não exibindo corretamente em telas legadas).
Snap-to-sRGB com Redução Binária de Chroma
O Snap to sRGB casa com o algoritmo informativo de mapeamento de gama no CSS Color 4 §13: mantenha L e H fixos nos valores atuais, busca-binária em C ∈ [0, C atual] pelo maior C cuja conversão sRGB fica dentro da gama. A busca roda no máximo 30 iterações (precisão ~10⁻⁹), o que é mais que suficiente para precisão visual. Preservar L e H significa que a cor após o snap se lê como a mesma família de matiz no mesmo brilho — apenas perde saturação. Não fazemos clip dos canais RGB diretamente porque isso distorce o matiz notavelmente (especialmente em azuis, que fazem clip em direção ao roxo).

Boas Práticas para Fluxos HEX / OKLCH

Use OKLCH como Formato Canônico de Token em Código Novo
Para qualquer design system embarcando em 2025 ou depois, defina cores de marca e rampas de paleta em OKLCH. O eixo L entrega rampas perceptualmente uniformes automaticamente; o eixo Chroma consegue endereçar cores de gama ampla que o hex não consegue codificar. Mantenha um fallback hex para navegadores mais antigos via `@supports not (color: oklch(0 0 0))` ou PostCSS em tempo de build, mas faça do OKLCH a fonte-de-verdade no seu armazenamento de tokens. Tailwind v4 e shadcn/ui ambos embarcam assim; projetos novos podem seguir essa liderança sem fricção.
Gere Rampas Dando Passos no L, Mantendo C e H Constantes
A construção canônica de rampa OKLCH: trave C e H, varra L em incrementos iguais. Uma rampa de 9 passos `oklch(L 0.15 263)` para L = 0.1, 0.2, …, 0.9 produz espaçamento visualmente uniforme em cada passo. É exatamente o que o Tailwind v4 faz internamente. Não varra C junto com L a menos que queira que a intensidade cromática da rampa varie deliberadamente (raro). Não derive H entre passos — mesmo uma deriva de 5° faz a rampa parecer embaralhada.
Bata a Precisão do Tailwind v4: 3 Decimais em L+C, 1 Decimal em H
A paleta padrão do Tailwind v4 publica valores OKLCH com três casas decimais em L e C, e uma casa decimal em H — `oklch(0.629 0.193 263.4)` para o blue-500. Bater essa precisão nos seus próprios tokens significa que fluxos de colar-no-config produzem valores idênticos aos que o Tailwind embarca, e ferramentas de diff não vão sinalizar diferenças espúrias. O arredondamento padrão da ferramenta segue essa convenção; copiar e colar em um bloco `@theme` é bit-exato.
Rode OKLCH de Gama Ampla pela Verificação de Gama Display P3
Se você está mirando hardware Apple moderno (iPhone, iPad, MacBook a partir de 2017) ou embarcando conteúdo HDR-aware, os badges de gama te deixam empurrar C acima do teto sRGB para reivindicar a saturação extra do P3. A compressão de chroma aplicada pelo navegador impede a cor de fazer clip em telas apenas-sRGB. Não faça pre-snap para sRGB por padrão a menos que saiba que sua audiência inteira está em telas legadas — isso perde 30%+ da saturação que o hardware P3 consegue renderizar.
Forneça um Fallback Hex via @supports para Navegadores Pré-2023
Embora o suporte evergreen em navegadores para `oklch()` agora seja 94%+, a cauda longa (IE 11, Chrome Android antigo, webviews embarcadas) ainda precisa de um fallback. Embrulhe tokens em `@supports (color: oklch(0 0 0))` e forneça uma variante hex no branch alternativo. A saída do Snap to sRGB é exatamente esse fallback — gerado automaticamente a partir da tripla OKLCH atual com L e H preservados. Plugins PostCSS de tempo de build como `postcss-oklab-function` também conseguem inserir inline a aproximação sRGB em tempo de compilação.
Documente Tanto o OKLCH quanto o Hex de Origem nos Seus Tokens
Quando você embarca uma variável CSS como `--color-primary: oklch(0.629 0.193 263.4)`, inclua um comentário com o hex de origem: `/* source: #3b82f6 (Tailwind blue-500) */`. Seis meses depois, quando alguém precisar derivar uma matiz escura relacionada ou conferir o valor contra um PDF de guia de marca, o hex de origem preserva a trilha completa de proveniência. O OKLCH sozinho é significativo mas mais difícil de reconhecer de cara; o hex de origem é o identificador que a maioria dos colegas vai procurar primeiro.
Use o Hash de URL para Compartilhar Decisões de Cor ao Vivo
Toda mudança de cor atualiza o hash da URL como `#hex=3b82f6` ou `#oklch=...` automaticamente. Copie a URL em uma thread do Slack ou uma issue do GitHub e qualquer um que abrir cai na mesma cor com a mesma tripla OKLCH. Isso é mais confiável do que colar uma string OKLCH no chat — destinatários às vezes erram decimais ou embrulham na precisão errada — e deixa uma thread de design review referenciar uma cor exata em vez de "o azul de marca que discutimos terça". O hash nunca é transmitido ao servidor.

Perguntas Frequentes

O que é a cor OKLCH?
OKLCH é a forma polar do OKLAB, um espaço de cor perceptualmente uniforme publicado por Björn Ottosson em 2020. Os canais são Luminosidade perceptual (0-1, também escrita como 0-100%), Chroma (0 até cerca de 0.4 dependendo do matiz e do L, sem limite superior) e Matiz (0-360°, conceitualmente idêntico ao matiz do HSL). É derivado do CIE-LAB roteando por um estágio LMS de resposta cone com um passo de raiz cúbica. O CSS Color 4 adicionou a sintaxe `oklch()` em 2022. O Tailwind v4 padronizou OKLCH para sua paleta padrão em 2025. Exemplo: `oklch(0.629 0.193 263.4)` é o blue-500 do Tailwind.
OKLCH é melhor que HSL?
Para design systems, sim. O L do HSL (luminosidade) é geométrico — derivado tirando a média do máximo e mínimo do RGB — e herda a curva de gama do sRGB, então `hsl(60 100% 50%)` (amarelo) parece visivelmente mais brilhante que `hsl(240 100% 50%)` (azul) apesar de ambos reportarem L=50%. O L do OKLCH é perceptual, ancorado no modelo OKLAB de Ottosson 2020. A consequência prática: uma rampa OKLCH com L uniforme parece visualmente uniforme em todos os matizes; uma rampa HSL precisa de correções por matiz feitas à mão para parecer uniforme. É por isso que o Tailwind v4 migrou sua paleta padrão de geração baseada em HSL para OKLCH.
Quais navegadores suportam oklch()?
Todos os navegadores evergreen desde meados de 2023: Chrome e Edge 111 (março de 2023), Safari 15.4 (março de 2022, o primeiro pouso), Firefox 113 (maio de 2023). A cobertura combinada do caniuse passa de 94%. Para a cauda longa — IE 11, Safari antigo, Chrome Android em hardware legado — embrulhe seus tokens em `@supports (color: oklch(0 0 0))` e forneça um hex ou `hsl()` de fallback no branch alternativo. Ferramentas de build como o PostCSS `postcss-oklab-function` também conseguem inserir inline uma aproximação sRGB ao lado do valor OKLCH em tempo de compilação.
Por que usar OKLCH no Tailwind v4?
O Tailwind v4 (lançado em janeiro de 2025) trocou sua paleta padrão de geração baseada em HSL para OKLCH especificamente porque o OKLCH entrega rampas perceptualmente uniformes automaticamente. Sob o sistema HSL do v3, `red-500` e `blue-500` tinham pesos perceptuais visivelmente diferentes apesar de L% HSL idênticos, o que forçava designers a ajustar paradas individuais à mão; sob o v4, ambos parecem balanceados porque os dois ficam no mesmo L OKLCH. OKLCH também destrava cores Display P3 de gama ampla que nenhum código hex consegue codificar — um token do Tailwind v4 como `oklch(0.65 0.25 30)` consegue endereçar vermelhos P3 que excedem o sRGB. O build ainda emite fallbacks hex para navegadores mais antigos.
OKLCH é perceptualmente uniforme?
Sim — essa é a intenção de design. O OKLCH herda uniformidade perceptual do OKLAB, o espaço de cor de 2020 de Björn Ottosson projetado especificamente para corrigir as não-uniformidades do CIE-LAB (o melhor espaço perceptualmente uniforme anterior). Um passo fixo no canal L corresponde a um passo fixo de brilho percebido. Um passo fixo em C corresponde a um passo fixo de chroma percebido. Aproximações do CIELAB falham em torno de cores muito saturadas; o OKLAB e sua forma polar OKLCH permanecem precisos pela gama inteira, por isso toda ferramenta moderna de design system (Tailwind v4, shadcn/ui, Radix Colors v3) padronizou nele.
Como se lê um valor OKLCH?
`oklch(L C H)` — três números, opcionalmente com `/ A` para alfa. L é a Luminosidade perceptual de 0 (preto) a 1 (branco); a forma numérica e a forma de porcentagem são equivalentes (`0.6` e `60%`). C é o Chroma de 0 (cinza) até cerca de 0.4 para as cores sRGB mais saturadas; não há limite superior rígido, cores de gama ampla podem ultrapassar. H é o Matiz em graus de 0 a 360, igual ao HSL (0/360 = vermelho, 120 = verde, 240 = azul). Exemplo: `oklch(0.629 0.193 263.4)` é o blue-500 do Tailwind — brilhante, altamente cromático, no arco azul.
Qual a diferença entre OKLCH e LCH?
Os dois são formas polares (Luminosidade / Chroma / Matiz) de um espaço de cor da família CIE-LAB. LCH é a forma polar do CIE-LAB, o espaço perceptualmente uniforme de 1976. OKLCH é a forma polar do OKLAB, a atualização de 2020 do Ottosson. A diferença: a uniformidade perceptual do CIE-LAB falha em torno de azuis e roxos muito saturados (uma fraqueza documentada do modelo), então uma rampa LCH por cores saturadas parece sutilmente irregular. O OKLAB resolve isso re-derivando as matrizes a partir de um estágio LMS de resposta cone corrigido. Os dois vêm no CSS Color 4 (sintaxes `lch()` e `oklch()`); para trabalho novo de design system em 2025, prefira OKLCH.
Como converto hex para OKLCH?
O pipeline é: parse o hex `#RRGGBB` para canais inteiros sRGB via `parseInt(hex, 16)`, normalize para 0-1, decodifique a gama para sRGB linear via a função por trechos do CSS Color 4 §11.2, multiplique pela matriz do §15.1 para obter CIE XYZ D65, multiplique pela matriz LMS do Ottosson e tire a raiz cúbica de cada canal, multiplique pela matriz OKLAB do Ottosson para obter L/a/b, depois cartesiano-para-polar: `C = sqrt(a² + b²); H = atan2(b, a) * 180 / π`. O pipeline completo roda em microssegundos. Esta ferramenta roda tudo ao vivo enquanto você digita — `#3b82f6` cai como `oklch(0.629 0.193 263.4)` na hora.

Ferramentas relacionadas

Ver todas as ferramentas →