Zum Inhalt springen

Farbkonverter & Kontrastprüfung

Rechnet einen Farbcode in HEX, RGB, HSL, HWB, LAB, LCH und OKLCH zugleich um und prüft, ob Text- und Hintergrundfarbe den WCAG-Kontrast für AA und AAA schaffen.

Alle Formate

  • HEX#3366ff
  • RGBrgb(51, 102, 255)
  • HSLhsl(225, 100%, 60%)
  • HWBhwb(225 20% 0%)
  • LABlab(47.4 26.93 -82.47)
  • LCHlch(47.4 86.76 288.08)
  • OKLCHoklch(0.5726 0.2338 265.28)

Kontrastprüfung

Kontrastverhältnis14,67:1
AA · normaler Text (4,5:1)
✓ Bestanden
AA · großer Text (3:1)
✓ Bestanden
AAA · normaler Text (7:1)
✓ Bestanden
AAA · großer Text (4,5:1)
✓ Bestanden

Vorschau großer Text (Aa)

Dies ist ein Beispielsatz in normaler Textgröße, um den Kontrast zu prüfen.

Deine Eingaben werden nur in diesem Browser verarbeitet und nie an einen Server gesendet. So funktioniert es

Dieselbe grüne Farbe als HEX #47765F und RGB 71, 118, 95 dargestellt

So benutzt du das Tool

Oben sitzt der Farbkonverter, darunter die Kontrastprüfung. Die beiden Bereiche arbeiten unabhängig voneinander.

Farbkonverter

  1. Trag ins Feld Farbe einen CSS-Farbwert ein oder wähle links im Farbwähler eine Farbe. HEX wird mit 3, 4, 6 und 8 Stellen gelesen, das # darfst du weglassen. Bei rgb() gehen beide Schreibweisen, rgb(51, 102, 255) und rgb(51 102 255), und auch Farbnamen wie rebeccapurple funktionieren.
  2. Mit dem Regler Alpha (Deckkraft) neben dem Farbfeld stellst du die Transparenz ein. An dem Schachbrettmuster hinter dem Farbfeld, das mehr oder weniger durchscheint, erkennst du die Transparenz.
  3. Unter Alle Formate stehen sieben Zeilen: HEX, RGB, HSL, HWB, LAB, LCH und OKLCH. Jede lässt sich einzeln kopieren. Liegt das Alpha unter 100 %, kommt eine achtstellige Zeile „HEX (mit Alpha)“ hinzu.

Kontrastprüfung

  1. Gib Textfarbe und Hintergrundfarbe ein. „Farben tauschen“ vertauscht die beiden.
  2. Unter Kontrastverhältnis steht das Verhältnis. Die vier Felder darunter zeigen für jede Stufe „Bestanden“ oder „Nicht bestanden“.
  3. Ganz unten siehst du beide Farben in einer Vorschau mit großem und mit normalem Text.

Eine Farbe, sieben Schreibweisen

Aus dem voreingestellten #3366ff wird Folgendes:

Format Ergebnis Was die Zahlen bedeuten
HEX #3366ff Rot, Grün und Blau als je zwei Hex-Stellen
RGB rgb(51, 102, 255) Rot, Grün und Blau von 0 bis 255
HSL hsl(225, 100%, 60%) Farbtonwinkel, Sättigung, Helligkeit
HWB hwb(225 20% 0%) Farbtonwinkel, Weißanteil, Schwarzanteil
LAB lab(47.4 26.93 -82.47) Helligkeit, Grün-Rot-Achse, Blau-Gelb-Achse
LCH lch(47.4 86.76 288.08) Helligkeit, Buntheit, Farbtonwinkel
OKLCH oklch(0.5726 0.2338 265.28) Helligkeit, Buntheit, Farbtonwinkel

