vasilenko.info

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

/tool/contrast-checker/ работает считает браузер

Введите цвет текста и цвет фона — инструмент посчитает контраст по WCAG 2, покажет, какие уровни пара проходит, и подберёт ближайший цвет, с которым она начнёт проходить. Рядом — APCA из проекта WCAG 3, вид пары при дальтонизме, сетка всей палитры и разбор вашего CSS. Всё считает браузер: ни цвета, ни файлы никуда не отправляются.

промоДвадцать лет заметок про сайтыКак это делали в 2008-м и что из этого работает сейчас.Открыть

Пара цветов

Порядок цветов на число не влияет: контраст симметричен. Ползунок под полем двигает светлоту, не трогая тон и насыщенность, — это самый короткий путь довести пару до нормы, не потеряв цвет.

Ползунок меняет светлоту HEX, rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch(), color(display-p3 …), имя цвета или целая строка вида --brand: #1a73e8 Не разобрал цвет. Пример: #767676
Ползунок меняет светлоту Полупрозрачный фон складывается с белым Не разобрал цвет. Пример: #FFFFFF
Тёмная тема
Образец
Заголовок и подпись в образце считаются от него: ×1,5 и ×0,8
Образец ляжет на картинку, а контраст посчитается по самому светлому и самому тёмному её участку. Файл читается в браузере и никуда не загружается.
Перетащите картинку сюда

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

Обычный текст, 16 px. Крупным по WCAG считается шрифт от 18 pt, это 24 px, а полужирный — от 14 pt, это примерно 18,7 px.

Мелкая подпись, 13 px — она всегда обычный текст, порог 4,5.

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

:1

AA, обычный текст — от 4,5
AA, крупный текст — от 3
AAA, обычный текст — от 7
AAA, крупный текст — от 4,5
Иконки и границы полей — от 3
Ваш кегль и насыщенность
APCA Lc — проект WCAG 3
Яркость текста, L
Яркость фона, L

Считает браузер. Цвета, картинка и CSS никуда не отправляются: это видно в панели разработчика — после загрузки запросов больше нет.

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

Инструмент двигает светлоту в HSL и не трогает тон с насыщенностью: цвет остаётся тем же самым, меняется только то, насколько он светлый. Так пара доходит до нормы, а бренд остаётся узнаваемым.

До какого порога тянуть

Порог выбирается выше. Сдвиг показан в пунктах светлоты HSL — на столько процентов надо сделать цвет темнее или светлее.

APCA: каким кеглем этой парой писать можно

APCA — модель контраста из проекта WCAG 3. В отличие от WCAG 2 она учитывает кегль и насыщенность и по-разному считает тёмное на светлом и светлое на тёмном. Нормой это пока не является: обязательна WCAG 2, она посчитана выше.

Значение Lc

Кегль и насыщенность, которые эта пара вытягивает
Кегль

Пороги в таблице — уровни APCA: Lc 90 для мелкого основного текста, 75 для обычного, 60 для крупного, 45 для заголовков, 30 — предел, ниже которого текст не ставят вовсе. Насыщенность сдвигает порог: 300 добавляет 15 пунктов, 500 снимает 5, 600 — десять, 700 — пятнадцать. Это упрощённая шкала: официальная таблица подбора кегля в APCA пока меняется от версии к версии, а обязательной нормой остаётся WCAG 2.

Как пару видят люди с дальтонизмом

Контраст по яркости при дальтонизме почти не меняется — меняется цвет. Если пара держалась на разнице «красный против зелёного», а не на разнице светлот, здесь она схлопнется в две одинаковые полосы, и это видно сразу.

Палитра: все пары разом

Одна пара за раз — это проверка. Дизайнеру нужна сетка: какие цвета палитры можно ставить друг на друга, а какие нельзя ни при каком кегле. Ячейка закрашена настоящей парой, поэтому сетку видно, а не читаешь.

Вставьте цвета — появится сетка всех пар.

Целая страница, а не одна пара

Пар на странице сотни, и руками их не перебирают. Здесь два пути, и оба не требуют переписывать цвета вручную: закладка проверяет живую страницу прямо в браузере, а разбор CSS находит нарушения в исходниках.

