O que são cores OKLCH?

Matheus Cardoso

oklch é um modelo de cor mais recente projetado para ser perceptualmente uniforme — ou seja, a forma como as cores parecem aos nossos olhos corresponde à matemática por trás delas. Diferente de modelos mais antigos como rgb ou hsl, o OKLCH produz resultados previsíveis ao ajustar luminosidade, croma ou matiz.


Modelos de cor

A maioria dos desenvolvedores conhece rgb e hsl. Esses modelos são baseados em como as telas emitem luz, não em como percebemos cor. Essa desconexão faz com que duas cores com o mesmo valor de "luminosidade" no HSL possam parecer muito diferentes aos nossos olhos.

O OKLCH resolve isso. Ele é construído sobre o espaço de cor OKLab — um modelo matematicamente rigoroso que mapeia diretamente a percepção humana de cor. O "OK" representa uma versão aprimorada do modelo Lab original.

rgb
hsl
hwb
oklch

Estrutura

Uma cor OKLCH é definida por três valores:

LLuminosidade0 – 1
CCroma0 – 0.4
HMatiz0 – 360
/* oklch(lightness chroma hue) */
color: oklch(0.7 0.15 280);

/* with alpha */
color: oklch(0.7 0.15 280 / 0.5);

Brilho consistente

A maior vantagem do OKLCH: cores com o mesmo valor L realmente parecem igualmente brilhantes. No HSL, um amarelo e um azul com a mesma luminosidade parecem completamente diferentes.

Abaixo, todo círculo tem L = 0.7 e C = 0.15, com a matiz rotacionando de 0° a 330°. Note como todos compartilham o mesmo brilho percebido:

0°
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°

Agora compare com HSL — mesmo valor de "luminosidade" de 50%, mas brilho percebido totalmente diferente:

0°
30°
60°
90°
120°
150°
180°
210°
240°
270°
300°
330°

Interativo

Ajuste os controles para explorar o espaço de cor OKLCH:

oklch(0.70 0.15 280)

Gradientes

Gradientes CSS podem interpolar em diferentes espaços de cor. Gradientes OKLCH evitam os tons acinzentados que afetam o sRGB. Compare:

sRGB
OKLAB
OKLCH

O gradiente sRGB passa por uma área cinza opaca. O OKLCH mantém transições vibrantes e perceptualmente suaves — da forma que nossos olhos esperam que a cor se misture.

/* Specify the color space in CSS gradients */
background: linear-gradient(in srgb, #ff00ff, #00ff00);
background: linear-gradient(in oklch, #ff00ff, #00ff00);

Suporte dos navegadores

O OKLCH é suportado em todos os navegadores modernos — Chrome 111+, Firefox 113+, Safari 15.4+. Para navegadores mais antigos, forneça um fallback em RGB ou HSL:

/* Fallback for older browsers */
color: #7b61ff;
color: oklch(0.6 0.24 290);

O navegador ignora a segunda declaração se não entender oklch, usando o valor hexadecimal como fallback.


Mais

O OKLCH já é usado nos design tokens deste site. Para um mergulho mais profundo e ferramentas interativas, veja oklch.com ou a MDN docs.