Il testo è leggibile sullo sfondo?
Scopra se un testo sarà leggibile sul suo sfondo: #111827 su bianco a 16 px ha un contrasto di 17.74 e supera AA e AAA. Dimensione e peso del carattere decidono se vale il minimo per il testo grande. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Colore
- #111827
- Sfondo
- #ffffff
- Dimensione
- 16
- Unità di dimensione
- Px
- Dimensione (pt)
- 12
- Dimensione (px)
- 16
- Scala del testo
- normal
Progettisti e ingegneri hanno spesso bisogno di un sì o no a una domanda ingannevolmente semplice: questo colore di testo, a questa dimensione, è davvero leggibile su quello sfondo? Un rapporto di contrasto da solo non chiude il caso, perché le Web Content Accessibility Guidelines trattano il corpo grande con più indulgenza del testo corrente. Questo controllore prende un colore hex di testo, un colore hex di sfondo e una dimensione del carattere, classifica il campione come normal o large con la regola pubblicata di diciotto punti oppure quattordici punti in grassetto, poi confronta il rapporto ufficiale di contrasto per luminanza relativa con il minimo del livello che Lei ha chiesto. Il verdetto è un booleano chiamato legible, più il rapporto, la soglia e la classe di scala, così Lei può mostrare l’aritmetica accanto alla risposta.
Come si decide la leggibilità WCAG in base alla dimensione
Le Web Content Accessibility Guidelines non trattano ogni glifo allo stesso modo. Il corpo a sedici pixel ha un dovere di contrasto più stretto di un titolo a ventiquattro pixel, perché le forme più grandi restano leggibili con un divario di luminanza minore. Questo controllore trasforma quella regola in un solo booleano.
Analizza il colore del testo e quello dello sfondo come hex sRGB opaco, linearizza ogni canale a otto bit con la curva ufficiale a tratti e costruisce la luminanza relativa con i pesi 0.2126, 0.7152 e 0.0722. Il rapporto di contrasto è la luminanza più chiara più 0.05 divisa per la più scura più 0.05.
In parallelo converte la dimensione fornita in punti CSS, dove un punto equivale a quattro terzi di un pixel, e classifica il campione come large quando raggiunge almeno diciotto punti, oppure almeno quattordici punti ed è segnato in grassetto. Il corpo grande richiede un minimo di tre a uno per AA e di quattro virgola cinque a uno per AAA; il corpo normale richiede quattro virgola cinque e sette. Il livello richiesto sceglie uno di quei quattro pavimenti.
Il rapporto non arrotondato è confrontato con il pavimento così un 4.50 mostrato non fa passare un 4.499 sotto AA. Nulla è inferito da CSS, da catture o da una pagina dal vivo: Lei indica la coppia e la dimensione e ottiene un verdetto riproducibile per ticket, token di design e cancelli automatici.
Dove un controllo sì o no in base alla dimensione rende
I team di prodotto incontrano questa domanda quando un grigio di marca appare elegante su una diapositiva ma fallisce come corpo a sedici pixel su una scheda bianca, o quando un titolo a ventiquattro pixel passerebbe AA mentre la stessa coppia fallirebbe su un’etichetta di modulo. I progettisti incollano un hex di token, la superficie dietro e la dimensione della scala, poi leggono un solo indicatore legible prima di fissare la coppia.
Gli ingegneri collegano il contratto a controlli di pull request che bloccano un token di corpo quando il tipo regolare a sedici pixel scende sotto 4.5 a 1, eppure lasciano che un titolo hero a diciotto punti usi il pavimento di testo grande di 3 a 1. Gli specialisti di qualità e accessibilità allegano il rapporto numerico, la scala classificata e il booleano ai ticket così la correzione punta alla coppia e alla dimensione reali, non a una congettura da cattura.
I team di marketing verificano gli hex di campagna contro lo sfondo del sito alla dimensione reale della didascalia, non a una dimensione di intestazione immaginata. In questa pagina il lavoro gira interamente nel Suo browser. Abbini questo verdetto a uno scanner di accessibilità a pagina intera quando deve perlustrare il markup dal vivo, e a una matrice di rapporti di contrasto quando vuole tutte le bandiere AA e AAA di entrambe le scale insieme.
Usi questa pagina quando l’intento di ricerca è proprio se quel testo, a quella dimensione, è sicuro su quello sfondo.
Casi d'uso
Corpo contro titolo con la stessa coppia hex
Verifichi se un token grigio su bianco che fallisce a 16px di corpo passa ancora come testo grande a 24px prima di riusarlo su un hero.
Cancelli CI che conoscono la scala tipografica
Faccia fallire una pull request quando un colore primario di corpo a 16px regular scende sotto AA 4.5:1, mentre i titoli usano il pavimento di testo grande.
Prova nel ticket con un verdetto sì o no
Alleghi il booleano, il rapporto e la scala classificata a un difetto di accessibilità così la correzione punta alla dimensione reale, non a una cattura.
Domande frequenti
Come si sa se un testo è leggibile su uno sfondo?
Invii l’hex del testo, l’hex dello sfondo e la dimensione del carattere.
Che cosa conta come testo grande?
Il testo a grande scala secondo WCAG è almeno 18 point, oppure almeno 14 point e grassetto. Questo strumento converte i pixel CSS con 1pt = 4/3 px, quindi 24px regular e 18.67px grassetto sono large.
Quale minimo di contrasto viene usato?
Testo normale: AA 4.5:1 e AAA 7:1. Testo grande: AA 3:1 e AAA 4.5:1. Il livello richiesto (aa per impostazione predefinita) sceglie un pavimento; le bandiere usano il rapporto non arrotondato.
Quanto costa il controllo di leggibilità su uno sfondo?
È gratis nel Suo browser in questa pagina.
Perché un titolo passa mentre gli stessi colori falliscono nel testo corrente?
Il testo grande ha un minimo più basso: 3 a 1 per AA invece di 4.5 a 1. Un titolo da 24 pixel conta come grande a 18 punti, mentre il testo da 16 pixel è normale e deve rispettare la soglia più severa.
Strumenti correlati
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/safe-on-background \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#111827","background":"#ffffff","size":16}'const res = await fetch("https://api.kit.forhosting.com/color/safe-on-background", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#111827",
"background": "#ffffff",
"size": 16
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/safe-on-background",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#111827",
"background": "#ffffff",
"size": 16
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/safe-on-background", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#111827","background":"#ffffff","size":16}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#111827","background":"#ffffff","size":16}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/safe-on-background", 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
{
"color": "#111827",
"background": "#ffffff",
"size": 16
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.safe_on_background",
"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.
Limiti
max_color_chars | 32 |
max_size | 500 |
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. |
Note tecniche
La stessa funzione pura gira gratis nel browser e sull’API a $0.002 per chiamata riuscita. Un hex non valido, una dimensione assente o una dimensione non positiva falliscono con invalid_input e non vengono addebitati.
Come si decide la leggibilità WCAG in base alla dimensione
Il payload segnala allora legible, il rapporto arrotondato a due decimali, il minimo applicato, se la scala classificata passerebbe AA e AAA, e un’etichetta di metodo wcag_relative_luminance.
Contratto di ingresso, unità e convalida
Entrambi devono essere #RGB o #RRGGBB, con o senza cancelletto iniziale, senza distinzione di maiuscole, e di al massimo trentadue caratteri. Una convalida fallita non viene addebitata. Invii un oggetto JSON con tre campi obbligatori. color è l’hex del testo; è accettato anche come text_color, foreground, fg o text. background è l’hex della superficie; è accettato anche come background_color o bg. I suffissi alfa, le funzioni rgb(), le funzioni hsl() e i colori CSS con nome sono rifiutati con invalid_input che nomina il campo. size è un numero finito positivo non maggiore di cinquecento; font_size è un alias. size_unit vale px per impostazione predefinita (pixel CSS) e può essere pt (punti CSS). La conversione è esatta: diciotto punti sono ventiquattro pixel, e quattordici punti sono diciotto e due terzi di pixel. bold vale false per impostazione predefinita e accetta un booleano o le stringhe true e false; a quattordici punti o più, il grassetto sposta il campione nella classe di testo grande. level vale aa per impostazione predefinita e deve essere aa o aaa. In caso di successo la risposta ecoa gli hex minuscoli normalizzati, la dimensione che Lei ha inviato, size_pt e size_px, bold, text_scale come normal o large, il livello richiesto, minimum_ratio, contrast_ratio, passes_aa, passes_aaa e il booleano legible. Non c’è chiamata di rete, né orologio, né campione casuale: lo stesso trio di color, background e size produce sempre lo stesso verdetto nello strumento gratuito del browser e sull’API.
Dove un controllo sì o no in base alla dimensione rende
Tramite l’API ogni consultazione riuscita costa $0.002; un ingresso non valido non viene addebitato; nulla viene conservato dopo la risposta.
Domande tecniche
Quali formati di colore sono accettati?
Solo hex: #RGB o #RRGGBB, con o senza cancelletto iniziale. rgb(), hsl(), colori con nome e hex con alfa sono rifiutati con invalid_input.