Vai al contenuto
Color tools

Color picker, converter e WCAG contrast

Converti tra HEX, RGB, HSL, OKLCH, Lab in modo bidirezionale, genera palette perceptually uniform via OKLCH e verifica il contrast ratio rispetto allo standard WCAG 2.1 AA/AAA. Pensato per chi disegna interfacce e si prende cura dell'accessibilità: la combinazione OKLCH per la coerenza percettiva e WCAG per l'accessibilità reale produce palette robuste alla prima passata.

Picker e palette

Palette OKLCH

Formati colore

WCAG 2.1 contrast checker

Aa Aa large
Contrast ratio

Anteprima UI

Esempio di titolo

Questo paragrafo usa il colore selezionato come sfondo e il foreground scelto. Verifica che il testo sia leggibile a colpo d'occhio.

Come usare il color picker

  1. 1

    Scegli un colore

    Click sul native color picker per aprire il selettore del sistema operativo, oppure incolla un valore in qualsiasi campo (HEX, RGB, HSL, OKLCH, Lab). I cinque campi sono bidirezionali: cambiando uno, gli altri quattro si aggiornano.

  2. 2

    Verifica il contrast WCAG

    La sezione contrast checker mostra il ratio del colore contro fondo bianco o nero, e il PASS/FAIL per i quattro livelli WCAG 2.1: testo normale AA (4.5:1), testo normale AAA (7:1), testo grande AA (3:1), testo grande AAA (4.5:1).

  3. 3

    Genera la palette

    La palette OKLCH genera 9 stop di luminance del colore base mantenendo C (chroma) e H (hue) costanti. Risultato: un set di shade armoniche perceptually uniform, utili per design system. Click su una swatch per impostare il colore principale a quello.

  4. 4

    Copia il valore

    Click sul bottone copy a destra di ogni campo per portare il valore CSS-ready negli appunti. I formati emessi sono compatibili con CSS Color Module Level 4 (oklch(), lab() supportati da tutti i browser moderni dal 2023).

Perché questo color picker

OKLCH first-class. OKLCH (Oklab Lightness Chroma Hue) è lo spazio colore perceptually uniform definito da Bjørn Ottosson nel 2020 e standardizzato in CSS Color Level 4. Significa che differenze numeriche di L (lightness) corrispondono a differenze di luminosità percepita uniformi dall'occhio umano. Confronto pratico: due colori HSL con stessa S e L ma H diversi possono apparire molto diversi in luminosità (un giallo HSL chiaro accanto a un blu HSL con la stessa L viene percepito come molto più chiaro). In OKLCH, due colori con stesso L appaiono ugualmente luminosi indipendentemente dal hue. Questo rende OKLCH lo strumento ideale per generare palette accessibili: bastano stesso C e H più variazioni di L per ottenere shade coerenti fra loro.

