Skip to content

Convertitore HEX in OKLCH

Converte HEX in OKLCH per i design token di Tailwind v4. Output live percettivamente uniforme con avvisi di gamma Display P3. Gratis, solo browser.

Niente tracciamento Funziona nel browser Gratuito
Tutta la conversione dei colori avviene localmente nel browser. Nessun dato viene inviato a un server.
Gamma cromatica: sRGB Display P3 Rec2020
Contrasto vs:
AA AA-Lg AAA AAA-Lg · APCA Lc
Simulazione daltonismo (8 tipi)
Protanopia (cieco al rosso)
Deuteranopia (cieco al verde)
Tritanopia (cieco al blu)
Acromatopsia (totale)
Protanomalia (debole al rosso)
Deuteranomalia (debole al verde)
Tritanomalia (debole al blu)
Acromatomalia (parziale)
Tints / Shades / Tones / Harmonies

Tints

Shades

Tones

Harmonies

Copia come codice
Riferimento ai colori comuni
Rivisto per conformità a CSS Color 4 §11.2 + §15.1, correttezza della matrice OKLAB di Ottosson 2020, parità con la palette di Tailwind v4, accuratezza del rilevamento della gamma cromatica Display P3 / Rec2020 e stabilità del round-trip tra HEX e OKLCH lungo gli intervalli 0-1 di Lightness, 0-0,4 di Chroma e 0-360° di Hue. — Team di ingegneria Go Tools · May 27, 2026

Cos'è un convertitore HEX in OKLCH?

Un convertitore HEX in OKLCH è una piccola utility che trasforma un codice colore hex (`#3b82f6`) nella tripletta Lightness / Chroma / Hue percettivamente uniforme che codifica lo stesso colore nello spazio colore OKLCH (`oklch(0.629 0.193 263.4)`). I codici hex sono le terse stringhe base-16 che designer e sviluppatori incollano tra Figma, Sketch, Photoshop, PDF di brand guidelines e fogli di stile CSS — tre canali a 8 bit impacchettati in una forma `#RRGGBB` di 6 caratteri, ancorati allo spazio colore sRGB definito da IEC 61966-2-1 nel 1996. OKLCH è la forma polare di OKLAB, lo spazio colore percettivamente uniforme di Björn Ottosson del 2020, aggiunto a CSS tramite la sintassi `oklch()` in CSS Color 4 (W3C Candidate Recommendation dal 2022). I canali sono Lightness (0-1, scrivibile anche come 0-100%), Chroma (da 0 a circa 0,4 per i colori sRGB più saturi, non limitato superiormente per i colori wide-gamut) e Hue (0-360°, lo stesso asse angolare usato da HSL). Il supporto browser è arrivato su tutti gli evergreen tra marzo 2022 (Safari 15.4) e maggio 2023 (Firefox 113), con Chrome 111 nel mezzo (marzo 2023) — la copertura caniuse combinata supera il 94%. Esempio: il blue-500 di Tailwind è `oklch(0.629 0.193 263.4)`.

**Uniformità percettiva — perché conta.** In OKLCH (e nel suo cugino rettangolare OKLAB), una distanza numerica uguale sul canale L corrisponde a una distanza percepita uguale di luminosità — lungo ogni tonalità, ogni livello di chroma, ogni regione dello spazio colore. In HSL, valori uguali di L appaiono di luminosità irregolare su tonalità diverse perché HSL eredita le stranezze di gamma di sRGB: un verde a `hsl(120 100% 50%)` appare visibilmente più luminoso di un blu a `hsl(240 100% 50%)`, anche se entrambi riportano L=50%. La causa strutturale è che HSL deriva L geometricamente (media tra il massimo e il minimo dei canali in sRGB gamma-encoded), mentre OKLCH deriva L da un modello percettivamente ancorato che prima linearizza e poi instrada attraverso uno stadio di risposta dei coni LMS. La conseguenza pratica: mantenere L costante lungo le tonalità in OKLCH produce luminosità visivamente equivalente — un verde a `oklch(0.7 0.2 130)` e un blu a `oklch(0.7 0.2 250)` appaiono ugualmente luminosi sullo schermo. È per questo che Tailwind v4 ha migrato la sua palette di default a scale basate su OKLCH nel 2025 — ogni passo di tinta scura (50, 100, 200, …, 900, 950) raggiunge la stessa differenza di luminosità percepita, così i colori brand risultano coerenti lungo le tonalità senza regolazioni manuali per-colore.

**Tailwind v4 e la rivoluzione dei design token.** Tailwind v4 (uscito a gennaio 2025) ha sostituito la sua generazione di colori basata su HSL con un sistema basato su OKLCH. shadcn/ui ha seguito poco dopo, adottando OKLCH per il suo tema basato su variabili CSS; anche Radix Colors v3 l'ha adottato. Perché ora: i design system hanno bisogno di tinte scure che appaiano spaziate in modo uniforme su tutta la palette, e hanno bisogno che questa proprietà si mantenga automaticamente man mano che la palette cresce. Con HSL, i designer dovevano correggere manualmente ogni passo colore — alzare di un 5% in più la L sull'estremità scura della scala blu per farla corrispondere all'estremità scura della scala verde, poi ricorreggere quando il brand evolveva. Con OKLCH, una sola formula (faccia variare L di 0,1, tenga C e H costanti) produce scale coerenti in modo automatico. Esempio reale: in Tailwind v3, `red-500` e `blue-500` avevano pesi percepiti visibilmente diversi nonostante L% HSL identica; in v4, `red-500` e `blue-500` appaiono bilanciati perché stanno alla stessa L OKLCH. Questo conta per accessibilità (un contrasto coerente contro sfondi condivisi significa che gli stati dei componenti risultano uniformi lungo la palette), coerenza del brand (la gerarchia visiva si mantiene tra palette — un pulsante `primary` e uno `accent` alla stessa L appaiono allo stesso livello gerarchico) ed ergonomia per gli sviluppatori (un modello mentale invece di dozzine di eccezioni regolate manualmente e sepolte nello spec dei design token).

**Implicazioni wide-gamut.** OKLCH è non limitato — può rappresentare colori al di fuori di sRGB, inclusi tutti quelli che Display P3 e Rec2020 possono riprodurre. Lo rende la scelta naturale per i display wide-gamut moderni. La maggior parte dei dispositivi Apple dal 2017 (iPhone 7 in poi, MacBook Pro dal 2016 in poi, ogni iPad Pro) renderizza Display P3 nativamente, e così fanno molti dispositivi Android moderni e schermi di laptop. Il compromesso: non ogni tripletta OKLCH mappa a un colore sRGB valido. Lo strumento mostra tre badge di gamma cromatica — sRGB, Display P3, Rec2020 — così può vedere immediatamente se l'OKLCH corrente si visualizzerà correttamente su un dato target. Quando il colore è solo sRGB, il pulsante **Snap a sRGB** usa la riduzione binaria del chroma (per l'algoritmo informativo di gamut-mapping di CSS Color 4 §13) per ridurre il colore dentro la gamma cromatica preservando L e H — fornendole un fallback hex che può spedire tramite `@supports not (color: oklch(0 0 0))` accanto al valore OKLCH originale per i client wide-gamut più ampi.

**La matematica della conversione HEX → OKLCH.** La pipeline è ben definita e ancorata a due fonti primarie: W3C CSS Color 4 per gli stadi sRGB e XYZ, Ottosson 2020 per lo stadio OKLAB. Passo uno: analizzi `#RRGGBB` in tre canali sRGB interi a 8 bit tramite `parseInt(hex.slice(1, 3), 16)` per canale. Passo due: normalizzi ogni canale a 0-1 dividendo per 255. Passo tre: decodifichi la gamma in linear-sRGB tramite la funzione piecewise di CSS Color 4 §11.2 (`v <= 0.04045 ? v/12.92 : ((v+0.055)/1.055)^2.4`). Passo quattro: moltiplichi per la matrice 3×3 §15.1 per ottenere le coordinate CIE XYZ D65. Passo cinque: moltiplichi per la matrice LMS di Ottosson (dalla sua implementazione di riferimento del 2020) e prenda la radice cubica di ogni canale. Passo sei: moltiplichi per la matrice OKLAB di Ottosson per ottenere L / a / b. Passo sette: cartesiano-a-polare — `C = sqrt(a² + b²); H = atan2(b, a) * 180 / π`, faccia rientrare H in 0-360°. La pipeline completa gira in microsecondi — ogni pressione di tasto rirenderizza l'output OKLCH all'istante senza debounce.

Il flusso di lavoro HEX → OKLCH di questo strumento è una direzione di una famiglia a 5 spoke che condividono tutti lo stesso convertitore di colori unificato sottostante. Il dedicato convertitore di colori unificato è l'hub — mostra tutti i 9 formati simultaneamente modificabili ed è lo strumento giusto quando il flusso di lavoro necessita di più che solo hex e OKLCH. Gli spoke monodirezionali mirano a specifiche intenzioni di ricerca Google: il convertitore HEX-RGB per la direzione canvas-e-hardware, il convertitore RGB-hex per l'inverso, il convertitore HEX-HSL per lo spazio cilindrico legacy ancora usato in molte codebase Tailwind v3, e il convertitore HEX-CMYK per le approssimazioni di preparazione alla stampa. Tutti e cinque gli spoke e l'hub condividono internamente la stessa fonte di verità OKLCH e le stesse matrici Ottosson 2020, quindi i risultati sono garantiti identici lungo la famiglia. Ogni conversione gira localmente nel browser — i suoi codici hex non vengono mai caricati online, mai loggati, e zero richieste di rete partono mentre digita. Lo verifichi in DevTools. Per un approfondimento sul motivo per cui OKLCH è diventato lo standard dei design system nel 2024–2026, consulti la nostra guida complementare: Spazio colore OKLCH spiegato — perché Tailwind v4 l'ha adottato.

// 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)

Caratteristiche principali

Output percettivamente uniforme su tutte le tonalità

Il canale L di OKLCH è ancorato al modello percettivo OKLAB (Ottosson 2020), quindi ogni passo di L appare come lo stesso cambio di luminosità su tutte le tonalità — un verde a `oklch(0.7 0.2 130)` e un blu a `oklch(0.7 0.2 250)` leggono come ugualmente luminosi sullo schermo. È la proprietà strutturale che permette a Tailwind v4 di generare automaticamente scale visivamente uniformi senza regolazioni manuali per-colore, la stessa proprietà che la scala HSL equivalente non può garantire perché HSL eredita le stranezze di gamma di sRGB.

Pronto per Tailwind v4 — da inserire nei blocchi @theme

L'output OKLCH usa la forma separata da spazi di CSS Color 4 (`oklch(0.629 0.193 263.4)`) — la sintassi esatta che Tailwind v4 si aspetta dentro un blocco `@theme` come `--color-primary: oklch(0.629 0.193 263.4);`. La precisione di L corrisponde alla precisione pubblicata della palette di Tailwind (tre decimali su L e C, un decimale di grado su H), quindi un flusso paste-into-config produce token identici a quelli che Tailwind spedisce di default. Abbini lo snippet Tailwind v4 della sezione Copia come codice per la riga di token completa.

Badge di gamma cromatica Display P3 + Rec2020

Tre badge live (sRGB, Display P3, Rec2020) segnalano se la tripletta OKLCH corrente rientra nell'intervallo riproducibile di ciascuno spazio. Utile perché OKLCH è non limitato — molti colori a chroma elevato eccedono sRGB ma rientrano in P3, che la maggior parte dei dispositivi Apple dal 2017 può renderizzare nativamente. Le badge diventano rosse quando si è fuori gamma così può decidere se mantenere il valore wide-gamut per i display moderni o fare snap a sRGB per compatibilità universale. Il controllo dell'intervallo dei canali gira a ogni pressione di tasto.

Snap a sRGB per compatibilità legacy

Il pulsante Snap a sRGB esegue la riduzione binaria del chroma (algoritmo informativo di CSS Color 4 §13): tenga L e H fissi, cerchi C verso il basso finché la conversione sRGB risultante resta in gamma. La ricerca termina in ~30 iterazioni a precisione sub-pixel. Preservare L e H significa che il colore snappato si legge come la stessa famiglia di tonalità alla stessa luminosità — perde solo saturazione, che è il compromesso meno disturbante visivamente. L'hex snappato si abbina all'OKLCH originale tramite `@supports not (color: oklch(0 0 0))` per un fallback stratificato.

Conversione istantanea a ogni pressione di tasto

Non c'è un pulsante Converti. Digiti un solo carattere nel campo HEX e il campo OKLCH si aggiorna nello stesso animation frame. La rappresentazione canonica interna è la tripletta OKLCH stessa, quindi modificare direttamente OKLCH è ugualmente veloce — il cursore resta dov'è, solo gli altri campi di formato si rirenderizzano. La matematica di conversione (sRGB → linear → XYZ → LMS → OKLAB → polare) gira in microsecondi; nessun debounce, nessuna latenza, nessun reflow visibile.

Esempio funzionante tramite pipeline W3C + Ottosson 2020

La sezione code-example spedisce un'implementazione JavaScript funzionante della pipeline HEX → OKLCH completa usando le matrici esatte e la funzione di gamma pubblicate in W3C CSS Color 4 (§11.2 piecewise gamma, §15.1 matrice linear-sRGB → XYZ D65) e l'implementazione di riferimento OKLAB del 2020 di Björn Ottosson. La incolli in un Node REPL e verifichi che `#3b82f6` produce `oklch(0.629 0.193 263.4)`. Ogni valore di matrice è copia-incollato dalla sua fonte primaria — nessuna ri-derivazione né arrotondamento.

Bidirezionale con HSL / RGB / HEX nell'hub unificato

Anche se questo spoke mira specificamente a HEX → OKLCH, la stessa pagina espone anche gli altri otto campi di formato — RGB per l'hardware, HSL per il CSS legacy, OKLAB per la matematica di palette, HSV/HWB per le UI di picker, CMYK per la stampa, e il colore CSS named più vicino. La fonte di verità interna OKLCH significa che ogni campo è bit-stable sui round-trip: HEX → OKLCH → HSL → HEX recupera l'hex originale. Faccia clic in qualunque campo per modificarlo direttamente e osservi gli altri aggiornarsi.

Riassunto del supporto browser inline

