Kontrastmatrix für Farbpaletten
Eine Farbpalette kann stimmig wirken und dennoch Kombinationen enthalten, die Text schwer oder gar nicht lesbar machen.
Im Browser ausführen – kostenlos
Diese Matrix berechnet die relative Leuchtdichte nach WCAG 2 für jede angegebene Hex-Farbe, vergleicht sämtliche Farben miteinander und gibt die Ergebnisse als stabile quadratische Matrix zurück. Design-, Entwicklungs- und Barrierefreiheitsteams können damit die gesamte Palette eines Designsystems auf einmal untersuchen, anstatt jedes Paar einzeln zu prüfen. Eingaben werden validiert, Farben normalisiert und das deterministische Ergebnis eignet sich für automatisierte Audits sowie versionierte Berichte.
Lesen Sie die Matrix mit eindeutigem Farbbezug
Übermitteln Sie eine Liste mit zwei bis einhundert Hex-Farben. Drei- und sechsstellige Formen werden mit oder ohne führendes Rautezeichen akzeptiert; jeder gültige Wert wird als sechsstelliger Kleinbuchstabencode normalisiert. Die Antwort führt diese Farben in unveränderter Reihenfolge auf und weist jeder einen Index zu. Zeilen und Spalten verwenden genau diese Reihenfolge, sodass der Wert in Zeile zwei und Spalte fünf den Kontrast zwischen den Farben mit den Indizes zwei und fünf bezeichnet. Die Diagonale beträgt stets 1, da eine Farbe zu sich selbst keinen Kontrast hat. Die Matrix ist symmetrisch, weil ein Vertauschen von Vorder- und Hintergrund das WCAG-Verhältnis nicht ändert. Angezeigte Verhältnisse werden für eine stabile Ausgabe auf zwei Dezimalstellen gerundet, Leuchtdichten auf sechs. Doppelte Farben bleiben getrennte Positionen; dadurch lassen sich semantisch unterschiedliche Tokens mit demselben Wert prüfen. Dieses Positionsmodell erleichtert die Darstellung als Tabelle, die Ablage als Auditnachweis und den Vergleich verschiedener Versionen.
Verstehen Sie Berechnung und WCAG-Grenzwerte
Die Berechnung folgt dem Verfahren für relative Leuchtdichte nach WCAG 2 bei sRGB-Farben. Jeder rote, grüne und blaue Kanal wird vom codierten sRGB-Wert in lineares Licht umgerechnet und anschließend mit den Standardkoeffizienten kombiniert. Für jedes Paar wird die hellere Leuchtdichte plus 0.05 durch die dunklere Leuchtdichte plus 0.05 geteilt; daraus entsteht ein Verhältnis von 1 bis 21. Die Antwort enthält die bekannten WCAG-Grenzwerte: 4.5 für normalen Text nach AA, 7 für normalen Text nach AAA, 3 für großen Text nach AA und 4.5 für großen Text nach AAA. Vergleichen Sie jede Zelle mit dem zum tatsächlichen Inhalt und Schriftbild passenden Wert. Ein Verhältnis allein weist keine vollständig barrierefreie Oberfläche nach, denn Schriftgröße, Gewicht, Interaktionszustände, nicht textliche Elemente und Nutzungskontext bleiben relevant. Das Werkzeug liefert deshalb numerische Nachweise statt eines pauschalen Urteils, damit Sie für jede vorgesehene Kombination die richtige Regel anwenden können.
Nutzen Sie deterministische Ergebnisse in Designaudits
Eine vollständige Matrix entfaltet ihren größten Nutzen bei wiederholbaren Palettenprüfungen. Halten Sie eine dokumentierte Reihenfolge ein, etwa neutrale Farben vor Marken-, Status- und Akzent-Tokens, und speichern Sie die Matrix zusammen mit der Designsystemversion. Eine kontinuierliche Integrationsprüfung kann ausgewählte Zellen mit vorgeschriebenen Grenzwerten vergleichen, während Prüfende die gesamte Tabelle nach unerwartet schwachen Kombinationen durchsuchen. Da der Algorithmus weder Netzwerk, Zufall, aktuelle Uhrzeit, Browserstile noch Schätzungen zu Farbprofilen verwendet, erzeugen identische JSON-Eingaben identische JSON-Ausgaben. Ungültige Listenformen, zu große oder kleine Paletten und fehlerhafte Hex-Werte werden mit einem eindeutigen Index abgelehnt. Die Obergrenze von einhundert Farben beschränkt die quadratische Matrix auf zehntausend Zellen. Klären Sie Transparenz und Überlagerung vor dem Aufruf: Alphafarben werden abgelehnt, weil ihr sichtbares Ergebnis vom Hintergrund abhängt. Wandeln Sie Farbnamen, HSL, Wide-Gamut-Werte und Designwerkzeug-Objekte zuerst in deckendes sRGB-Hex um, damit jedes Audit auf einer eindeutigen, reproduzierbaren Grundlage beruht.
Anwendungsfälle
Design-Tokens auditieren
Erzeugen Sie vor einer Designsystemversion eine indexierte Matrix für Marken-, Flächen-, Text-, Rand- und Status-Tokens.
Theme-Migrationen prüfen
Vergleichen Sie die Matrizen alter und neuer Paletten, um Kombinationen mit verschlechtertem Kontrast nach einer Neugestaltung zu finden.
Barrierefreiheitsprüfung automatisieren
Übergeben Sie stabile Verhältnisse an Regeln der kontinuierlichen Integration, die passende WCAG-Grenzwerte für genehmigte Token-Paare erzwingen.
Häufige Fragen
Was kostet eine Anfrage?
Der API-Grundpreis beträgt $0.002 pro Anfrage.
Welche Farbformate werden akzeptiert?
Akzeptiert werden deckende drei- oder sechsstellige sRGB-Hex-Farben mit oder ohne führendes Rautezeichen. Alpha, Farbnamen, HSL und Wide Gamut werden abgelehnt.
Wie sind Zeilen und Spalten den Farben zugeordnet?
Beide Achsen folgen der ursprünglichen Eingabereihenfolge. Jede ausgegebene Farbe enthält ihren Index; matrix[row][column] ist das Verhältnis dieser beiden Farben.
Warum beträgt jeder Diagonalwert 1?
Eine Farbe hat beim Vergleich mit sich selbst dieselbe Leuchtdichte, daher ergibt die WCAG-Kontrastformel stets ein Verhältnis von 1.
Beweist ein Verhältnis die Barrierefreiheit eines Designs?
Nein. Es liefert den Kontrastnachweis für WCAG-Prüfungen; Barrierefreiheit hängt außerdem von Typografie, Zuständen, Inhalt und korrekter Verwendung der Farbpaare ab.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/color/palette-contrast-matrix \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"colors":["#ffffff","#111827","#2563eb","#facc15"]}'const res = await fetch("https://api.kit.forhosting.com/color/palette-contrast-matrix", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"colors": [
"#ffffff",
"#111827",
"#2563eb",
"#facc15"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/palette-contrast-matrix",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"colors": [
"#ffffff",
"#111827",
"#2563eb",
"#facc15"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/palette-contrast-matrix", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"colors":["#ffffff","#111827","#2563eb","#facc15"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"colors":["#ffffff","#111827","#2563eb","#facc15"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/palette-contrast-matrix", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"colors": [
"#ffffff",
"#111827",
"#2563eb",
"#facc15"
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.palette_contrast_matrix",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_items | 100 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |