Pack Camo

Проверка контрастности цветов по WCAG

Check text and background colours against WCAG AA and AAA. Всё выполняется локально — ничего не отправляется на сервер.

Вход
Two colours
Выход
Contrast ratio · AA / AAA verdicts
Текст
Фон

Контрастность

#777777 / #ffffff

Коэффициент контрастности

4.48:1

Проходит только для крупного текста и графики интерфейса.

  • AA · Обычный текст

    WCAG 1.4.3 · AA · 4.5:1

    Не проходит
  • AA · Крупный текст

    WCAG 1.4.3 · AA · 3:1

    Проходит
  • AAA · Обычный текст

    WCAG 1.4.6 · AAA · 7:1

    Не проходит
  • AAA · Крупный текст

    WCAG 1.4.6 · AAA · 4.5:1

    Не проходит
  • Элементы интерфейса и графика

    WCAG 1.4.11 · AA · 3:1

    Проходит

Ближайший подходящий цвет текста

Тот же тон, светлота меняется в OKLCH, пока коэффициент не пройдёт.

  • AA

    #767676

    4.54:1

  • AAA

    #595959

    7.00:1

APCA (черновик WCAG 3)Lc 71.1

Только для информации. Примерно Lc 75 для основного текста, 60 для прочего текста, 45 для крупных заголовков. Отрицательное значение означает светлый текст на тёмном фоне.

Предпросмотр

Крупный текст, 24 px

Крупный полужирный текст, 19 px

Обычный основной текст 16 px. Этот размер используют большинство абзацев, и ему нужен коэффициент не меньше 4.5:1.

Мелкий шрифт 12 px читать ещё труднее. Дайте ему больше контраста, чем минимум.

КнопкаКонтурнаяТекстовая ссылка

Залитая кнопка меняет цвета местами; иконкам и контурам нужно не меньше 3:1.

Проверка контрастности по WCAG за секунды

Этот инструмент измеряет коэффициент контрастности WCAG 2 между цветом текста и фоном и сразу показывает, каким уровням пара соответствует: AA и AAA для обычного и крупного текста, а также минимум 3:1 для иконок, рамок и других элементов интерфейса. Если пара не проходит, он предлагает ближайший цвет текста, который проходит, сохраняя ваш тон. Цвета можно вводить в любой записи, и всё работает в вашем браузере.

Как проверить контрастность цветов

  1. Введите цвет текста и цвет фона в любой записи: HEX, rgb(), hsl(), oklch() или имя CSS. Либо воспользуйтесь палитрами.
  2. Посмотрите на коэффициент и отметки «проходит» или «не проходит» для каждого уровня WCAG.
  3. В живом предпросмотре пара видна как настоящий текст, кнопка и иконка.
  4. Если пара не проходит, нажмите Применить рядом с предложением для AA или AAA, чтобы перейти на ближайший подходящий цвет текста. Кнопка обмена проверяет пару наоборот.

Требования WCAG к контрастности

Руководство по доступности веб-контента (WCAG) задаёт минимальные коэффициенты контрастности, чтобы текст оставался читаемым для людей со слабым зрением, нарушениями цветовосприятия или с телефоном на ярком солнце. Коэффициенты идут от 1:1 (одинаковые цвета) до 21:1 (чёрный на белом).

AA, обычный текст
Не меньше 4.5:1 (критерий успеха 1.4.3). Уровень, которого требует большинство законов и политик доступности, включая Европейский акт о доступности (European Accessibility Act) и разъяснения ADA в США.
AA, крупный текст
Не меньше 3:1. Крупным считается текст от 24 px (18 pt), а полужирный — от 18.66 px (14 pt).
AAA, обычный текст
Не меньше 7:1 (критерий успеха 1.4.6). Повышенный уровень, к которому стоит стремиться для длинных текстов.
AAA, крупный текст
Не меньше 4.5:1.
Контраст нетекстовых элементов
Не меньше 3:1 (критерий успеха 1.4.11) для иконок, рамок полей ввода, индикаторов фокуса, линий графиков и тех частей элемента управления, которые нужно видеть, чтобы им пользоваться.

Как вычисляется коэффициент контрастности

Каждый цвет переводится в относительную яркость: каналы sRGB линеаризуются (снимается гамма-кривая) и берутся с весами 0.2126 для красного, 0.7152 для зелёного и 0.0722 для синего, потому что глаз гораздо чувствительнее к зелёному. Затем коэффициент равен (L1 + 0.05) / (L2 + 0.05), где L1 — более светлый цвет. Например, #777777 на белом даёт 4.48:1, чуть не дотягивая до AA, а #767676 достигает 4.54:1 и проходит.