Lo strumento espone dove pertinente i punti dati canonici sul supporto browser: Chrome ed Edge 111 (marzo 2023), Safari 15.4 (marzo 2022 — il primo), Firefox 113 (maggio 2023), copertura caniuse combinata oltre il 94%. Per client più vecchi, avvolga i token in `@supports (color: oklch(0 0 0))` e fornisca un fallback hex nel ramo alternativo. L'output di Snap a sRGB è esattamente quel fallback, generato automaticamente dalla tripletta OKLCH corrente — nessuna regolazione manuale del chroma necessaria.

100% nel browser — nessun upload, nessun tracciamento

Tutto il parsing hex, la conversione OKLCH, il rilevamento della gamma cromatica, il calcolo del contrasto e la generazione di palette girano localmente nel browser. I suoi codici hex non vengono mai trasmessi, mai loggati su alcun server, mai analizzati. Zero richieste di rete mentre digita — lo verifichi in DevTools. Sicuro per palette brand non ancora annunciate, design token interni per prodotti non ancora rilasciati, mockup in bozza sotto NDA e qualunque altro lavoro di colore riservato in cui il valore non può trapelare.

Alternative al convertitore HEX in OKLCH

OKLCH.com

strumento browser

Strumento OKLCH-focalizzato magnificamente costruito da Andrey Sitnik (autore del polyfill postcss-oklab-function e di Autoprefixer). Best-in-class per l'esplorazione OKLCH pura con un picker wide-gamut-aware, visualizzazione P3-aware e generazione di palette. Non copre la conversione HEX/RGB/HSL/CMYK come output primari — è focalizzato solo su OKLCH. Si rivolga a OKLCH.com quando sta facendo lavoro OKLCH approfondito; si rivolga a questo strumento quando le serve anche la conversione cross-space e le funzionalità di gamma cromatica/contrasto/CVD.

Documentazione della palette Tailwind v4

riferimento di documentazione

Le docs di Tailwind v4 pubblicano la palette di default completa in OKLCH accanto agli equivalenti hex. Ottimo per cercare una tinta scura Tailwind esatta (`blue-500` → `oklch(0.629 0.193 263.4)`) o per abbinare colori custom al peso visivo di una tinta scura Tailwind. Non interattivo — nessuna conversione di codici hex arbitrari. Questo strumento copre la stessa precisione OKLCH e funziona per qualunque hex, non solo per i 200+ default di Tailwind.

Playground ColorJS.io

strumento browser

ColorJS.io è la libreria di colori CSS autoritativa di Lea Verou e Chris Lilley; il playground espone il grafo di conversione completo (HEX, RGB, HSL, HWB, LCH, OKLCH, OKLAB, P3, Rec2020, ProPhoto, A98). Matematica profondamente corretta, ideale per lavoro di colore a livello di specifica. L'UI è developer-focalizzata (non designer-focalizzata) e manca delle funzionalità di contrasto/CVD/palette. Lo abbini a questo strumento: usi ColorJS.io per la matematica che altrimenti non può verificare, usi questo strumento per i flussi di lavoro attivi.

Generatore di temi shadcn/ui

strumento browser

Il generatore di temi shadcn di Vercel produce temi a variabili CSS OKLCH pronti da incollare per progetti shadcn/ui. Ottimo per la generazione di temi end-to-end quando il deliverable è un file di config shadcn. Non espone valori OKLCH intermedi per codici hex arbitrari — è focalizzato sul flusso di tema completo. Usi il generatore shadcn quando sta costruendo un tema shadcn; usi questo strumento quando le serve l'OKLCH di un qualunque colore individuale.

ColorHexa

strumento browser

Pagine SEO per-colore di lunga data con metadata profondi. Ha aggiunto recentemente il supporto OKLCH accanto a HEX/RGB/HSL/CMYK. UI datata (primi anni 2010), nessun rilevamento wide-gamut, nessun contrasto APCA. Forte per la discovery SEO di un hex specifico via Google; più debole per flussi di conversione attivi dove la UX a campi unificati e le funzionalità di gamma cromatica/contrasto contano. Questo strumento vince su ogni asse di flusso di lavoro attivo.

Color picker DevTools del browser

feature browser integrata

I DevTools di Chrome, Firefox e Safari spediscono tutti un color picker che oscilla tra HEX, RGB, HSL, HWB e OKLCH inline quando clicca su un campione (di colore) nel pannello CSS. Gratuito, nessuna installazione, sempre disponibile. Manca delle badge di gamma cromatica, del calcolo del contrasto, della simulazione del daltonismo e dell'export di codice per piattaforme non-web (SwiftUI, Compose). Si rivolga ai DevTools quando sta già debuggando CSS; si rivolga a questo strumento quando le serve output cross-platform o i controlli più approfonditi.

Culori CLI

libreria a riga di comando

Culori è la libreria di colori JavaScript OKLCH-aware più approfondita; la sua CLI gestisce la conversione HEX → OKLCH come one-liner (`culori convert '#3b82f6' --to oklch`). Eccellente per script CI e migrazione di token in batch. Nessun picker visivo né badge di gamma cromatica. Usi Culori CLI per l'automazione; usi questo strumento per il lavoro interattivo su singolo colore e per il feedback visivo immediato.

Esempi di conversione HEX in OKLCH

Migrare una palette HSL di Tailwind 3 → token OKLCH v4

#3b82f6

Output OKLCH: `oklch(0.629 0.193 263.4)`. Il flusso canonico di migrazione a Tailwind v4: definisca il colore brand una volta sola nel blocco `@theme` come `--color-primary: oklch(0.629 0.193 263.4)`, poi componga tinte chiare alzando L (`oklch(0.7 0.193 263.4)`, `oklch(0.8 0.15 263.4)`) e tinte scure abbassando L (`oklch(0.5 0.193 263.4)`, `oklch(0.4 0.18 263.4)`). La tonalità resta bloccata a 263,4°, il chroma è ancorato vicino a 0,19, la luminosità percettiva è l'unico asse che si muove — una scala monodimensionale che appare visivamente uniforme lungo tutta la scala, cosa che la scala HSL equivalente non può garantire.

Migrazione di design token con tinte scure percettivamente uniformi

#FF5733

Output OKLCH: all'incirca `oklch(0.66 0.18 28)`. Per costruire una scala di 5 tinte scure da questo arancione brand, tenga C = 0,18 e H = 28 costanti e faccia variare L su 0,3, 0,45, 0,6, 0,75, 0,9 — producendo da `oklch(0.3 0.18 28)` a `oklch(0.9 0.18 28)`. Ogni coppia adiacente appare come lo stesso salto visivo di luminosità, perché la L di OKLCH è ancorata al modello percettivo OKLAB (Ottosson 2020) anziché alla L geometrica di HSL legata alla gamma. Il chroma può ridursi silenziosamente verso sRGB agli estremi; le badge di gamma cromatica dello strumento segnalano esattamente quali passi richiedono attenzione.

OKLCH wide-gamut → fallback sRGB per siti Tailwind v3

#FF1744

Output OKLCH: circa `oklch(0.62 0.27 26)`. Un rosso a chroma elevato come questo eccede il cubo sRGB — la badge della gamma cromatica **sRGB** si accende in rosso, la badge **Display P3** conferma che rientra in P3, e Rec2020 lo copre anch'esso. Su un monitor standard a 24 bit si renderizza come un'approssimazione desaturata; su uno schermo Display P3 (la maggior parte dei dispositivi Apple dal 2017) si renderizza saturo. Faccia clic su **Snap a sRGB** per eseguire l'algoritmo binario di riduzione del chroma (CSS Color 4 §13 informativo) — L e H restano bloccati mentre C si riduce finché il colore non rientra, producendo un fallback hex adatto a una codebase Tailwind v3 che usa ancora token hex a 8 bit.

