Poprawna jest wartość 4,5 : 1, bo dokładnie taki minimalny współczynnik kontrastu dla tekstu o standardowym rozmiarze określają wytyczne WCAG 2.0 i 2.1 na poziomie AA (kryterium sukcesu 1.4.3 „Contrast (Minimum)”). Chodzi tu o kontrast pomiędzy kolorem tekstu a kolorem tła, liczony jako stosunek jasności (luminancji względnej) tych dwóch kolorów. Im wyższy współczynnik, tym większa różnica i tym łatwiej odczytać treść osobom z osłabionym wzrokiem, np. z zaćmą, jaskrą czy po prostu osobom starszym. Moim zdaniem to jest jedna z najważniejszych zasad dostępności, bo dotyczy absolutnej podstawy – czy w ogóle da się tekst przeczytać bez wysiłku. W praktyce oznacza to, że np. jasnoszary tekst na białym tle, który „ładnie wygląda” w projekcie graficznym, bardzo często nie spełnia 4,5 : 1 i jest po prostu nieczytelny. Z kolei klasyczne połączenie #000000 (czarny) na #FFFFFF (biały) ma kontrast 21 : 1, czyli znacznie powyżej wymaganego minimum. Warto pamiętać, że dla większego tekstu (min. 18 px lub 14 px pogrubiony) próg jest niższy – 3 : 1, ale w pytaniu mowa wyraźnie o tekście standardowym. W codziennej pracy dobrze jest używać automatycznych narzędzi (np. WebAIM Contrast Checker, wtyczki do przeglądarek, funkcje w Figma/Adobe XD), które potrafią policzyć kontrast na podstawie kodów kolorów w formacie HEX lub RGB i od razu powiedzą, czy mamy poziom AA, czy nie. Z mojego doświadczenia przy tworzeniu serwisów WWW najlepiej od razu w fazie projektowania UI przyjąć zasadę: wszystkie podstawowe teksty (paragrafy, linki, etykiety formularzy) muszą mieć przynajmniej 4,5 : 1. To ułatwia życie front-endowcom i zmniejsza ryzyko, że podczas audytu dostępności trzeba będzie zmieniać całą paletę barw. Dobrą praktyką jest też zapisanie tych wymogów w design systemie lub w style guide, żeby każdy w zespole (grafik, front-end, product owner) rozumiał, że kontrast to nie „opcja estetyczna”, tylko wymóg dostępności i często także wymóg prawny.
W tym pytaniu łatwo wpaść w pułapkę myślenia, że „jakikolwiek” kontrast wystarczy, by tekst był czytelny. Warto jednak oprzeć się na twardych definicjach z WCAG 2.x, a nie na subiektywnym wrażeniu, że coś „da się przeczytać”. Propozycje niższych wartości kontrastu, takich jak 1,5 : 1, 2,0 : 1 czy 2,5 : 1, odzwierciedlają typowy błąd: ocenianie czytelności tylko własnymi oczami, najczęściej osoby młodej, bez problemów ze wzrokiem, siedzącej przy dobrym monitorze i w dobrych warunkach oświetleniowych. Współczynniki zbyt niskie, rzędu 1,5 : 1 czy 2,0 : 1, oznaczają bardzo małą różnicę jasności między tekstem a tłem. Na ekranie będzie to wyglądało jak delikatne „rozmycie” tekstu w tle. Osoby z obniżonym kontrastem widzenia, z wadami refrakcji, a nawet użytkownicy korzystający ze słabszych ekranów lub w mocnym słońcu, zwyczajnie nie odczytają takiego tekstu bez dużego wysiłku. To nie jest tylko kwestia komfortu – przy dłuższej pracy może to powodować zmęczenie oczu, bóle głowy i zniechęcenie do korzystania z serwisu. Warto też zauważyć, że wartości 2,5 : 1 czasem „intuicyjnie” wydają się już całkiem niezłe, szczególnie gdy projektant przyzwyczajony jest do bardzo delikatnych, pastelowych palet. Ale WCAG 2.0 i 2.1 w kryterium 1.4.3 wyraźnie mówią: dla zwykłego tekstu poziom AA wymaga minimum 4,5 : 1. Niższe liczby mogą być stosowane tylko w określonych sytuacjach, np. dla dużego tekstu (wtedy próg 3 : 1) albo na poziomie AAA, gdzie są jeszcze ostrzejsze wymagania dla niektórych elementów. Wszelkie niższe wartości dla małego tekstu są po prostu niezgodne ze standardem. Kolejny typowy błąd myślowy to mieszanie wymagań estetycznych z wymogami dostępności. Projektanci często boją się „zbyt mocnych” kontrastów, bo wydaje im się, że interfejs będzie wyglądał zbyt ciężko, zbyt ostro. Przez to sięgają po bardzo jasne szarości albo blade kolory tekstu. Tymczasem branżowe dobre praktyki projektowania dostępnych interfejsów mówią jasno: kontrast minimum 4,5 : 1 dla podstawowego tekstu to absolutne minimum, a w wielu serwisach (np. administracja publiczna, systemy B2B używane godzinami) warto iść jeszcze wyżej. Trzymanie się zbyt niskich wartości nie tylko łamie standard WCAG, ale też realnie wyklucza część użytkowników z komfortowego korzystania z serwisu.