Коэффициент никогда не округляется вверх до порога: WCAG прямо указывает, что 4.49:1 не соответствует 4.5:1. Полупрозрачные цвета сначала смешиваются так, как их рисует браузер: текст поверх фона, а полупрозрачный фон поверх белого.

Как исправить непрошедший цвет

Предложения сохраняют тон и насыщенность цвета текста и меняют только его светлоту в OKLCH — перцептивном цветовом пространстве, которое теперь поддерживает CSS. Светлота шагами уменьшается и увеличивается, пока коэффициент не пройдёт, и выбирается вариант, более близкий к исходному. Обычно результат — тот же фирменный цвет, чуть глубже или светлее, а не скачок к чёрному. Если ни один оттенок этого тона не достигает цели на вашем фоне, инструмент так и скажет: менять нужно фон.

Чтобы перебрать другие варианты самостоятельно, откройте цвет в конвертере цветов и пройдитесь по его светлым и тёмным оттенкам или возьмите цвета-кандидаты с фотографии генератором цветовой палитры.

Частые ошибки с контрастностью

  • Плейсхолдеры и текст, который выглядит неактивным. Светло-серый текст-подсказка — тоже текст, и если он нужен пользователю, он должен давать 4.5:1. Действительно отключённые элементы управления освобождены от требования, а всё, что лишь выглядит отключённым, — нет.
  • Текст на изображениях и градиентах. Проверяйте самую светлую часть изображения под текстом, а не среднюю. Надёжное решение — тёмная подложка или сплошная панель под текстом.
  • Фирменные цвета для текста. Яркий оранжевый или бирюзовый может выглядеть смело и при этом не проходить на белом. Используйте предложение, чтобы найти более глубокий вариант того же тона для текста, а яркий оставьте для крупных заголовков или декора.
  • Индикаторы фокуса и рамки полей. Светло-серая рамка в 1 px вокруг текстового поля часто не проходит правило 3:1 для нетекстовых элементов, и людям со слабым зрением трудно найти поле.
  • Тёмная тема. Пара, проходящая в светлой теме, ничего не говорит о тёмной. Проверяйте обе темы, а кнопка обмена позволяет быстро взглянуть на перевёрнутую пару.

APCA и WCAG 3

Под результатами WCAG 2 также отображается значение контраста светлоты APCA, обозначаемое Lc. APCA — метод расчёта контрастности, предложенный для будущего WCAG 3. Он учитывает толщину шрифта и то, что светлому тексту на тёмном фоне нужен иной контраст, чем тёмному на светлом, — формула WCAG 2 это игнорирует; поэтому и знак значения меняется при обмене цветов. Ориентировочно Lc 75 подходит для основного текста, Lc 60 — для прочего читаемого текста, Lc 45 — для крупных заголовков. WCAG 3 пока черновик, так что считайте APCA дополнительной информацией: аудиты и законы по-прежнему ссылаются на WCAG 2.x.

Часто задаваемые вопросы

Какой коэффициент контрастности нужен для текста?
Не меньше 4.5:1 для обычного текста и 3:1 для крупного — это уровень WCAG AA, которого требует большинство законов о доступности. 7:1 для обычного текста соответствует более строгому уровню AAA.
Какой текст считается крупным по WCAG?
Текст от 18 пунктов (24 CSS-пикселя) или от 14 пунктов (около 18.66 CSS-пикселя), если он полужирный. Крупному тексту нужно всего 3:1 для AA и 4.5:1 для AAA.
Как рассчитывается коэффициент контрастности WCAG?
Оба цвета переводятся в относительную яркость: каналы sRGB линеаризуются и берутся с весами 0.2126, 0.7152 и 0.0722. Коэффициент равен (светлый + 0.05), делённому на (тёмный + 0.05), и лежит в диапазоне от 1:1 до 21:1.
Проходит ли #777777 на белом по WCAG?
Нет. #777777 на #ffffff даёт 4.48:1, чуть ниже 4.5:1, нужных для обычного текста на уровне AA. Самый светлый проходящий серый — #767676 с коэффициентом 4.54:1.
Должны ли иконки и кнопки соответствовать требованиям контрастности?
Да. Критерий успеха 1.4.11 WCAG 2.1 требует 3:1 относительно соседних цветов для иконок, рамок полей ввода, индикаторов фокуса и другой графики, нужной для понимания или управления интерфейсом.
Что такое APCA?
APCA (Accessible Perceptual Contrast Algorithm) — метод расчёта контрастности из черновика WCAG 3. Он выдаёт значение контраста светлоты (Lc), которое зависит от того, какой из цветов является текстом, и учитывает размер и толщину шрифта. Пока это не обязательное требование.
Учитывает ли проверка прозрачные цвета?
Да. Перед расчётом коэффициента полупрозрачный цвет текста смешивается с фоном, а полупрозрачный фон — с белым, что соответствует тому, что видно на экране.