HEX und RGB sind dieselben Zahlen in zwei Zahlensystemen. HSL und HWB verteilen diese Zahlen auf Achsen, mit denen Menschen besser umgehen können. LAB, LCH und OKLCH sind Farbräume, die sich an der menschlichen Farbwahrnehmung orientieren. OKLCH ist eine Weiterentwicklung von LCH, die in der Wahrnehmung gleichmäßiger ist, und lässt sich in CSS direkt als oklch() schreiben. Obwohl es dasselbe Blau ist, beträgt der Farbtonwinkel in HSL 225, in LCH 288,08 und in OKLCH 265,28. Jeder Farbraum misst den Winkel von einem anderen Bezugspunkt aus. Überträgst du die Zahlen eines Formats in ein anderes, bekommst du eine andere Farbe.

Helligkeit in HSL und Helligkeit in OKLCH

Die Helligkeit in HSL ist der Mittelwert aus dem größten und dem kleinsten der drei Werte für Rot, Grün und Blau. Zu dem, was das Auge als hell empfindet, passt sie deshalb schlecht. Reines Gelb hsl(60 100% 50%) und reines Blau hsl(240 100% 50%) haben dieselbe HSL-Helligkeit von 50 %. Gibst du beide in den Konverter ein, zeigt sich:

  • Gelb wird zu oklch(0.968 0.211 109.77), die OKLCH-Helligkeit ist 0,968.
  • Blau wird zu oklch(0.452 0.3132 264.05), die OKLCH-Helligkeit ist 0,452.

Vor weißem Hintergrund gemessen, tritt der Unterschied offen zutage. Mit der Hintergrundfarbe #ffffff kommt Gelb #ffff00 in der Kontrastprüfung auf 1,07:1 und ist kaum zu erkennen, Blau #0000ff auf 8,59:1. Für eine Reihe von Farben, die sich nur im Farbton unterscheiden und ähnlich hell wirken sollen, gleichst du deshalb besser die OKLCH-Helligkeit an als die HSL-Helligkeit. Das Ergebnis fällt gleichmäßiger aus.

So wird der WCAG-Kontrast berechnet

Gerechnet wird mit der Formel aus WCAG 2. Für jede Farbe wird die relative Luminanz (relative luminance) bestimmt, das ist die gewichtete Summe der linearisierten Werte für Rot, Grün und Blau. Die hellere Farbe ist L1, die dunklere L2, und das Verhältnis lautet (L1 + 0,05) ÷ (L2 + 0,05). Zwei gleiche Farben ergeben 1:1, Schwarz und Weiß 21:1.

Stufe auf dem Bildschirm Nötiges Verhältnis
AA · normaler Text 4,5:1
AA · großer Text 3:1
AAA · normaler Text 7:1
AAA · großer Text 4,5:1

„Großer Text“ beginnt in normaler Schriftstärke bei 18 pt (etwa 24 px) und fett bei 14 pt (etwa 19 px). AA ist die Stufe, die die meisten Richtlinien zur Barrierefreiheit verlangen, AAA ist strenger.

  • Die voreingestellte Textfarbe #1f2937 auf der Hintergrundfarbe #ffffff kommt auf 14,67:1 und besteht alle vier Stufen.
  • Das Grau #767676 erreicht auf Weiß 4,54:1 und besteht AA für normalen Text. Das eine Stufe hellere #777777 schafft es mit 4,47:1 nicht.

Die Anzeige schneidet das Verhältnis nach der zweiten Nachkommastelle ab, statt zu runden. Sonst könnte eine Kombination mit 4,499:1 als 4,50:1 erscheinen und trotzdem als nicht bestanden markiert sein. Bewertet wird mit dem ungekürzten Wert.

Kontrast bei halbtransparenten Farben

Die WCAG-Formel kennt nur deckende Farben. Farben mit Alpha werden deshalb zuerst zu der Farbe verrechnet, die am Bildschirm tatsächlich zu sehen ist.

  • Eine halbtransparente Hintergrundfarbe gilt als auf weißen Grund gelegt.
  • Eine halbtransparente Textfarbe gilt als auf die so ermittelte Hintergrundfarbe gelegt.