Migrazione del tema shadcn/ui

#0f172a

Output OKLCH: circa `oklch(0.21 0.04 264.7)`. shadcn/ui ha migrato il suo tema basato su variabili CSS a OKLCH poco dopo l'uscita di Tailwind v4, e `#0f172a` (slate-900 di Tailwind) è lo sfondo canonico in modalità scura. Lo strumento riproduce il valore OKLCH pubblicato di shadcn per lo stesso hex, così può verificare che un porting di tema della community corrisponda alla definizione upstream. Lo abbini alla riga di contrasto per confermare che il foreground in modalità scura (bianco o quasi-bianco) superi ancora WCAG AA contro questo sfondo — `oklch(0.21 ...)` contro `oklch(1 0 0)` riporta un comodo rapporto di 16:1.

Costruire una coppia chiara/scura per Tailwind v4 da un hex brand

#3b82f6

Output OKLCH: `oklch(0.629 0.193 263.4)`. Per derivare una coppia chiara/scura coerente per un tema, faccia ruotare solo il canale L mantenendo C e H costanti: la primary in modalità chiara diventa `oklch(0.7 0.15 263)` (leggermente più chiaro, leggermente meno cromatico per evitare affaticamento visivo su sfondi bianchi), la primary in modalità scura diventa `oklch(0.5 0.18 263)` (leggermente più scuro, leggermente più cromatico per mantenere salienza su sfondi scuri). Entrambe le varianti leggono come la stessa identità brand perché la tonalità è bloccata; lo spostamento di L percettivo bilancia la leggibilità in entrambe le modalità senza dover regolare manualmente i canali RGB.

Conversioni HEX → OKLCH comuni (Tailwind v4)

Tabella di riferimento di 10 popolari tinte scure di passo medio della palette di default di Tailwind v4 con i loro equivalenti HEX e OKLCH. I valori corrispondono alla precisione della palette pubblicata di Tailwind v4 (tre decimali su L e C, intero o un decimale su H).

Tailwind slate-500

#64748b oklch(0.55 0.04 257)

Lo slate-500 di default di Tailwind CSS — il grigio freddo neutro usato per body text, superfici secondarie ed elementi UI de-enfatizzati. Il chroma basso (0,04) lo mantiene visivamente neutro.

#64748b oklch(0.55 0.04 257)

slate è la scala neutra canonica per i temi dark-mode-friendly — ogni tinta scura di slate sta a chroma molto basso così leggono come grigio invece che con sfumatura blu.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Tailwind gray-500

#6b7280 oklch(0.55 0.03 258)

Il gray-500 di default di Tailwind CSS — la controparte true-neutral di slate. Chroma leggermente più basso di slate (0,03 vs 0,04) per un'apparenza più acromatica.

#6b7280 oklch(0.55 0.03 258)

gray e slate stanno a L quasi identica (0,55) — la luminosità percepita è corrispondente, solo la minuscola differenza di chroma li distingue.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Tailwind red-500

#ef4444 oklch(0.64 0.21 25)

Il red-500 di default di Tailwind CSS — il rosso canonico per azione distruttiva / errore. Il chroma elevato (0,21) lo mantiene saliente contro sfondi neutri.

#ef4444 oklch(0.64 0.21 25)

red-500 sta a L=0,64, corrispondendo alla L=0,63 di blue-500 — le scale v4 sono percettivamente bilanciate sulle tonalità, a differenza della palette basata su HSL di v3.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Tailwind orange-500

#f97316 oklch(0.71 0.19 42)

L'orange-500 di default di Tailwind CSS — la tonalità warm-accent e CTA. Sta tra il rosso e l'ambra sul cerchio cromatico (42°).

#f97316 oklch(0.71 0.19 42)

la L più alta di orange-500 (0,71) rispetto a quella di red-500 (0,64) è intenzionale — i gialli e gli arancioni appaiono luminosi a L percettiva più bassa rispetto ai rossi.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Tailwind amber-500

#f59e0b oklch(0.76 0.16 70)

L'amber-500 di default di Tailwind CSS — la tonalità di warning / caution, tra arancione e giallo sulla ruota.

#f59e0b oklch(0.76 0.16 70)

amber-500 raggiunge la L più alta (0,76) di qualunque colore Tailwind di livello 500 — i gialli hanno naturalmente bisogno di L più alta per apparire visivamente come 'mid-tone'.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Tailwind green-500

#22c55e oklch(0.72 0.19 149)

Il green-500 di default di Tailwind CSS — la tonalità di success / conferma. Sta a 149° sulla ruota cromatica, nella regione ciano-verde.

#22c55e oklch(0.72 0.19 149)

green-500 a L=0,72 è un soffio più luminoso di red-500 a L=0,64 — corrisponde alla realtà percettiva (i verdi appaiono luminosi) e dà alla palette un peso visivo bilanciato.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Tailwind teal-500

#14b8a6 oklch(0.7 0.13 184)

Il teal-500 di default di Tailwind CSS — la tonalità cool-accent tra verde e ciano. Chroma più basso di green-500 perché i teal ad alto chroma escono da sRGB con facilità.

#14b8a6 oklch(0.7 0.13 184)

l'H=184° di teal-500 sta appena oltre il ciano (180°) — il ciano puro in OKLCH è difficile da esprimere in sRGB senza clipping del chroma; il teal è il compromesso pratico.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Tailwind blue-500

#3b82f6 oklch(0.63 0.19 263)

Il blue-500 di default di Tailwind CSS — il 'web blue' canonico degli anni 2020, il colore brand-ancora per la palette v4 e il tema di default di shadcn/ui.

#3b82f6 oklch(0.63 0.19 263)

blue-500 è il colore di riferimento più spesso usato come punto di partenza per la migrazione OKLCH di Tailwind v4 — incolli #3b82f6 qui per verificare la conversione contro il valore pubblicato.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Tailwind indigo-500

#6366f1 oklch(0.59 0.21 277)

L'indigo-500 di default di Tailwind CSS — il cool-accent companion del blu, situato a 277° (verso il viola). Il chroma elevato (0,21) gli dà salienza.

#6366f1 oklch(0.59 0.21 277)

indigo-500 sta a L più bassa di blue-500 (0,59 vs 0,63) — la tonalità più profonda assorbe più luminosità apparente, e la scala v4 ne tiene conto percettivamente.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Tailwind violet-500

#8b5cf6 oklch(0.6 0.24 295)

Il violet-500 di default di Tailwind CSS — la tonalità purple-accent a 295°. Chroma più alto (0,24) di qualunque colore Tailwind di livello 500, spesso usato per branding di prodotti AI / creativi.

#8b5cf6 oklch(0.6 0.24 295)

il C=0,24 elevato di violet-500 lo mette vicino al tetto della gamma sRGB — lo spinga molto più in alto e attraversa nel territorio wide-gamut solo P3.

Le serve il color picker completo con RGB, HSL, CMYK, avvisi di gamma cromatica ed export di codice? Provi il convertitore di colori unificato — ogni formato modificabile simultaneamente.

Come usare il convertitore HEX in OKLCH

  1. 1

    Incolli un codice hex nel campo HEX

    Rilasci qualsiasi valore hex nell'input HEX — con o senza il `#` iniziale, in abbreviazione a 3 cifre (`#F73`), forma completa a 6 cifre (`#3b82f6`), abbreviazione alpha a 4 cifre (`#F738`) o forma completa alpha a 8 cifre (`#FF573380`). Il parser normalizza tutte e cinque le forme di input nello stesso colore interno prima di derivare OKLCH. Le maiuscole/minuscole non contano (`#3b82f6` e `#3B82F6` vengono analizzati in modo identico). Caratteri non validi o conteggi cifre errati producono un errore inline silenzioso; l'hex valido aggiorna in tempo reale ogni altro campo di formato, incluso OKLCH.

  2. 2

    Legga la tripletta OKLCH dal campo OKLCH

    Il campo OKLCH mostra il valore nella moderna forma di CSS Color 4: `oklch(0.629 0.193 263.4)` per un colore opaco, `oklch(0.629 0.193 263.4 / 0.5)` per uno con alpha. L è arrotondato a tre decimali (corrisponde alla precisione pubblicata di Tailwind v4), C a tre decimali, H a un decimale di grado. La fonte di verità interna OKLCH dello strumento significa che la precisione float sottostante viene preservata su ogni altro campo — il round-trip indietro verso hex resta bit-stable, a differenza dei convertitori legacy che instradano attraverso HSL e che derivano di un grado o due per ogni round-trip.

  3. 3

    Faccia clic su Copia per ottenere la stringa OKLCH

    Ogni scheda di formato ha un pulsante Copia sulla destra. Un clic e il valore atterra negli appunti — l'etichetta del pulsante passa brevemente a "Copiato!" per conferma. La stringa copiata è la sintassi canonica di CSS Color 4 (`oklch(0.629 0.193 263.4)`), pronta da inserire in un blocco `@theme` di Tailwind v4 o in una definizione di variabile CSS di shadcn/ui. Per output specifico per piattaforma (custom property CSS, token Tailwind v4, SwiftUI, Compose, Flutter) usi la sezione Copia come codice sotto il picker — questi snippet emettono il formato che ogni piattaforma si aspetta nativamente.

  4. 4

    Controlli le badge di gamma cromatica Display P3 / Rec2020

    Tre badge di gamma cromatica (sRGB, Display P3, Rec2020) mostrano se il colore corrente rientra nell'intervallo riproducibile di ciascuno spazio. Se la badge sRGB diventa rossa ma P3 è verde, il colore è un OKLCH wide-gamut che si renderizzerà saturo su hardware Apple (iPhone, iPad, MacBook dal 2017 in poi) ma desaturerà su un monitor legacy a 24 bit. Il pulsante **Snap a sRGB** usa la riduzione binaria del chroma (algoritmo informativo di CSS Color 4 §13) per ridurre il colore dentro sRGB preservando L e H, producendo un fallback hex che può spedire tramite `@supports not (color: oklch(0 0 0))`.

  5. 5

    Visibili anche: RGB, HSL, OKLAB, HSV, HWB, CMYK, colore named

    Lo stesso hex che incolla accende anche gli altri otto campi di formato — RGB per chiamate canvas e hardware, HSL per le variabili CSS legacy, OKLAB per matematica di palette e matrici di daltonismo, HSV e HWB per i flussi di lavoro con color picker per designer, CMYK per le stime di stampa, e il colore CSS named più vicino per la prosa di documentazione. Non resta mai vincolato solo a hex → OKLCH. Il picker (quadrato SL + cursore di tonalità + cursore alpha) guida tutti e nove simultaneamente, e sui browser Chromium il pulsante EyeDropper campiona qualunque pixel sullo schermo, anche fuori dal browser.

Errori comuni HEX / OKLCH

Leggere il Chroma di OKLCH come la saturazione di HSL

Il Chroma di OKLCH è non limitato (da 0 a ~0,4 per i colori che rientrano in sRGB, più alto per wide-gamut) — NON è una percentuale di saturazione 0-100% come la S di HSL. Assumere che C=0,3 significhi "saturazione al 30%" interpreta male la scala: 0,3 è altamente cromatico, vicino al tetto sRGB per alcune tonalità e ben oltre per altre. Il C massimo varia per L e H — un verde a L=0,7 supporta un C molto più alto di un blu a L=0,3. Tratti C come una distanza assoluta dal grigio, non come una percentuale relativa.

✗ Errato
Imposti OKLCH C = 0,3 aspettandosi "saturazione 30%":
oklch(0.7 0.3 250) → può eccedere la gamma sRGB per i blu
Il colore wide-gamut si renderizza desaturato su display legacy.
✓ Corretto
Tratti C come chroma assoluto, controlli le badge di gamma cromatica:
oklch(0.7 0.15 250) → comodamente in sRGB per questa coppia L+H
Usi le badge per trovare il C massimo che rientra nella gamma target.

Trattare la L di OKLCH come la L di HSL

Entrambi gli spazi riportano la Lightness come un asse 0-1 (o 0-100%), ma misurano cose diverse. La L di HSL è geometrica — derivata facendo la media tra il massimo e il minimo dei canali RGB in sRGB gamma-encoded. La L di OKLCH è percettiva — ancorata al modello OKLAB. Trasportare una palette basata su HSL come `oklch(L%, C, H)` aspettandosi luminosità corrispondente produce risultati irregolari perché la relazione di L tra i due spazi non è lineare. Per colori mid-tone OKLCH L = 0,6 è all'incirca HSL L = 50%, ma la curva deriva agli estremi scuro e chiaro.

✗ Errato
Copia direttamente le percentuali L di HSL in OKLCH:
hsl(220 50% 30%) trasportato come oklch(0.30 0.10 220)
I due colori appaiono notevolmente diversi in luminosità.
✓ Corretto
Ri-derivi OKLCH dall'hex originale, non trasporti HSL:
sorgente hex → conversione OKLCH → oklch(0.34 0.08 254)
La L percettiva resta corretta; la palette appare uniforme.

Dimenticare che OKLCH wide-gamut non si visualizzerà in sRGB

OKLCH è non limitato — può scrivere `oklch(0.7 0.4 30)` e la sintassi è valida, ma il chroma eccede ciò che lo spazio byte 256-per-canale di sRGB può codificare. Su un monitor sRGB quel colore clippa all'approssimazione in gamma più vicina (di solito una versione desaturata). Su un monitor Display P3 si renderizza correttamente. Spedire un OKLCH wide-gamut senza controllare le badge di gamma cromatica produce un colore che appare diverso su display diversi — un bug di coerenza cross-platform sottile ma reale.

