WCAG-Farbkontrast berechnen
Dieser Rechner vergleicht eine Vordergrund- mit einer Hintergrundfarbe nach der WCAG-Methode für relative Luminanz.
Im Browser ausführen – kostenlos
Er liefert die Luminanz beider Farben, das daraus entstehende Kontrastverhältnis sowie eindeutige AA- und AAA-Ergebnisse für normalen und großen Text. Sie können damit Design-Tokens prüfen, Oberflächenfarben vor der Veröffentlichung validieren oder einen wiederholbaren Barrierefreiheitstest in einen automatisierten Ablauf aufnehmen. Die Eingaben sind eindeutige Hexadezimalfarben, alle Berechnungen sind deterministisch und ungültige Formate führen zu einer verständlichen Fehlermeldung. Das Browserwerkzeug eignet sich für einzelne Prüfungen; jeder Aufruf über die API kostet $0.002.
Verstehen Sie die ausgegebenen Werte
Das Ergebnis normalisiert zunächst beide Eingaben als sechsstellige, kleingeschriebene Hexadezimalfarben. Eine Kurzform wie #fff wird daher einheitlich als #ffffff ausgegeben. Danach sehen Sie die relative Luminanz von Vorder- und Hintergrund. Sie reicht von null für Schwarz bis eins für Weiß und wird aus linearisierten sRGB-Kanälen abgeleitet, die entsprechend der unterschiedlichen Empfindlichkeit des Auges für rotes, grünes und blaues Licht gewichtet werden. Das Kontrastverhältnis vergleicht die hellere mit der dunkleren Luminanz und reicht von 1:1 bei identischen Farben bis 21:1 bei Schwarz und Weiß. Der sichtbare Wert wird auf zwei Dezimalstellen gerundet, jede Einstufung verwendet jedoch den vollständigen ungerundeten Wert. Dadurch besteht ein als 4.50 angezeigtes Ergebnis nicht, wenn sein tatsächlicher Wert noch unter 4.5 liegt. Die Antwort bündelt vier boolesche Werte für normalen und großen Text. Diese lassen sich einem Designteam verständlich zeigen oder direkt in automatisierten Tests gegen eine Richtlinie prüfen.
Geben Sie gültige Farben ein und deuten Sie AA und AAA
Geben Sie Vorder- und Hintergrund als drei- oder sechsstellige Hexadezimalfarben mit oder ohne vorangestelltes Rautezeichen ein. Werte wie #123, 123, #112233 und AABBCC werden akzeptiert und normalisiert. CSS-Farbnamen, rgb()- oder hsl()-Ausdrücke, vier- oder achtstellige Hexwerte mit Alphakanal, leere Zeichenfolgen und andere Datentypen werden abgelehnt, weil Deckkraft und Komposition zusätzlichen Kontext benötigen. Für normalen Text verlangt WCAG AA mindestens 4.5:1 und AAA mindestens 7:1. Bei großem Text benötigt AA 3:1 und AAA 4.5:1. Als groß gilt gewöhnlich Text ab 18 Punkt in Normalschnitt oder 14 Punkt in Fettschrift. Die Fähigkeit untersucht die Typografie jedoch nicht; sie gibt beide Matrizen aus, damit Ihre Anwendung die passende auswählt. Ein bestandener Farbwert ist nur ein Teil einer Barrierefreiheitsprüfung und belegt nicht, dass eine gesamte Oberfläche barrierefrei ist.
Nutzen Sie Kontrastergebnisse in Design- und Lieferabläufen
Beginnen Sie mit den tatsächlichen Vordergrund- und Hintergrund-Tokens der Komponente statt mit Farben aus einem komprimierten Bildschirmfoto. Vergleichen Sie bei einer manuellen Prüfung Fließtext, Sekundärtext, Links, Schaltflächenbeschriftungen, Formularhinweise, Fokusmarkierungen und deaktivierte Zustände mit allen Flächen, auf denen sie erscheinen. Pflegen Sie in einem Designsystem eine kleine Matrix freigegebener Paare und rufen Sie die API bei jeder Palettenänderung auf. Eine kontinuierliche Integrationsprüfung kann ein vorgeschlagenes Paar ablehnen, wenn AA für normalen Text falsch ist, während eine dekorative oder groß gesetzte Kombination nach einer dokumentierten Regel zulässig bleibt. Speichern Sie normalisierte Farben und Verhältnis zusammen mit dem Testergebnis, damit Prüfer den Befund reproduzieren können. Jeder automatisierte Aufruf kostet $0.002; ungültige Eingaben liefern einen Fehler. Da der Algorithmus weder Netzwerk noch Zufall oder aktuelle Zeit nutzt, erzeugt dasselbe Paar immer dasselbe Ergebnis. Ermitteln Sie bei Transparenz, Verläufen, Fotos oder interaktiven Zuständen zuerst die gerenderten Farben oder verwenden Sie eine Browserprüfung mit vollständigem Seitenkontext.
Anwendungsfälle
Design-Tokens prüfen
Vergleichen Sie Text- und Flächen-Tokens, bevor Sie ein helles oder dunkles Farbschema veröffentlichen.
Änderungsanträge absichern
Lassen Sie eine automatische Prüfung fehlschlagen, sobald ein geändertes Paar die erforderliche Textstufe verfehlt.
Barrierefreiheitsbefunde dokumentieren
Ergänzen Sie Ticket oder Prüfbericht um normalisierte Farben, Luminanzen und ein reproduzierbares Verhältnis.
Häufige Fragen
Welche Farbformate können Sie verwenden?
Verwenden Sie drei- oder sechsstellige Hexadezimalfarben mit oder ohne Rautezeichen. Alpha, Namen, rgb() und hsl() werden nicht akzeptiert.
Welche WCAG-Grenzwerte gelten?
Normaler Text verwendet 4.5:1 für AA und 7:1 für AAA. Großer Text verwendet 3:1 für AA und 4.5:1 für AAA.
Beruht das Bestehen auf dem gerundeten Verhältnis?
Nein. Nur die Anzeige wird gerundet; die Kennzeichen vergleichen den vollständig berechneten Wert mit jedem Grenzwert.
Macht ein bestandenes Paar die Seite WCAG-konform?
Nein. Es bestätigt nur den Kontrast der beiden angegebenen deckenden Farben. Eine vollständige Prüfung umfasst wesentlich mehr.
Was kostet ein API-Aufruf?
Jeder API-Aufruf kostet $0.002. Für einzelne interaktive Prüfungen können Sie auch den Browserrechner verwenden.
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/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)Beispiel-Anfrage
{
"foreground": "#111827",
"background": "#ffffff"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.contrast_ratio_wcag",
"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.
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. |