Закладка обходит все видимые элементы с текстом, берёт у каждого посчитанный браузером цвет и настоящий фон — со всеми полупрозрачными слоями и наследованием, — сравнивает с порогом по кеглю и насыщенности и обводит нарушителей прямо на странице. Работает на любом сайте, в том числе на закрытом за паролём и на локальном, потому что считает у вас, а не у нас.

Контраст страницы
  1. Перетащите кнопку «Контраст страницы» на панель закладок браузера. Если панели не видно, нажмите Ctrl + Shift + B, на Маке — Cmd + Shift + B.

  2. Откройте свою страницу и нажмите закладку. Появится список пар, которые не проходят AA, а сами нарушители обведутся на странице.

  3. Каждая строка в списке — ссылка сюда с уже подставленной парой: жмёте и сразу подбираете ближайший проходящий цвет.

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

Перетащите сюда .css или .html

Разбор идёт по правилам вида «селектор { объявления }»: берутся объявления color и background, переменные var(--…) подставляются. Правило, где задан только цвет текста, проверяется на фоне страницы — на том, что стоит у body или html, а если его нет, на белом.

Забрать результат

Отчёт текстом — для письма и задачи в трекере. CSS — чтобы вставить пару в проект переменными. JSON — чтобы прогонять пары в своей проверке при сборке.

переменные пары готовый CSS
результат проверки JSON
промоПосчитайте заодно ROIОкупаемость кампании по расходу и доходу.Открыть

Как пользоваться

  1. Вставьте цвет текста и цвет фона в любом виде: #RRGGBB, rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch(), color(display-p3 …) или английское имя. Можно вставить целую строку из кода — «--brand: #1a73e8;» разберётся так же, как голый цвет.

  2. Смотрите не на само число, а на строки порогов: 4,5 — граница обычного текста, 3 — крупного и нетекстовых элементов. Строка «ваш кегль и насыщенность» отвечает на вопрос применительно к тому тексту, который вы задали в образце.

  3. Если пара не проходит, двигайте ползунок светлоты под полем: подпись под ним говорит, при каких значениях пара начинает проходить AA и AAA. Готовый ответ уже посчитан в разделе «Ближайший проходящий цвет» — там же кнопка подставить.

  4. Текст на фотографии проверяйте картинкой: выберите файл в блоке «Образец», и инструмент найдёт самый светлый и самый тёмный участок и посчитает обе пары. Проходить должна худшая.

  5. Тёмную тему включайте галочкой «Считать вторую пару»: инверсия почти никогда не сохраняет контраст, а обе пары должны проходить одновременно.

  6. Всю палитру проверяйте сеткой: вставьте список цветов, и появится матрица всех пар с отметками. Ссылку на сетку можно отправить в чат — состояние лежит в адресе.

  7. Целую страницу проверяйте закладкой из раздела «Целая страница»: она обходит живой документ в вашем браузере. Если нужен разбор исходников — перетащите туда файл стилей.

промоСписок задач в браузереБез аккаунта, всё хранится на вашем устройстве.Открыть

Формула и что в неё входит

Контраст = (L светлого + 0,05) ÷ (L тёмного + 0,05)

Норма — WCAG 2, по ней считается основное число. APCA из проекта WCAG 3 посчитан рядом отдельным разделом: он точнее описывает читаемость мелкого и светлого текста, но нормой пока не стал, и ссылаться в требованиях на него нельзя.

Разбор примера: чёрный текст на белом фоне

Исходные данные — те же, что стоят в полях по умолчанию: их можно пересчитать в уме и убедиться, что инструмент не врёт.

  1. Белый: каждый канал 255, после деления на 255 получается 1, линеаризация единицу не меняет.

  2. Яркость белого: L = 0,2126 + 0,7152 + 0,0722 = 1.

  3. Чёрный: каждый канал 0, значит L = 0.

  4. Светлый цвет ставим сверху: (1 + 0,05) ÷ (0 + 0,05).

1,05 ÷ 0,05 = 21. Контраст 21:1 — максимум, который вообще возможен в sRGB. Проходит все уровни. APCA на этой же паре даёт Lc 106: тоже потолок, но по своей шкале, где предел около 108.

Частые вопросы

промоВесь каталог инструментовСорок четыре штуки, все считают в браузере.Открыть

Смежные инструменты

5

Генератор favicon

Режет картинку на все размеры и пишет код для вставки.

Открыть