✗ Errato
Spedisca oklch(0.7 0.4 30) senza controllare la gamma sRGB:
I display P3 renderizzano un rosso saturo; i display sRGB renderizzano desaturato
Il colore brand appare incoerente sull'hardware degli utenti.
✓ Corretto
Controlli la badge di gamma cromatica sRGB, faccia Snap a sRGB se serve, stratifichi con @supports:
@supports (color: oklch(0 0 0)) { --primary: oklch(0.7 0.4 30); }
@supports not (color: oklch(0 0 0)) { --primary: #ef6b50; }
L'hardware P3 ottiene il valore wide-gamut; l'hardware sRGB ottiene il fallback snappato.

Supporto browser mancante per oklch()

Il parsing nativo di `oklch()` è arrivato in Chrome ed Edge 111 (marzo 2023), Safari 15.4 (marzo 2022) e Firefox 113 (maggio 2023). La copertura caniuse combinata è del 94%+, ma il restante 6% include IE 11, vecchio Safari su iOS 15.3 o precedenti, vecchio Android Chrome e webview embedded. Spedire `oklch()` senza un fallback verso quella coda lunga si renderizza come il valore CSS `inherit` o fallisce del tutto. Esegua sempre il feature-detect con `@supports` per siti di produzione con un pubblico ampio.

✗ Errato
Definisca il colore brand solo in OKLCH:
:root { --primary: oklch(0.629 0.193 263.4); }
IE 11 e il vecchio Safari iOS non renderizzano alcun colore.
✓ Corretto
Stratifichi con @supports per un fallback con grazia:
:root { --primary: #3b82f6; }
@supports (color: oklch(0 0 0)) { :root { --primary: oklch(0.629 0.193 263.4); } }
I browser moderni ottengono OKLCH; i browser legacy ottengono il fallback hex.

Confondere OKLCH e LCH (forma polare di CIE-LAB)

CSS Color 4 spedisce sia `oklch()` sia `lch()`. Appaiono identici nella forma (L / C / H) ma usano spazi sottostanti diversi: `lch()` è la forma polare di CIE-LAB (1976), `oklch()` è la forma polare di OKLAB (Ottosson 2020). I due NON sono interscambiabili — `lch(60% 50 240)` e `oklch(0.6 0.15 240)` descrivono colori diversi. L'uniformità percettiva di CIE-LAB crolla attorno ai blu saturi, ed è per questo che Ottosson ha ri-derivato OKLAB. Per nuovo lavoro su design system, preferisca `oklch()` a `lch()`.

✗ Errato
Sostituisca lch() a oklch() aspettandosi lo stesso risultato:
lch(60% 50 240) ≠ oklch(0.6 0.15 240) — colori del tutto diversi
Copia-incollato tra gli spazi, il valore è silenziosamente sbagliato.
✓ Corretto
Scelga uno spazio e ci resti:
oklch(0.629 0.193 263.4) per design system moderni
oppure lch(60% 50 240) — ma non scambi i nomi delle funzioni senza ri-convertire

Chi usa HEX in OKLCH

Sviluppatori frontend che migrano a token OKLCH di Tailwind v4
Tailwind v4 si è standardizzato su OKLCH per la sua palette di default a gennaio 2025. Migrare una codebase v3 con colori brand basati su hex significa convertire ogni hex in OKLCH e inserire il risultato nel nuovo blocco `@theme`. Incolli ogni hex qui, copi il valore `oklch()`, definisca `--color-primary: oklch(0.629 0.193 263.4)` e simili. Le badge di gamma cromatica live segnalano qualunque colore che ecceda sRGB così può decidere se mantenere il valore wide-gamut per gli utenti Display P3 o fare snap a sRGB.
Autori di temi shadcn/ui che costruiscono palette custom
Il tema basato su variabili CSS di shadcn/ui usa OKLCH per ogni token (`--background`, `--foreground`, `--primary`, ecc.). I temi custom derivano da un hex brand di base convertendo a OKLCH e poi facendo variare L per le varianti chiare/scure. Incolli l'hex brand, legga la tripletta OKLCH, costruisca il resto del tema spostando L mantenendo C e H fissi. Corrisponde esattamente al flusso shadcn canonico.
Autori di design system che generano scale percettivamente uniformi
Generi una scala 50/100/200/.../900 spostando il canale L in incrementi OKLCH uguali mantenendo C e H fissi. Il gap visivo tra stop adiacenti appare identico su ogni tonalità — ciò di cui una palette di colori brand ha davvero bisogno. Tailwind v4 usa esattamente questa costruzione per la sua palette di default, e shadcn/ui la rispecchia. Incolli ogni hex brand, legga l'OKLCH, generi la scala in modo algoritmico o tramite il pannello Tints/Shades/Tones sotto il picker.
Ingegneri dell'accessibilità che verificano il contrasto in spazio OKLCH
Il contrasto WCAG 2.1 e APCA riportano entrambi rispetto al colore sRGB risolto, non alla tripletta OKLCH — ma conoscere la L OKLCH di un colore brand rende prevedibile la regolazione del contrasto: alzi L di 0,1 per superare AA contro il bianco, abbassi L di 0,1 per superare AA contro il nero. La vista simultanea OKLCH + WCAG + APCA rende visibile la relazione. Incolli l'hex brand, osservi le badge di contrasto, regoli L in OKLCH (più prevedibile che in HSL) finché la coppia non supera entrambe le metriche.
Sviluppatori web che costruiscono token wide-gamut per display moderni
La maggior parte dei dispositivi Apple dal 2017 (e molti dispositivi Android moderni) renderizza Display P3 nativamente. Definire colori brand accent in OKLCH permette di indirizzare rossi e verdi saturi solo P3 che nessun codice hex può codificare. Incolli un hex esistente per leggerne l'OKLCH, poi spinga il canale C oltre il tetto sRGB per rivendicare la saturazione extra P3. Le badge di gamma cromatica confermano che il nuovo valore rientra in P3 (e ricade con grazia su schermi solo sRGB tramite compressione del chroma del browser).
Insegnanti che spiegano luminosità percettiva vs geometrica
La vista simultanea OKLCH + HSL rende ovvia la differenza tra luminosità percettiva e geometrica. Incolli un verde saturo e un blu saturo alla stessa HSL L=50%; i valori L di OKLCH differiscono notevolmente perché OKLCH misura la luminosità percepita reale. Trascini il cursore di tonalità di HSL e osservi la L di OKLCH oscillare mentre tiene HSL L costante — la curva è la stranezza di gamma visualizzata. Una dimostrazione pronta per l'aula del perché i design system siano migrati a OKLCH.
Mantenitori open source che modernizzano la documentazione dei token
Le docs dei design system più datate elencano tipicamente i colori brand solo come codici hex. Modernizzare a OKLCH significa mostrare lo stesso colore in entrambi gli spazi — l'hex per la compatibilità del blocco di codice, l'OKLCH per la tabella della spec e la moderna definizione del token. Incolli ogni hex, copi l'output OKLCH, aggiorni la documentazione. L'hash URL condivisibile permette inoltre ai contributori di linkare al colore esatto in discussione in una issue GitHub senza ambiguità.

Matematica e pipeline HEX in OKLCH

HEX → OKLCH è una pipeline a 7 passi
La conversione passa attraverso cinque rappresentazioni intermedie: hex → sRGB intero → sRGB normalizzato (0-1) → linear-sRGB (gamma decodificata) → CIE XYZ D65 → OKLAB → OKLCH. Ogni passo è una matrice o una funzione piecewise ben definita da una fonte primaria. Lo strumento esegue la pipeline completa a ogni pressione di tasto; la matematica è abbastanza veloce (microsecondi) da non richiedere debouncing. Esporre la tupla RGB intermedia accanto a OKLCH significa che può fare debug di un valore OKLCH inatteso ispezionando i canali RGB.
Funzione di gamma CSS Color 4 §11.2
La conversione sRGB → linear-sRGB usa la funzione piecewise di CSS Color 4 §11.2: `v ≤ 0.04045 ? v/12.92 : ((v + 0.055) / 1.055)^2.4`. La forma piecewise (con un piccolo segmento lineare vicino allo zero) evita l'instabilità numerica della forma a esponente puro per i colori molto scuri. È la stessa funzione che i profili ICC usano per codificare sRGB e la stessa funzione che i browser usano internamente quando renderizzano i codici hex. L'inverso per OKLCH → hex applica la stessa funzione al contrario: `v ≤ 0.0031308 ? v * 12.92 : 1.055 * v^(1/2.4) - 0.055`.
Matrice CSS Color 4 §15.1: linear-sRGB ↔ XYZ D65
La matrice di CSS Color 4 §15.1 converte linear-sRGB in CIE XYZ sotto il punto di bianco 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`. La riga Y fornisce la formula della luminanza sRGB. La matrice è la stessa usata in ogni libreria di color management, incluse ICC, Adobe Color Engine e la pipeline open-source LCMS. La matrice inversa per OKLCH → hex applica l'inversa §15.1.
Matrici OKLAB di Ottosson 2020 e passo di radice cubica
La conversione XYZ D65 → OKLAB usa due matrici e un passo di radice cubica pubblicati nel paper OKLAB del 2020 di Björn Ottosson. La prima matrice trasforma XYZ in uno spazio di risposta dei coni LMS (modellato vagamente sulle sensibilità dei coni umani L/M/S). La radice cubica di ogni canale comprime l'intervallo dinamico in modo non lineare (il passo che corregge l'uniformità percettiva). La seconda matrice trasforma l'LMS dopo radice cubica nelle coordinate L/a/b di OKLAB. Tutte e tre le operazioni usano i valori esatti pubblicati nell'implementazione di riferimento del paper; nessuna ri-derivazione né arrotondamento. L'inverso per OKLCH → hex applica queste matrici al contrario.
OKLAB ↔ OKLCH è cartesiano-a-polare
Gli assi `a` e `b` di OKLAB formano un piano di chroma perpendicolare all'asse L. OKLCH polare-codifica quel piano: `C = sqrt(a² + b²)` (distanza euclidea dal grigio), `H = atan2(b, a) * 180 / π` (angolo in gradi, fatto rientrare in 0-360°). L'inverso: `a = C * cos(H * π / 180)`, `b = C * sin(H * π / 180)`. La forma polare è preferita a OKLAB per la conservazione dei design token perché Hue è un asse stabile — ruotare Hue non attraversa accidentalmente il grigio come può fare ruotare `a` o `b` in OKLAB.
Rilevamento della gamma cromatica tramite controllo dell'intervallo dei canali
Un colore è considerato in gamma per uno spazio target (sRGB, Display P3, Rec2020) se ogni canale rientra in `[-ε, 1 + ε]` dopo la conversione ai primari di quello spazio, dove `ε = 1e-7` per assorbire il rumore di precisione float attorno ai confini. La badge della gamma cromatica di ogni spazio diventa rossa quando un canale eccede l'intervallo. OKLCH è non limitato in gamma — `oklch(0.7 0.4 30)` è una coordinata valida ma può eccedere lo spazio byte 256-per-canale di sRGB. Il controllo gira a ogni pressione di tasto; combinato con Snap a sRGB, intercetta la trappola di adozione più comune (OKLCH wide-gamut che non si visualizza correttamente su schermi legacy).
Riduzione binaria del chroma per Snap a sRGB
Snap a sRGB corrisponde all'algoritmo informativo di gamut-mapping di CSS Color 4 §13: tenga L e H fissi ai valori correnti, faccia una ricerca binaria di C ∈ [0, currentC] per il C più grande la cui conversione sRGB resta in gamma. La ricerca gira al massimo per 30 iterazioni (precisione ~10⁻⁹), più che sufficiente per accuratezza visiva. Preservare L e H significa che il colore snappato si legge come la stessa famiglia di tonalità alla stessa luminosità — perde solo saturazione. Non clippiamo direttamente i canali RGB perché ciò distorce notevolmente la tonalità (specialmente nei blu, che clippano verso il viola).

Best practice per i flussi di lavoro HEX / OKLCH

Usi OKLCH come formato token canonico nel nuovo codice
Per qualunque design system che spedisce nel 2025 o oltre, definisca colori brand e scale di palette in OKLCH. L'asse L produce automaticamente scale percettivamente uniformi; l'asse Chroma può indirizzare colori wide-gamut che l'hex non può codificare. Mantenga un fallback hex per i browser più vecchi tramite `@supports not (color: oklch(0 0 0))` o PostCSS a build-time, ma renda OKLCH la fonte di verità nel suo token store. Tailwind v4 e shadcn/ui spediscono entrambi in questo modo; i nuovi progetti possono seguire il loro esempio senza attrito.
Generi scale spostando L, mantenendo C e H costanti
Costruzione canonica della scala OKLCH: blocchi C e H, faccia variare L in incrementi uguali. Una scala di 9 passi `oklch(L 0.15 263)` per L = 0,1, 0,2, …, 0,9 produce una spaziatura visivamente uniforme lungo ogni passo. È esattamente ciò che Tailwind v4 fa internamente. Non faccia variare C insieme a L a meno che non voglia che l'intensità cromatica della scala vari deliberatamente (raro). Non lasci derivare H tra i passi — anche una deriva di 5° fa apparire la scala disordinata.
Corrisponda alla precisione di Tailwind v4: 3 decimali L+C, 1 decimale H
La palette di default di Tailwind v4 pubblica valori OKLCH con tre decimali su L e C, e un decimale su H — `oklch(0.629 0.193 263.4)` per blue-500. Corrispondere a questa precisione nei suoi token significa che i flussi paste-into-config producono valori identici a quelli che Tailwind spedisce, e gli strumenti di diff non segnaleranno differenze spurie. L'arrotondamento di default dello strumento segue questa convenzione; il copia-incolla in un blocco `@theme` è bit-exact.
Faccia passare OKLCH wide-gamut attraverso il controllo di gamma cromatica Display P3
Se sta mirando a hardware Apple moderno (iPhone, iPad, MacBook dal 2017+) o spedisce contenuto HDR-aware, le badge di gamma cromatica le permettono di spingere C oltre il tetto sRGB per rivendicare la saturazione extra P3. La compressione del chroma applicata dal browser impedisce al colore di clippare su schermi solo sRGB. Non faccia pre-snap a sRGB di default a meno che non sappia che tutto il suo pubblico è su display legacy — perderebbe il 30%+ della saturazione che l'hardware P3 può renderizzare.
Fornisca un fallback hex tramite @supports per i browser pre-2023
Anche se il supporto evergreen browser per `oklch()` è ora del 94%+, la coda lunga (IE 11, vecchio Android Chrome, webview embedded) ha ancora bisogno di un fallback. Avvolga i token in `@supports (color: oklch(0 0 0))` e fornisca una variante hex nel ramo alternativo. L'output di Snap a sRGB è esattamente quel fallback — generato automaticamente dalla tripletta OKLCH corrente con L e H preservati. I plugin PostCSS a build-time come `postcss-oklab-function` possono inoltre inserire l'approssimazione sRGB a tempo di compilazione.
Documenti sia l'OKLCH sia l'hex sorgente nei suoi token
Quando spedisce una variabile CSS come `--color-primary: oklch(0.629 0.193 263.4)`, includa un commento con l'hex sorgente: `/* source: #3b82f6 (Tailwind blue-500) */`. Sei mesi dopo, quando qualcuno deve derivare una tinta scura correlata o verificare il valore rispetto a un PDF di brand guidelines, l'hex sorgente preserva la traccia di provenienza completa. OKLCH da solo è significativo ma più difficile da riconoscere a vista; l'hex sorgente è l'identificatore che la maggior parte dei colleghi cercherà per primo.
Usi l'URL hash per condividere decisioni di colore live
Ogni cambio di colore aggiorna l'hash URL come `#hex=3b82f6` o `#oklch=...` automaticamente. Copi l'URL in un thread Slack o in una issue GitHub e chiunque lo apra atterra sullo stesso colore con la stessa tripletta OKLCH. Questo è più affidabile che incollare una stringa OKLCH in chat — i destinatari a volte fanno typo nei decimali o avvolgono la precisione sbagliata — e consente a un thread di design-review di riferirsi a un colore esatto invece di "il blu brand di cui abbiamo parlato martedì". L'hash non viene mai trasmesso al server.

Domande frequenti

Cos'è il colore OKLCH?
OKLCH è la forma polare di OKLAB, uno spazio colore percettivamente uniforme pubblicato da Björn Ottosson nel 2020. I canali sono Lightness (0-1, scrivibile anche come 0-100%), Chroma (da 0 fino a circa 0,4 a seconda della tonalità e della L, non limitato superiormente) e Hue (0-360°, concettualmente identico alla tonalità di HSL). Deriva da CIE-LAB passando per uno stadio di risposta dei coni LMS con uno step di radice cubica. CSS Color 4 ha aggiunto la sintassi `oklch()` nel 2022. Tailwind v4 si è standardizzato su OKLCH per la sua palette di default nel 2025. Esempio: `oklch(0.629 0.193 263.4)` è il blue-500 di Tailwind.
OKLCH è meglio di HSL?
Per i design system, sì. La L (lightness) di HSL è geometrica — derivata facendo la media tra il massimo e il minimo dei canali RGB — ed eredita la curva di gamma di sRGB, quindi `hsl(60 100% 50%)` (giallo) appare visibilmente più luminoso di `hsl(240 100% 50%)` (blu) anche se entrambi riportano L=50%. La L di OKLCH è percettiva, ancorata al modello OKLAB di Ottosson 2020. Conseguenza pratica: una scala OKLCH a L uniforme appare visivamente uniforme su ogni tonalità; una scala HSL richiede correzioni per-tonalità manuali per sembrare uniforme. È per questo che Tailwind v4 ha migrato la sua palette di default dalla generazione basata su HSL a quella basata su OKLCH.
Quali browser supportano oklch()?
Tutti gli evergreen browser a partire da metà 2023: Chrome ed Edge 111 (marzo 2023), Safari 15.4 (marzo 2022, il primo a sbarcare), Firefox 113 (maggio 2023). La copertura caniuse combinata supera il 94%. Per la coda lunga — IE 11, vecchio Safari, Android Chrome su hardware legacy — avvolga i suoi token in `@supports (color: oklch(0 0 0))` e fornisca un fallback hex o `hsl()` nel ramo alternativo. Strumenti a build-time come PostCSS `postcss-oklab-function` possono anche inserire un'approssimazione sRGB accanto al valore OKLCH a tempo di compilazione.
Perché usare OKLCH in Tailwind v4?
Tailwind v4 (uscito a gennaio 2025) ha spostato la sua palette di default dalla generazione basata su HSL a quella basata su OKLCH proprio perché OKLCH produce scale percettivamente uniformi in modo automatico. Sotto il sistema HSL di v3, `red-500` e `blue-500` avevano pesi percepiti visibilmente diversi nonostante la L% HSL identica, costringendo i designer a regolare manualmente i singoli stop; sotto v4, entrambi appaiono bilanciati perché stanno alla stessa L di OKLCH. OKLCH sblocca anche colori wide-gamut di Display P3 che nessun codice hex può codificare — un token Tailwind v4 come `oklch(0.65 0.25 30)` può indirizzare rossi P3 che eccedono sRGB. La build emette comunque fallback hex per i browser più datati.
OKLCH è percettivamente uniforme?
Sì — è l'intento progettuale. OKLCH eredita l'uniformità percettiva da OKLAB, lo spazio colore di Björn Ottosson del 2020 progettato specificamente per risolvere le non-uniformità di CIE-LAB (il precedente miglior spazio percettivamente uniforme). Un passo fisso sul canale L corrisponde a un passo fisso di luminosità percepita. Un passo fisso su C corrisponde a un passo fisso di chroma percepito. Le approssimazioni di CIELAB crollano attorno ai colori molto saturi; OKLAB e la sua forma polare OKLCH restano accurati lungo tutta la gamma cromatica, ed è per questo che ogni strumento moderno di design system (Tailwind v4, shadcn/ui, Radix Colors v3) si è standardizzato su di esso.
Come si legge un valore OKLCH?
`oklch(L C H)` — tre numeri, opzionalmente con `/ A` per l'alpha. L è la Lightness da 0 (nero) a 1 (bianco); la forma numerica e quella a percentuale sono equivalenti (`0.6` e `60%`). C è il Chroma da 0 (grigio) fino a circa 0,4 per i colori sRGB più saturi; non c'è un limite superiore rigido, i colori wide-gamut possono eccederlo. H è la Hue in gradi da 0 a 360, identico a HSL (0/360 = rosso, 120 = verde, 240 = blu). Esempio: `oklch(0.629 0.193 263.4)` è il blue-500 di Tailwind — luminoso, altamente cromatico, nell'arco del blu.
Qual è la differenza tra OKLCH e LCH?
Entrambi sono forme polari (Lightness / Chroma / Hue) di uno spazio colore della famiglia CIE-LAB. LCH è la forma polare di CIE-LAB, lo spazio percettivamente uniforme del 1976. OKLCH è la forma polare di OKLAB, l'aggiornamento del 2020 di Ottosson. La differenza: l'uniformità percettiva di CIE-LAB crolla attorno ai blu e ai viola altamente saturi (una debolezza documentata del modello), quindi una scala LCH che attraversa colori saturi appare sottilmente non uniforme. OKLAB risolve il problema ri-derivando le matrici da uno stadio di risposta dei coni LMS corretto. Entrambi sono inclusi in CSS Color 4 (sintassi `lch()` e `oklch()`); per nuovo lavoro su design system nel 2025, preferisca OKLCH.
Come si converte HEX in OKLCH?
La pipeline è: si analizza l'hex `#RRGGBB` in canali sRGB interi tramite `parseInt(hex, 16)`, si normalizza in 0-1, si decodifica la gamma in linear-sRGB tramite la funzione piecewise di CSS Color 4 §11.2, si moltiplica per la matrice §15.1 per ottenere CIE XYZ D65, si moltiplica per la matrice LMS di Ottosson e si fa la radice cubica di ogni canale, si moltiplica per la matrice OKLAB di Ottosson per ottenere L/a/b, poi si passa da cartesiano a polare: `C = sqrt(a² + b²); H = atan2(b, a) * 180 / π`. La pipeline completa gira in microsecondi. Questo strumento la esegue live mentre digita — `#3b82f6` atterra come `oklch(0.629 0.193 263.4)` all'istante.

Strumenti correlati

Vedi tutti gli strumenti →