WCAG 2.1 contrast checker integrato. Le linee guida WCAG 2.1 per accessibilità richiedono ratio minimo 4.5:1 per testo normale (AA) e 7:1 per AAA. Il calcolo segue la formula ufficiale: luminanza relativa di sRGB linearizzato, ratio (L1+0.05)/(L2+0.05) con L1 più chiaro, costanti standard (0.2126/0.7152/0.0722). Test automatico contro nero (#000) e bianco (#FFF) come foreground. Per palette aziendali, gli stop OKLCH passano spesso il check al primo colpo proprio grazie alla distribuzione perceptually uniform.

Output canonical CSS Level 4. Tutte le conversioni sono formule matematiche chiuse standard (matrici sRGB-XYZ, CIE 1976, Ottosson 2020) eseguite localmente nel browser. L'output è già nel formato canonical accettato dai parser CSS moderni: oklch(50.86% 0.1545 245.8), lab(40.13 -8.86 -49.05), da incollare direttamente nei fogli di stile.

OKLCH: perché è il futuro del color design

OKLCH ha tre proprietà uniche che HSL e Lab CIE non condividono.

1. Perceptually uniform per costruzione. Bjorn Ottosson ha derivato la matrice di trasformazione minimizzando l'errore di percezione contro il dataset COMBVD (Color Matching Based on Visual Demographic). Risultato: OK_lab (e quindi OKLCH) è significativamente più accurato di Lab CIE 1976 in zone problematiche (blu, magenta).

2. Hue stability sotto variazioni di L. Cambiare la lightness di un colore in OKLCH preserva il hue percepito. In HSL, abbassare L di un blu lo fa virare verso il viola. In OKLCH, lo stesso blu resta blu fino al nero. Test pratico: prendi un colore primary, riducine L a step di 10%, vedi se mantiene la sua identità cromatica. Con OKLCH, si.

3. Wide gamut compatibility. CSS Color Level 4 (già supportato da Chrome 111+, Safari 15.4+, Firefox 113+) accetta OKLCH come input nativo. Quando il browser gira su display P3 (iPhone, Mac, MacBook recenti), OKLCH può rappresentare colori fuori dal gamut sRGB tradizionale. La conversione in sRGB clipping è graceful: il browser sceglie il colore P3 più vicino se disponibile, altrimenti il più vicino sRGB.

Per design system aziendali la migrazione vale la pena: una palette OKLCH-based passa contrast checker più facilmente, ha shade armoniche, e sopravvive a future espansioni del gamut display.

Glossario

Termini tecnici usati in questa pagina, spiegati in due righe.

sRGB #
Spazio colore standard del web definito in IEC 61966-2-1 (1999). Gamut: ~35% dei colori visibili. Default per tutti i monitor consumer fino al 2018.
OKLCH #
Spazio colore polare (Lightness, Chroma, Hue) basato su OKLab. Bjorn Ottosson, 2020. Standardizzato in CSS Color Level 4. Perceptually uniform.
Lab CIE 1976 #
Spazio colore L*a*b* della Commission Internationale de l'Eclairage. Tentativo storico di perceptual uniformity, ma con errori noti in alto chroma (blu, viola). Utile per backward compatibility, OKLCH è superiore.
WCAG contrast ratio #
Formula (L1+0.05)/(L2+0.05) con L1, L2 luminanza relativa sRGB. Range 1:1 (identici) a 21:1 (nero su bianco). Soglie WCAG 2.1: 3:1 large AA, 4.5:1 normal AA, 7:1 normal AAA.
Gamut #
L'insieme di colori rappresentabili in uno spazio colore. sRGB ~35% del visibile, Display P3 ~45%, Rec.2020 ~75%. OKLCH è gamut-agnostic: rappresenta qualsiasi colore se il display lo supporta.
Hue stability #
Proprietà di uno spazio colore: cambiare L preserva la hue percepita. HSL non ha hue stability (blu chiaro vira viola). OKLCH si.

Domande frequenti

Posso incollare colori in formato CSS direttamente?
Si. I parser sono permissivi: #0065c0, 0065c0, rgb(0, 101, 192), 0 101 192, hsl(207, 100%, 38%), oklch(50.86% 0.1545 245.8), lab(40.13 -8.86 -49.05) sono tutti riconosciuti. Le virgole, le percentuali, gli spazi sono opzionali nei separatori.
Perché due formati diversi mi danno lo stesso colore visivamente?
Perché i formati sono lossless tra loro per colori dentro il gamut sRGB. HEX <-> RGB <-> HSL sono identità matematiche (sRGB è la base). OKLCH <-> Lab <-> XYZ <-> sRGB hanno conversioni a roundtrip esatte (a meno di rounding sull'ultimo digit). Se due formati ti danno colori VISIVAMENTE diversi, c'e' un bug del browser nel rendering CSS, non del converter.
Il contrast checker AAA è troppo restrittivo per i miei brand color, posso ignorarlo?
AAA è obbligatorio solo per servizi pubblici (PA, sanita') in alcuni paesi. Per la maggior parte dei siti commerciali, AA (4.5:1 normale, 3:1 large) è lo standard accettato (Direttiva UE 2102, WCAG 2.1 AA target). Se i tuoi brand color falliscono AA, puoi: 1) usarli solo come accent decorativo, mai come testo principale, 2) modificare la palette aumentando il delta L, 3) usare colori diversi per testo (palette "text" derivata).
Perché usare OKLCH invece del classico HSL?
Tre motivi. 1) Perceptual uniformity: in OKLCH due shade con stesso L appaiono ugualmente luminose, in HSL no (giallo a L=50 sembra più chiaro di blu a L=50). 2) Hue stability: cambiare L in HSL fa virare la hue percepita, in OKLCH no. 3) Wide gamut: OKLCH può rappresentare colori P3 e Rec.2020 nativamente, HSL è bloccato a sRGB.
I valori OKLCH/Lab si rendono fuori gamut sRGB?
Possono. Se OKLCH(70% 0.4 250) finisce fuori dal gamut sRGB, il converter clamps gli RGB risultanti a [0, 255], producendo un colore sRGB "più vicino" ma non identico. Se vuoi vedere quando questo succede: confronta il valore OKLCH che hai inserito con il valore OKLCH calcolato dall'RGB clipped. Differenze significative = clipping. Per uso web standard non è un problema, gli RGB sono comunque dentro gamut.
Funziona offline?
Sì. Tutte le conversioni sono formule matematiche chiuse calcolate direttamente nel browser; una volta caricata la pagina, il tool continua a funzionare anche senza connessione.
C'e' una API per integrare le conversioni in uno script o plugin?
Non come endpoint HTTP. Per scripting: tutte le formule sono pubbliche (sRGB IEC 61966-2-1, CIE 1976, Ottosson 2020) e implementabili in qualsiasi linguaggio. Per JavaScript: il file color_picker-gui.js di questo tool è una source-of-truth riusabile. In Python: colour-science. In Node: color-js.
WCAG 3 (APCA) è previsto?
Non in V1. APCA (Accessible Perceptual Contrast Algorithm) è la nuova metrica proposta per WCAG 3 ma è ancora in draft (non ratificata al 2026). Quando WCAG 3 diventa W3C Recommendation aggiungo APCA come check supplementare. Per ora WCAG 2.1 è lo standard legalmente vincolante (UE Direttiva 2102, US ADA Section 508).

Chi sviluppa questi strumenti?

Maurizio Fonte, consulente IT senior con oltre 20 anni di esperienza in PHP, Laravel, infrastrutture Linux, cybersecurity e integrazione AI/LLM in azienda. Backend di produzione, modernizzazione di codice legacy, audit di sicurezza, agenti AI e MCP server custom: il lavoro che sta dietro a questi strumenti.

Conosci Maurizio Fonte