Die Textfarbe rgb(0 0 0 / 50%) auf der Hintergrundfarbe #ffffff ergibt graue Schrift mit 3,97:1 und besteht nur AA für großen Text. Liegt auf deiner Seite hinter dem halbtransparenten Hintergrund kein Weiß, sondern eine andere Farbe oder ein Foto, sieht das Ergebnis anders aus. Gib in dem Fall die Hintergrundfarbe, die am Ende wirklich zu sehen ist, als deckenden Wert ein.

Farben außerhalb des sRGB-Farbraums

Mit LAB, LCH und OKLCH lassen sich auch Farben notieren, die ein gewöhnlicher sRGB-Bildschirm nicht darstellen kann. oklch(70% 0.3 150) ist so eine Farbe. Gibst du sie ein, meldet das Tool, dass sie außerhalb des sRGB-Farbraums liegt, und die Ergebnisse sehen so aus:

  • HEX ist #00cb00, RGB ist rgb(0, 203, 0). Das ist nicht die eingegebene Farbe, sondern eine auf den sRGB-Bereich beschnittene.
  • Die Zeilen LAB, LCH und OKLCH enthalten die ursprüngliche, unbeschnittene Farbe.
  • Die Zeilen HSL und HWB übertragen wie HEX und RGB die beschnittene Farbe in ihr Format. Dort steht hsl(120, 100%, 39.84%) und hwb(120 0% 20.32%), Zahlen außerhalb des gültigen Bereichs kommen nicht vor.

Auch das Farbfeld und der Farbwähler zeigen die beschnittene Farbe.

Quellen

Häufige Fragen

Ich habe den Alpha-Regler bewegt, und mein eingegebener Wert wurde zu rgb().

Der Regler schreibt den Wert im Eingabefeld neu, und zwar als rgb() mit Alpha. Gibst du oklch(62% 0.19 259) ein und ziehst den Regler auf 50 %, steht im Feld danach rgba(53, 129, 246, 0.5). Die ursprüngliche Schreibweise kehrt nicht zurück. Brauchst du also einen OKLCH-Wert mit Alpha, dann kopiere nach dem Verschieben die OKLCH-Zeile unter „Alle Formate“. Eine Farbe außerhalb des sRGB-Farbraums wird dabei auf einen Wert innerhalb des Farbraums beschnitten.

Ich habe #3366ff80 eingegeben, und als Alpha erscheint 0.5. Sind das genau 50 %?

Die letzten beiden Stellen eines 8-stelligen HEX-Werts, hier 80, bedeuten Stufe 128 von 255, und 128 ÷ 255 = 0,50196… Das sind nicht genau 50 %. Die Zeilen RGB, HSL, HWB, LAB, LCH und OKLCH runden das Alpha alle auf zwei Nachkommastellen und zeigen 0.5. Brauchst du genau 0.5, gib das Alpha in Prozent oder als Dezimalzahl ein, etwa rgb(51 102 255 / 50%).

Ändert sich das Kontrastverhältnis, wenn ich Textfarbe und Hintergrundfarbe vertausche?

Sind beide Farben deckend, bleibt es gleich: #3366ff und #ffffff ergeben 4,68:1, egal welche von beiden die Textfarbe ist. Mit einer halbtransparenten Farbe kann es sich ändern. Textfarbe rgb(255 255 255 / 50%) auf Hintergrundfarbe #000000 ergibt 5,28:1. Drehst du das mit „Farben tauschen“ um, wird der halbtransparent weiße Hintergrund auf weißem Grund schlicht zu Weiß, und heraus kommt 21:1.

Warum werden Werte in oklab() oder color(display-p3 …) nicht gelesen?

Das Tool liest HEX, rgb(), hsl(), hwb(), lab(), lch(), oklch(), Farbnamen und transparent. Die Funktionen oklab() und color(), Schlüsselwörter wie currentColor und Variablen in var() liest es nicht. Dann erscheint der Hinweis „Das sieht nicht nach einer Farbe aus.“ Einen OKLab-Wert musst du als dieselbe Farbe in oklch() umschreiben und so eingeben.

Verwendete Open-Source-Software: culori (MIT)

Zuletzt aktualisiert: