Стандарты
Цветовой контраст по WCAG: нормы, проверка и исправление
Какие коэффициенты контраста требует WCAG (4,5:1, 3:1, 7:1), что считается крупным текстом, как бесплатно проверить цвета и исправить контраст без ребрендинга.
Опубликовано 10 мин чтения
Коротко
Уровень AA WCAG требует коэффициента контраста не менее 4,5:1 для обычного текста, 3:1 для крупного (18 пт или 14 пт жирным) и 3:1 для значков, рамок полей форм и других элементов интерфейса. Уровень AAA требует 7:1. Низкий контраст — самая частая ошибка в интернете и обычно самая дешёвая в исправлении.
Главное
- Обычному тексту нужно 4,5:1, крупному — 3:1, а элементам управления, значкам и элементам диаграмм — 3:1 относительно соседних цветов.
- Коэффициенты не округляются: 4,48:1 не проходит, хотя на вид почти не отличается от 4,54:1.
- Текст с низким контрастом нашёлся на 83,9% из миллиона самых популярных главных страниц при сканировании WebAIM 2026 года — это самая частая из обнаруженных ошибок.
- Обычно контраст можно исправить более тёмным оттенком фирменного цвета для текста, сохранив яркий оригинал для крупных форм и фонов.
- Цвет никогда не должен быть единственным сигналом, а переключатель контраста не исправляет цвета по умолчанию, которые не проходят проверку.
Светло-серый текст на белом фоне в макете выглядит аккуратно. На телефоне под ярким солнцем или для слабовидящего человека читать его тяжело. Кроме того, это самая распространённая ошибка доступности: WebAIM Million 2026 (откроется в новой вкладке) нашёл текст с низким контрастом на 83,9% из миллиона самых популярных главных страниц — в среднем 34 отдельных случая на страницу.
Хорошая новость: контраст можно измерить, пороги понятны, а исправления в основном дешёвые. В этом руководстве — цифры, бесплатные инструменты и способ поправить фирменные цвета, не начиная всё заново.
Что такое коэффициент цветового контраста?
Коэффициент контраста — это число, которое сравнивает относительную яркость (светлоту) двух цветов, обычно текста и его фона. WCAG вычисляет его по фиксированной формуле, а результат лежит в диапазоне от 1:1 (никакой разницы, белое на белом) до 21:1 (чёрное на белом). Чем выше число, тем легче различить два цвета.
Формула выглядит так: (L1 + 0,05) / (L2 + 0,05), где L1 — относительная яркость более светлого цвета, а L2 — более тёмного. Считать вручную вам не придётся, но одна деталь важна: учитывается только яркость, а не цветовой тон. Поэтому красный текст на зелёном фоне может выглядеть ярко и всё равно получить плохую оценку.
Вторая деталь, которую часто упускают, — округление. В пояснительном документе W3C к критерию 1.4.3 (откроется в новой вкладке) сказано, что вычисленные значения «не следует округлять (например, 4,499:1 не соответствует порогу 4,5:1)». Поэтому серый #767676 на белом (4,54:1) проходит, а #777777 на белом (4,48:1) — нет, хотя на глаз их никто не различит.
Какого коэффициента контраста требует WCAG?
Для уровня AA, на который ссылается большинство законов и договоров, обычному тексту нужно не менее 4,5:1 относительно фона, а крупному — 3:1 (критерий успешности 1.4.3). Компонентам интерфейса и значимой графике нужно 3:1 относительно соседних цветов (1.4.11). Более строгий уровень AAA требует 7:1 для обычного текста и 4,5:1 для крупного (1.4.6).
| Критерий успешности | Уровень | К чему применяется | Минимальный коэффициент |
|---|---|---|---|
| 1.4.3 Контраст (минимальный) | AA | Обычный текст и изображения текста | 4,5:1 |
| 1.4.3 Контраст (минимальный) | AA | Крупный текст (18 пт или 14 пт жирным) | 3:1 |
| 1.4.6 Контраст (повышенный) | AAA | Обычный текст и изображения текста | 7:1 |
| 1.4.6 Контраст (повышенный) | AAA | Крупный текст | 4,5:1 |
| 1.4.11 Контраст нетекстовых элементов | AA | Части элементов управления, состояния и графика, необходимые, чтобы ими пользоваться или их понять | 3:1 относительно соседних цветов |
| 1.4.1 Использование цвета | A | Любая информация, передаваемая цветом | Без коэффициента: цвет не может быть единственным признаком |
Почему именно 4,5:1? W3C объясняет, что этот порог «компенсирует потерю контрастной чувствительности, обычную для пользователей с нарушением зрения, соответствующим остроте зрения примерно 20/40» (это около 0,5 по привычной десятичной шкале). Иначе говоря, он рассчитан на людей с умеренно сниженным зрением, среди которых много пожилых покупателей, которые никогда не назвали бы себя людьми с инвалидностью.
Часть текста освобождена от требований: логотипы и названия брендов, чисто декоративный текст, текст, который никому не виден, текст на изображении со значительным другим визуальным содержанием и текст в неактивных (отключённых) элементах управления. Ваш логотип может остаться как есть. Абзац, набранный бледным цветом логотипа, — нет.
Что считается крупным текстом?
Крупный текст в WCAG — это не менее 18 пунктов или не менее 14 пунктов, если он жирный. W3C переводит это примерно в 24 CSS-пикселя и 18,5 пикселя жирным. Всему, что меньше, нужны полные 4,5:1. Основной текст, подписи к изображениям, подписи полей форм, цены и ссылки в подвале почти никогда не бывают крупным текстом, поэтому им нужен более высокий коэффициент.
Вот как это выглядит на практике. Серый #949494 на белом даёт 3,03:1. Для заголовка в 28 пикселей это нормально, а для абзаца в 16 пикселей того же цвета — ошибка. Множество сайтов проходят проверку на заголовках и проваливают всё, что под ними.
Тонким и декоративным шрифтам нужно особое внимание. W3C отмечает, что из-за сглаживания «особенно тонкие или необычные шрифты могут отображаться браузерами гораздо более блёклым цветом», чем выбранный вами. Если ваш фирменный шрифт светлого начертания, оставьте себе запас выше 4,5:1, а не целитесь в 4,51.
Касается ли контраст кнопок, значков, индикаторов фокуса и диаграмм?
Да. По критерию успешности 1.4.11 (уровень AA) всё, что людям нужно видеть, чтобы распознать элемент управления, его состояние или графику, должно иметь контраст 3:1 относительно соседних цветов. Сюда входят рамки полей форм, значки без текстовой подписи, контуры фокуса, состояния флажков и переключателей, линии и сегменты диаграмм. Текст внутри кнопки по-прежнему требует 4,5:1.
- Поля форм: светло-серая рамка #CCCCCC на белом даёт 1,61:1. Если эта бледная линия — единственное, что показывает, куда вводить текст, это нарушение.
- Кнопки: WCAG не требует видимой рамки вокруг каждой кнопки. В пояснительном документе W3C к критерию 1.4.11 (откроется в новой вкладке) сказано, что граница нужна, только если нет другого визуального способа распознать элемент управления. Если кнопку можно узнать только по цветной форме, этой форме нужно 3:1 относительно страницы.
- Значки: лупе поиска, сердечку избранного или значку корзины без текста рядом нужно 3:1.
- Индикаторы фокуса: контур, показывающий фокус клавиатуры, должен контрастировать с окружающим фоном. Более новые критерии о фокусе разобраны в нашем руководстве по WCAG 2.2.
- Диаграммы: линиям на линейном графике и секторам круговой диаграммы нужно 3:1, если те же значения не показаны ещё и текстом.
- Отключённые элементы управления освобождены от требований, хотя людям всё равно нужно понимать, можно ли нажать кнопку.
Ссылки в тексте — особый случай. Если они выделены только цветом, без подчёркивания, техника W3C G183 (откроется в новой вкладке) требует 3:1 между цветом ссылки и окружающим текстом, при этом оба цвета по-прежнему должны иметь 4,5:1 относительно фона. Подобрать три цвета, которые удовлетворяют всему этому, трудно. Подчёркивание гораздо проще.
Как проверить цветовой контраст?
Используйте бесплатный инструмент проверки контраста для конкретных пар цветов, инструменты разработчика в браузере для живых страниц и автоматическое сканирование, чтобы найти проблемные места по всему сайту. Затем проверьте глазами то, что инструменты пропускают: текст на фото и градиентах, состояния при наведении и фокусе, текст-подсказки и сообщения об ошибках. Большая часть этого занимает несколько минут на каждый шаблон страницы.
- WebAIM Contrast Checker (откроется в новой вкладке): введите два шестнадцатеричных кода и получите коэффициент с оценкой «проходит или нет» для обычного текста, крупного текста и графических объектов. Ползунок светлоты удобен, чтобы найти ближайший подходящий оттенок.
- Colour Contrast Analyser (откроется в новой вкладке): бесплатное настольное приложение от Vispero для Windows и macOS. Его пипетка берёт любой пиксель на экране, что полезно для текста на изображениях, PDF и в приложениях, а ещё в нём есть симулятор дальтонизма.
- Chrome DevTools: выберите фрагмент текста в инспекторе и откройте палитру цветов. Её раздел о коэффициенте контраста (откроется в новой вкладке) показывает линии для AA и AAA и может предложить подходящий цвет. Панель CSS Overview перечисляет все проблемы с контрастом на странице.
- Автоматические проверки: расширения браузера и Lighthouse находят текст с низким контрастом по всей странице, но текст на изображениях или градиентах часто помечают как требующий ручной проверки, а не как прошедший или не прошедший.
Там, где инструменты не справляются, проверяйте вручную. Для текста на главном фото проверьте самую светлую часть изображения за самыми светлыми буквами; фоновые изображения без достаточного контраста W3C относит к известным ошибкам (F83). Наведите курсор на кнопки, перейдите к ним клавишей Tab, вызовите ошибку в форме, включите тёмный режим, если он у вас есть. Тёмная тема тоже может не пройти проверку: серый #757575 на фоне #121212 даёт 4,07:1. Наше руководство «Как проверить доступность сайта» ставит контраст в один ряд с другими быстрыми ручными проверками.
Как исправить низкий контраст, не меняя фирменный стиль?
Обычно — добавив более тёмный оттенок фирменного цвета для текста и мелких элементов и сохранив оригинал для крупных заголовков, фонов и иллюстраций. Многие фирменные цвета не проходят проверку только в мелких размерах. Часто достаточно заменить белый текст на тёмный на светлом фирменном цвете, и большинство посетителей заметят лишь то, что страницу стало легче читать.
| Пара цветов | Коэффициент | Результат для AA |
|---|---|---|
| Белый текст на ярко-оранжевом #FF7A00 | 2,61:1 | Не проходит ни для какого текста |
| Чёрный текст на том же оранжевом #FF7A00 | 8,04:1 | Проходит, в том числе AAA |
| Белый текст на более тёмном оранжевом #B35000 | 5,17:1 | Проходит для обычного текста |
| Белый текст на синем #3B82F6 | 3,68:1 | Только для крупного текста |
| Белый текст на более тёмном синем #2563EB | 5,17:1 | Проходит для обычного текста |
| Серый текст #999999 на белом | 2,85:1 | Не проходит ни для текста, ни для значков |
| Серый текст #595959 на белом | 7,0:1 | Проходит, в том числе AAA |
- Сделайте «безопасную для текста» версию каждого фирменного цвета — не менее 4,5:1 относительно основных фонов — и используйте её для основного текста, ссылок и мелких значков.
- Используйте исходный яркий цвет для крупных заголовков (там достаточно 3:1), фонов, иллюстраций и декора.
- На светлых фирменных цветах замените белый текст кнопок на тёмный.
- Подложите под текст, который лежит на фотографиях, сплошную или полупрозрачную плашку.
- Проверьте все состояния: наведение, фокус, посещённую ссылку, выбранный элемент, ошибку и текст-подсказку.
- Сохраните подходящие пары как дизайн-токены или настройки темы, чтобы новые страницы наследовали их, а не изобретали заново.
Дизайн с учётом дальтонизма: почему одного цвета недостаточно
Контраст и цвет — разные проблемы. По данным Colour Blind Awareness (откроется в новой вкладке), нарушение цветового зрения, чаще всего красно-зелёное, есть примерно у каждого 12-го мужчины и у каждой 200-й женщины. WCAG 1.4.1 (откроется в новой вкладке) (уровень A) требует, чтобы цвет не был единственным визуальным способом передать информацию, поэтому дополняйте его текстом, значками, узорами или подчёркиванием.
- Ошибки в формах: одной красной рамки недостаточно. Добавьте рядом с полем сообщение вроде «Введите почтовый индекс», лучше со значком.
- Наличие и статус: зелёная или красная точка рядом с товаром многим покупателям ничего не говорит. Напишите «В наличии» или «Распродано».
- Диаграммы: легенду, в которой нужно сопоставлять цвета, трудно читать. Подписывайте линии прямо на графике или используйте узоры и разные типы линий.
- Ссылки: в основном тексте подчёркивайте их — по причинам, описанным выше.
Чтобы увидеть проблему своими глазами, используйте эмуляцию нарушений зрения в Chrome DevTools; симулятор есть и в Colour Contrast Analyser. Контраст помогает и здесь: коэффициент измеряет светлоту, а не тон, поэтому два цвета с высоким коэффициентом остаются различимыми, даже если их оттенки кажутся похожими. Как слабовидящие люди и люди с другими нарушениями настраивают свои устройства, рассказывает статья «Как люди с инвалидностью пользуются сайтами».
Достаточно ли режимов высокого контраста и переключателей контраста?
Нет. Контрастные темы операционной системы и переключатели контраста на странице помогают тем, кто знает, что ему нужно больше контраста, и включает его. Но WCAG оценивает вашу страницу в состоянии по умолчанию, поэтому цвета, которые каждый посетитель видит первыми, всё равно должны проходить проверку. Переключатель — дополнительная возможность для тех, кому нужно больше, а не исправление цветов, которые не проходят.
Некоторые люди с инвалидностью пользуются контрастными темами Windows, которые заменяют ваши цвета своими. Стоит протестировать сайт с включённой темой: значки, сделанные фоновыми изображениями, могут исчезнуть, а стили фокуса, нарисованные только тенью (box-shadow), — пропасть. Медиазапрос CSS prefers-contrast также позволяет предложить более контрастную версию тем, кто запросил её в системных настройках.
В нашем собственном виджете есть настройка контраста и профиль для дальтоников, и некоторым посетителям они полезны. Но мы скажем вам то же самое: если основной текст у вас #999999 на белом, меняйте CSS. Виджет даёт посетителю, которому нужно больше контраста, способ его получить. Цвета по умолчанию, которые не проходят проверку, он не исправляет, и об этом сказано в справочнике по WCAG в нашей документации.
Часто задаваемые вопросы
Какой минимальный коэффициент цветового контраста для WCAG AA?
Обычному тексту нужен коэффициент контраста не менее 4,5:1 относительно фона (критерий успешности 1.4.3). Крупному тексту, то есть не менее 18 пунктов или 14 пунктов жирным (около 24 и 18,5 пикселя), нужно не менее 3:1. Логотипы и чисто декоративный текст освобождены от требований.
Какой контраст нужен кнопкам и значкам?
По WCAG 1.4.11 (уровень AA) визуальная информация, которая нужна людям, чтобы распознать компоненты интерфейса и их состояния, — например, рамки полей форм, значки без текста и индикаторы фокуса, — должна иметь контраст не менее 3:1 относительно соседних цветов. Текст внутри кнопки всё равно остаётся текстом, поэтому ему нужно 4,5:1, а если он крупный — 3:1.
Какого коэффициента контраста требует уровень AAA?
Уровень AAA (критерий успешности 1.4.6 «Контраст (повышенный)») требует 7:1 для обычного текста и 4,5:1 для крупного. Большинство законов и правил закупок ссылаются на уровень AA, поэтому считайте AAA целью для ключевого контента, а не юридическим минимумом.
Можно ли округлить коэффициент контраста до 4,5:1?
Нет. W3C указывает, что вычисленные коэффициенты не следует округлять, поэтому 4,499:1 не соответствует порогу 4,5:1. Например, #777777 на белом даёт 4,48:1 и не проходит, а #767676 даёт 4,54:1 и проходит.
Насколько часто на сайтах встречается низкий контраст?
Это самая частая из обнаруженных ошибок доступности. WebAIM Million 2026 нашёл текст с низким контрастом на 83,9% из миллиона самых популярных главных страниц, в среднем 34 случая на страницу, — это больше, чем отсутствие альтернативного текста у изображений (53,1%).
Насколько распространён дальтонизм?
По данным британской благотворительной организации Colour Blind Awareness, нарушение цветового зрения есть примерно у каждого 12-го мужчины (8%) и у каждой 200-й женщины, а во всём мире таких людей около 300 млн. Поэтому WCAG требует, чтобы цвет не был единственным способом передать информацию, — например, когда ошибку отмечает только красный текст.
Источники
- The WebAIM Million: 2026 report on the accessibility of the top 1,000,000 home pages (updated 30 March 2026) (откроется в новой вкладке), WebAIM
- Understanding Success Criterion 1.4.3: Contrast (Minimum) (откроется в новой вкладке), W3C Web Accessibility Initiative
- Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation 12 December 2024 (откроется в новой вкладке), W3C
- Understanding Success Criterion 1.4.11: Non-text Contrast (откроется в новой вкладке), W3C Web Accessibility Initiative
- G183: Using a contrast ratio of at least 3:1 to distinguish inline text links from surrounding text (откроется в новой вкладке), W3C Web Accessibility Initiative
- Colour blindness (откроется в новой вкладке), Colour Blind Awareness
- Contrast Checker (откроется в новой вкладке), WebAIM
- Colour Contrast Analyser (CCA) (откроется в новой вкладке), Vispero
- Make your website more readable (Chrome DevTools: contrast) (откроется в новой вкладке), Chrome for Developers, Google