Menu

Sprawdzanie kontrastu WCAG

Sprawdzaj kontrast kolorów według WCAG i poprawiaj złe zestawienia jednym kliknięciem.

Autor: Nethanel Bar, Co-founder & CEO

Ostatnia aktualizacja

Chcesz naprawdę nauczyć się programować?

Coddy uczy cię przez pisanie prawdziwego kodu w przeglądarce: interaktywne lekcje, natychmiastowa informacja zwrotna i pomoc AI, gdy utkniesz.

Czym jest narzędzie do sprawdzania kontrastu kolorów WCAG?

*Contrast checker* to narzędzie, po które projektanci i programiści sięgają przed wdrożeniem ekranu. Oblicza **współczynnik kontrastu** między dwoma kolorami, czyli tekstem i tłem za nim, według wzoru zdefiniowanego w wytycznych Web Content Accessibility Guidelines (WCAG). Im większy współczynnik, tym łatwiej czytać tekst.

WCAG definiuje trzy progi. **3:1** to minimum dla dużych nagłówków (24px+ w zwykłej grubości lub 18.66px+ pogrubione) oraz dla widocznych krawędzi interaktywnych elementów interfejsu, takich jak przyciski, pola formularzy i ikony. **4.5:1** to minimum AA dla zwykłego tekstu, czyli poprzeczka, do której dąży większość zespołów. **7:1** to AAA, najwyższy poziom, który mocno wspiera osoby słabowidzące.

Kontrast to **nie** to samo co wyrazistość kolorów. Dwa mocne kolory marki mogą być trudne do czytania, jeśli ich *luminancja* jest zbliżona. To narzędzie stosuje wzór WCAG na luminancję do każdego kanału, podaje dokładny współczynnik i ocenia każdy kontekst, więc nie musisz zgadywać.

Czego nauczysz się, sprawdzając kontrast

  • Współczynniki kontrastu wynoszą od 1:1 (identyczne kolory) do 21:1 (czysta czerń na czystej bieli). Codzienne pary kolorów marki zwykle mieszczą się między 2:1 a 12:1.
  • WCAG używa *luminancji względnej*, a nie postrzeganej jasności: żółty na białym może wyglądać dobrze, a i tak nie przejść przy 1.3:1.
  • Duży tekst ma łagodniejszy próg (3:1 dla AA), bo większe znaki łatwiej rozpoznać przy danym poziomie kontrastu.
  • Przyciski, obramowania formularzy i ikony muszą osiągać 3:1 względem sąsiedniego tła. To zasada *kontrastu elementów nietekstowych* dodana w WCAG 2.1.
  • Zmiana *jasności* (a nie odcienia) to najbezpieczniejszy sposób, by naprawić nieprzechodzącą parę bez zmiany koloru marki.

Jak krok po kroku sprawdzić kontrast kolorów

  1. Wpisz dwa kolory

    Wpisz lub wklej wartość HEX albo użyj próbnika kolorów. Pierwszy plan to tekst lub ikona, a tło to to, co znajduje się za nimi.

  2. Odczytaj współczynnik kontrastu

    Duża liczba po lewej to współczynnik kontrastu WCAG. Wszystko poniżej 3:1 jest ryzykowne dla każdego interfejsu, a poniżej 4.5:1 nie przechodzi dla zwykłego tekstu.

  3. Sprawdź oceny AA/AAA

    Trzy wiersze pokazują wynik dla zwykłego tekstu (4.5/7), dużego tekstu (3/4.5) i elementów interfejsu (3:1). Celuj w zielone znaczniki w każdym wierszu, którego faktycznie używa twój projekt.

  4. Kliknij "Dopasuj pierwszy plan", jeśli wiersz nie przechodzi

    Gdy AA nie przechodzi, narzędzie może rozjaśnić lub przyciemnić kolor pierwszego planu, zachowując odcień, aż para przejdzie. Kliknij ponownie, aby osiągnąć AAA.

  5. Skopiuj końcową parę

    Gdy oba kolory przechodzą w potrzebnych kontekstach, skopiuj fragment CSS (color: + background:) i wklej go do arkusza stylów lub pliku z tokenami projektowymi.

Progi kontrastu WCAG w skrócie

Zestaw to, co stylujesz, z wymaganym poziomem. Źródło: WCAG 2.2 Understanding 1.4.3 i 1.4.11.

ElementMinimum AAMinimum AAAUwagi
Zwykły tekst (< 18pt w zwykłej grubości)4.5 : 17 : 1Domyślna zasada dla akapitów, etykiet i podpisów
Duży tekst (≥ 18pt w zwykłej grubości lub ≥ 14pt pogrubiony)3 : 14.5 : 1Nagłówki, teksty hero, duże cytaty
Elementy interfejsu i obiekty graficzne3 : 1-Obramowania przycisków, pola formularzy, ikony, obwódki fokusu
Logo lub czysta dekoracjaZwolnioneZwolnioneLogotypy i przypadkowy tekst są zwolnione, ale użyteczność wciąż się liczy
Stan nieaktywnyZwolnioneZwolnioneNieaktywne kontrolki są zwolnione, ale nie traktuj tego jako wymówki dla domyślnie niskiego kontrastu

Przykłady kontrastu do wypróbowania

Przechodząca para: ciemne na jasnym

Zwykły tekst, spokojnie AA + AAA
color: #1f2937;       /* slate-800 */background: #f9fafb;  /* slate-50  *//* Contrast ratio ≈ 14.6:1 */

Klasyczny ciemny łupek na prawie białym tle. Przechodzi AAA dla zwykłego tekstu (≥ 7:1) z dużym zapasem. Większość interfejsów produktowych powinna domyślnie celować w te okolice.

Niebieski marki, który *minimalnie* nie przechodzi AA

Wygląda mocno, ale matematyka mówi nie
color: #3b82f6;       /* blue-500 */background: #ffffff;/* Contrast ratio ≈ 4.0:1 */

Żywe niebieskie na białym często lądują w okolicach 4:1: czytelne dla dużych nagłówków (przechodzą 3:1 AA dla dużego tekstu), ale nie przechodzą progu 4.5:1 dla zwykłego tekstu. Używaj ich do przycisków i etykiet CTA od 18px w górę, a nie do akapitów.

Żółty, który wygląda dobrze, a nie jest

Oko kłamie, luminancja nie
color: #facc15;       /* amber-400 */background: #ffffff;/* Contrast ratio ≈ 1.6:1 */

Jaskrawy żółty na białym to słynna pułapka: kolory wyglądają głośno, ale ich luminancja jest zbyt zbliżona. To połączenie nie przechodzi żadnego progu. Zostaw je dla ciemnych teł (np. #facc15 na #1f2937 daje ≈ 12:1).

Częste błędy przy kontraście

  • Ufanie oczom zamiast współczynnikowi. Jaskrawe, nasycone kolory mogą wydawać się "mocne", a mimo to nie przechodzić obliczeń WCAG.
  • Zapominanie, że cienkie i lekkie kroje pisma w praktyce *obniżają* kontrast, bo na piksel przypada mniej tuszu. Przy bardzo cienkich krojach podnieś współczynnik.
  • Sprawdzanie tylko względem czystej bieli. Prawdziwe tła są złamaną bielą, gradientem lub zdjęciem, więc sprawdź kontrast z faktycznym kolorem pod tekstem.
  • Ustawianie tekstu placeholder i disabled blisko granicy WCAG. Oba są zwolnione z WCAG, ale zwolnione nie znaczy czytelne.
  • Pomijanie zasady 3:1 dla elementów *nietekstowych*. Przyciski znikające w tle, pola formularzy bez widocznej ramki i niewidoczne obwódki fokusu to najczęstsze naruszenia dostępności zaraz po niskim kontraście zwykłego tekstu.

Kontrast kolorów WCAG: FAQ

Jaki współczynnik kontrastu kolorów jest dobry?
Celuj w co najmniej 4.5:1 dla zwykłego tekstu i 3:1 dla dużych nagłówków lub interaktywnych elementów interfejsu. 7:1 to cel AAA: surowy, ale wart dążenia w kluczowych miejscach do czytania, takich jak dokumentacja, instrukcje i komunikaty o błędach.
Czym różni się AA od AAA?
AA to prawna podstawa dostępności, której wymaga większość przepisów (WCAG 2.1/2.2 AA). AAA to surowszy cel dla organizacji, które chcą wspierać osoby słabowidzące. AAA nie jest wymagane, ale dla zwykłego tekstu to rozsądny cel.
Co w WCAG liczy się jako "duży tekst"?
WCAG definiuje duży tekst jako 18pt lub więcej (około 24px) w zwykłej grubości albo 14pt lub więcej (około 18.66px) pogrubiony. Duży tekst potrzebuje tylko 3:1, aby przejść AA, a mniejszy tekst 4.5:1.
Dlaczego kolor mojej marki nie przechodzi testu kontrastu?
Jasne barwy o średnim tonie, zwłaszcza niebieskie, żółte i czerwone przy jasności ~50%, często lądują tuż poniżej 4.5:1 na białym. Rozwiązaniem jest zwykle przyciemnienie pierwszego planu (lub użycie koloru jako tła pod białym tekstem). Użyj przycisku "Dopasuj pierwszy plan", aby znaleźć najbliższy przechodzący odcień.
Czy nieaktywne kontrolki muszą spełniać wymagania kontrastu WCAG?
Nie, nieaktywne kontrolki i czysta dekoracja są wprost zwolnione. Ale "zwolnione" to nie to samo co "dobry UX". Jeśli użytkownik nie odróżni nieaktywnego przycisku od tła, nie będzie wiedział, że on istnieje.

Dowiedz się więcej

Inne narzędzia dla programistów

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