Calcolo del contrasto colori WCAG
Questo calcolatore confronta un colore in primo piano con uno di sfondo usando il metodo della luminanza relativa WCAG.
Esegui gratis nel browser
Restituisce la luminanza di ogni colore, il rapporto di contrasto e indicatori chiari di superamento AA e AAA per testo normale e grande. Lei può usarlo per controllare token di design, convalidare i colori di un’interfaccia prima del rilascio o aggiungere una verifica di accessibilità ripetibile a un flusso automatizzato. Gli input sono colori esadecimali espliciti, i calcoli sono deterministici e i formati non validi generano un errore utile. Lo strumento web è adatto ai controlli singoli; ogni richiesta tramite API costa $0.002.
Comprenda i valori restituiti dal calcolatore
Il risultato normalizza anzitutto entrambi gli input come colori esadecimali minuscoli a sei cifre; una forma breve come #fff viene quindi riportata sempre come #ffffff. Mostra poi la luminanza relativa del primo piano e dello sfondo. La luminanza relativa varia da zero per il nero a uno per il bianco e deriva dai canali sRGB linearizzati, ponderati per riflettere la diversa sensibilità dell’occhio alla luce rossa, verde e blu. Il rapporto di contrasto confronta la luminanza più chiara con quella più scura e varia da 1:1 per colori identici a 21:1 per nero e bianco. Il rapporto visualizzato viene arrotondato a due decimali, mentre ogni decisione di superamento usa il valore completo non arrotondato. Questa distinzione evita che un valore mostrato come 4.50 superi la soglia quando il valore reale è ancora inferiore a 4.5. La risposta raggruppa quattro valori booleani per testo normale e grande, semplici da mostrare a un team di design o da verificare in test automatizzati.
Fornisca colori validi e interpreti AA e AAA
Inserisca primo piano e sfondo come colori esadecimali a tre o sei cifre, con o senza cancelletto iniziale. Valori come #123, 123, #112233 e AABBCC sono accettati e normalizzati. Nomi di colori CSS, espressioni rgb() o hsl(), valori esadecimali alfa a quattro o otto cifre, stringhe vuote e valori non testuali vengono rifiutati, perché opacità e composizione richiedono ulteriore contesto. Per il testo normale, WCAG AA richiede almeno 4.5:1 e AAA almeno 7:1. Per il testo grande, AA richiede 3:1 e AAA 4.5:1. In genere, è grande un testo di almeno 18 punti con peso normale o 14 punti in grassetto, ma la capacità non esamina la tipografia: restituisce entrambe le matrici affinché la Sua applicazione scelga quella pertinente. Un rapporto sufficiente è solo una parte della revisione di accessibilità e non dimostra che l’intera interfaccia sia accessibile.
Usi i risultati nei flussi di design e distribuzione
Parta dai token reali di primo piano e sfondo usati dal componente, non da colori campionati in uno screenshot compresso. In una revisione manuale, confronti corpo del testo, testo secondario, link, etichette dei pulsanti, suggerimenti dei moduli, indicatori di stato attivo e stati disabilitati con ogni superficie su cui compaiono. In un design system, mantenga una piccola matrice di coppie approvate e richiami l’API quando cambia la palette. Un controllo di integrazione continua può rifiutare una coppia proposta se AA per il testo normale è falso, consentendo invece una combinazione decorativa o per titoli grandi in base a una regola documentata. Conservi colori normalizzati e rapporto insieme al test, così i revisori potranno riprodurre il risultato. Ogni richiesta automatizzata costa $0.002; un input non valido restituisce un errore. L’algoritmo non usa rete, casualità o data corrente, quindi la stessa coppia produce sempre lo stesso esito. Per trasparenze, gradienti, fotografie o stati interattivi, determini prima i colori renderizzati oppure usi un audit nel browser con il contesto completo.
Casi d'uso
Controllare i token di design
Confronti token di testo e superficie prima di pubblicare un tema chiaro o scuro.
Proteggere le richieste di modifica
Faccia fallire un controllo automatico quando una coppia modificata non soddisfa più il livello di testo richiesto.
Documentare i rilievi di accessibilità
Aggiunga colori normalizzati, luminanze e un rapporto riproducibile a un ticket o rapporto di audit.
Domande frequenti
Quali formati di colore può usare?
Usi colori esadecimali a tre o sei cifre, con o senza cancelletto iniziale. Alfa, nomi, rgb() e hsl() non sono accettati.
Quali soglie WCAG vengono applicate?
Il testo normale usa 4.5:1 per AA e 7:1 per AAA. Il testo grande usa 3:1 per AA e 4.5:1 per AAA.
Il superamento dipende dal rapporto arrotondato?
No. Il rapporto viene arrotondato solo per la visualizzazione; gli indicatori confrontano il valore completo calcolato con ogni soglia.
Una coppia approvata rende la pagina conforme a WCAG?
No. Conferma solo il contrasto dei due colori opachi forniti. Una revisione completa dell’accessibilità considera molti altri aspetti.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Lei può anche usare il calcolatore web per singoli controlli interattivi.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/color/contrast-ratio-wcag \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"foreground":"#111827","background":"#ffffff"}'const res = await fetch("https://api.kit.forhosting.com/color/contrast-ratio-wcag", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"foreground": "#111827",
"background": "#ffffff"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/contrast-ratio-wcag",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"foreground": "#111827",
"background": "#ffffff"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/contrast-ratio-wcag", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"foreground":"#111827","background":"#ffffff"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"foreground":"#111827","background":"#ffffff"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/contrast-ratio-wcag", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"foreground": "#111827",
"background": "#ffffff"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.contrast_ratio_wcag",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |