Come scegliere combinazioni di colori accessibili

· 9 min di lettura

Le scelte di colore sembrano una decisione estetica e si comportano come una decisione legale. Circa 4.000 cause sull'accessibilità web all'anno colpiscono i convenuti statunitensi dal 2021, e un contrasto cromatico inadeguato è uno dei tre problemi più citati nelle denunce basate su WCAG (insieme al testo alt mancante e ai campi modulo senza etichetta). La buona notizia è che il contrasto è il più semplice dei tre da correggere: un rapporto di contrasto è un numero, la soglia WCAG è un numero, e puoi calcolare l'uno rispetto all'altro in pochi secondi. La cattiva notizia è che "accessibile" va oltre il rapporto in copertina: cecità ai colori, indicatori di focus, modalità scura e tokenizzazione contano tutti, e una palette che ottiene 4,5:1 in ogni stile di testo può comunque fallire con gli utenti reali.

Una breve storia dell'accessibilità cromatica digitale

Il contrasto cromatico come standard scritto risale al primo lavoro della Web Accessibility Initiative del W3C nel 1997. Le originali Web Content Accessibility Guidelines 1.0 (maggio 1999) raccomandavano un contrasto sufficiente in termini qualitativi senza un numero rigido. WCAG 2.0 (dicembre 2008) ha introdotto la formula di luminanza relativa ora familiare e il rapporto 4,5:1 a Livello AA, tratto dalla ricerca della Lighthouse International su ciò che gli utenti più anziani con occhiali da lettura potevano leggere comodamente sugli schermi.

Il peso legale è arrivato dopo. La Section 508 dell'U.S. Rehabilitation Act ha referenziato WCAG 2.0 nel 2018; l'Americans with Disabilities Act, dopo la decisione del Ninth Circuit Robles v. Domino's del 15 gennaio 2019 (la Corte Suprema ha rifiutato di ascoltare l'appello a ottobre 2019), è ora interpretato dai tribunali statunitensi come copertura dell'accessibilità digitale sotto il Titolo III. L'European Accessibility Act è entrato in vigore il 28 giugno 2025, richiedendo WCAG 2.1 AA sui servizi digitali rivolti ai consumatori per il settore pubblico e molte aziende private. In pratica, 4,5:1 testo normale + 3:1 testo grande + 3:1 componenti UI è il pavimento de facto per qualsiasi sito web pubblico che venga costruito oggi.

La scienza ha continuato a evolversi. WCAG 2.1 (2018) ha aggiunto la regola del contrasto non-testo 3:1. L'algoritmo APCA, sviluppato da Andrew Somers per WCAG 3, modella la percezione della luminosità in modo più accurato e dà numeri diversi per combinazioni molto scure e molto chiare; è una Editor's Draft al 2026, non ancora uno standard, quindi la maggior parte delle normative cita ancora WCAG 2.x. OKLAB e OKLCH di Bjorn Ottosson (2020) hanno dato ai designer uno spazio cromatico percettivamente uniforme che rende molto più facile generare scale di colori accessibili rispetto a lavorare in HSL o RGB.

Cosa significa davvero "colore accessibile"

Contano quattro cose, non solo il rapporto:

  1. Contrasto primo piano vs sfondo. Il numero in copertina. Il testo del corpo necessita di 4,5:1, il testo grande 3:1, i controlli UI e gli indicatori di focus 3:1 rispetto ai colori adiacenti. Calcola il rapporto con la formula WCAG 2 in qualsiasi color contrast checker.
  2. Daltonismo. Circa l'8% degli uomini e lo 0,5% delle donne vedono meno colori di quanto il design assuma. I tre tipi principali sono la protanopia e la deuteranopia (rosso-verde, le più comuni) e la tritanopia (blu-giallo). Un'etichetta di errore rossa su un'etichetta di successo verde può essere invisibile per un osservatore protanopico.
  3. Il colore non è mai l'unico segnale. WCAG 1.4.1 vieta di affidarsi al solo colore per trasmettere significato. Un bordo "errore" rosso ha bisogno anche di un'icona o di un'etichetta. Un toast "successo" verde ha bisogno di un segno di spunta.
  4. Indicatori di focus. Gli utenti da tastiera devono vedere dove si trova il focus. La regola WCAG 2.4.7 richiede un indicatore di focus visibile, e l'aggiornamento 2.4.11 (WCAG 2.2) richiede che sia spesso almeno 2 pixel CSS e contrasto 3:1 rispetto al colore adiacente.

Una palette che azzecca il rapporto ma ignora le altre tre fallisce comunque con gli utenti reali.

Come scegliere colori accessibili, passo dopo passo

  1. Inizia con token semantici, non con colori grezzi. Definisci text-primary, text-secondary, surface-default, surface-elevated, border-default, accent-primary, accent-danger, ecc. Mappa ogni token a un colore specifico e lascia che quei token portino il significato semantico ovunque nel design system.
  2. Scegli la scala di luminosità. Usa valori di luminosità OKLCH per costruire una scala a 5-9 passi (50, 100, 200, ..., 900) dove ogni passo ha una differenza percettiva costante dal successivo. I numeri sembreranno insoliti in OKLCH (intorno a L = 0,97, 0,93, 0,88...) ma i passi percepiti saranno uniformi, cosa impossibile in HSL.
  3. Scegli le tinte a ogni passo di luminosità. Scegli la tinta del marchio, poi scegli tinte complementari o di accento che mantengano un croma simile. Usa OKLCH così che "blu saturazione 100" e "arancione saturazione 100" appaiano della stessa luminosità.
  4. Calcola i rapporti di contrasto. Ogni coppia di token che si tocca ha bisogno del rapporto giusto. Testo del corpo su superficie predefinita: 4,5:1. Testo disabilitato su superficie predefinita: ancora 3:1 se deve essere leggibile. Indicatore di focus su superficie adiacente: 3:1.
  5. Esegui un simulatore di daltonismo. Prendi una schermata chiave e ri-renderizzala attraverso i simulatori di protanopia, deuteranopia e tritanopia. Conferma che le informazioni trasmesse dal colore siano ancora distinguibili.
  6. Testa con vere tecnologie assistive. Mac VoiceOver, NVDA, JAWS e TalkBack dovrebbero tutti essere in grado di navigare senza dipendere da indizi cromatici.
  7. Aggiungi il segnale non-cromatico ovunque il colore porti significato. Icone per errore/successo/avviso, sottolineature per i link nel corpo del testo, pattern per le serie dei grafici.
  8. Documenta i token. Una libreria Figma, una pagina Storybook o un sito statico di design system. Auditor e nuovi designer dovrebbero poter scegliere il token giusto in pochi secondi.

Riferimento dei rapporti di contrasto

AccoppiamentoMin WCAG 2.1Livello AALivello AAA
Testo del corpo (sotto 18 pt regular o 14 pt grassetto)4,5:14,5:17:1
Testo grande (18 pt regular o 14 pt grassetto)3:13:14,5:1
Componenti UI (bordi dei moduli, stati toggle, focus)3:13:1n/d
Oggetti grafici (icone che portano significato)3:13:1n/d
Testo all'interno di un logoesenteesenteesente
Controlli disabilitatiesenteesenten/d
Testo decorativoesenteesenteesente

L'esenzione per i controlli disabilitati è una scappatoia legale, non una benedizione di usabilità; un controllo disabilitato che nessuno può leggere può tecnicamente passare WCAG ma confonderà comunque gli utenti.

Tipi di daltonismo e come controllarli

TipoPrevalenzaVede menoFallimento comune
Protanopia~1% degli uominiRossoErrore rosso vs successo verde indistinguibili
Deuteranopia~5% degli uominiVerdeStesso: confusione rosso-verde
Tritanopia~0,005%BluBlu vs giallo indistinguibili
Acromatopsia~0,003%Tutti i coloriVede solo luminanza in scala di grigi
Tricromia anomala~5%Sensibilità ridotta in un canaleLe sottili differenze cromatiche si fondono

Esegui sempre il design almeno attraverso i simulatori di protanopia e deuteranopia; catturano la maggior parte degli utenti daltonici.

Insidie comuni

Algoritmi e standard alternativi

AlgoritmoAnnoStatoPunto di forza
Rapporto di contrasto WCAG 2.x2008Richiesto dalla maggior parte delle normativeMatematica semplice, ampiamente strumentato
APCA2020Editor's Draft di WCAG 3Migliore nella luminosità percettiva
ISO 9241-3022008Standard di ergonomia delle workstationOrientato all'hardware, molto severo
Avvisi di contrasto di Lighthouse2018Chrome DevToolsGratuito, nel browser
axe-core2015Libreria open-sourceStandard del settore per test automatici

Per il lavoro regolamentato oggi, WCAG 2.1 AA è il pavimento. APCA vale la pena tracciare man mano che WCAG 3 matura; molti team di design system già riportano entrambi i numeri.

Strumenti per scegliere colori accessibili

StrumentoScopoPunto di forza
Color contrast checker (browser)Punteggio per una coppia primo piano/sfondoIstantaneo, nessun upload, accessibile da qualsiasi dispositivo
Accessible palette generatorCostruisce una scala completa di luminosità a croma costanteUsa OKLCH per uniformità percettiva
Color blindness simulatorRi-renderizza una schermata come la vede un osservatore daltonicoCattura problemi rosso-verde prima del lancio
Chrome DevTools LensIspeziona contrasto e daltonismo sul postoIntegrato nel browser
WebAIM Contrast CheckerRiferimento WCAG 2 classicoAffidabile, ampiamente citato
Stark (plugin Figma)Verifica i design Figma per contrasto e daltonismoCattura i problemi al momento del design
axe DevTools (browser)Scansione WCAG automaticaStandard del settore
Scale colore Tailwind, Radix, Open PropsPalette pre-testate basate su OKLCHAccessibilità curata dai team di design

Per nuovi progetti, parti da una palette testata (Radix Colors e Open Props sono buoni default), scegli i token del marchio e verifica ogni coppia testo-su-superficie con un color contrast checker. Per progetti esistenti, fai un audit una tantum di ogni coppia testo/sfondo nel tuo foglio di stile, correggi i fallimenti e aggiungi un passaggio Stark o axe al tuo CI così che il prossimo fallimento sia catturato al momento del PR.

Privacy e gli strumenti

Il color contrast checker, il generatore di palette accessibile e il simulatore di daltonismo girano tutti interamente nel tuo browser. I colori che scegli o incolli vengono processati da JavaScript sul tuo dispositivo, i risultati vengono renderizzati nella pagina e nulla viene inviato a un server. Nessuna telemetria, nessuna analitica sull'input, nessuno script di terze parti. Per i colori del marchio non ancora pubblici, le palette di prodotti interni o i design sotto embargo, quel flusso solo-locale è la differenza tra fidarsi di uno strumento di design di uno sconosciuto con le tue risorse del marchio non rilasciate e non. Gli strumenti possono girare offline una volta caricata la pagina, cosa che puoi verificare spegnendo la tua rete e ricontrollando una coppia di contrasto.

Domande frequenti

What contrast ratio does WCAG require?

WCAG 2.1 Level AA requires at least 4.5:1 for normal body text and 3:1 for large text (18 pt regular or 14 pt bold). Level AAA raises that to 7:1 for normal text and 4.5:1 for large text. Non-text UI components and graphical objects need 3:1 against adjacent colors.

Are WCAG contrast ratios scientifically accurate?

They are based on the WCAG 2.0 algorithm from 2008, which compares the relative luminance of two colors using the sRGB color space. The formula is imperfect for very dark and very light combinations and for some color hues; the APCA (Accessible Perceptual Contrast Algorithm) being developed for WCAG 3 produces more perceptually accurate results. For 2026 work, WCAG 2.x is still the standard most regulations cite.

How do I check whether my colors work for color-blind users?

Run them through a color-blindness simulator that converts your palette to what someone with protanopia, deuteranopia, or tritanopia sees. About 8% of men and 0.5% of women have some form of color vision deficiency, so this matters.

Should I use the same color palette for light and dark mode?

Usually not. Dark mode needs slightly desaturated colors at the same hue, otherwise vivid colors that look fine on white become eye-strain on black. Define semantic tokens (text-primary, surface-secondary) and map them to different physical colors per mode.

What does OKLCH have to do with accessibility?

OKLCH is a perceptually uniform color space (Bjorn Ottosson, 2020) where equal numerical changes produce equal perceptual changes. That makes it much easier to generate accessible color scales because you can step the lightness in equal increments and the perceived brightness step is consistent, which is hard to do in HSL or RGB. CSS supports OKLCH directly since 2023 in all major browsers.