SiteAccessible
Все статьи

Стандарты

Цветовой контраст по 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).

Требования WCAG 2.2 к контрасту (источник: W3C, WCAG 2.2)
Критерий успешностиУровеньК чему применяетсяМинимальный коэффициент
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. Наше руководство «Как проверить доступность сайта» ставит контраст в один ряд с другими быстрыми ручными проверками.

Как исправить низкий контраст, не меняя фирменный стиль?

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

Примеры пар цветов и их коэффициенты контраста по WCAG (рассчитаны по формуле WCAG 2)
Пара цветовКоэффициентРезультат для AA
Белый текст на ярко-оранжевом #FF7A002,61:1Не проходит ни для какого текста
Чёрный текст на том же оранжевом #FF7A008,04:1Проходит, в том числе AAA
Белый текст на более тёмном оранжевом #B350005,17:1Проходит для обычного текста
Белый текст на синем #3B82F63,68:1Только для крупного текста
Белый текст на более тёмном синем #2563EB5,17:1Проходит для обычного текста
Серый текст #999999 на белом2,85:1Не проходит ни для текста, ни для значков
Серый текст #595959 на белом7,0:1Проходит, в том числе AAA
  1. Сделайте «безопасную для текста» версию каждого фирменного цвета — не менее 4,5:1 относительно основных фонов — и используйте её для основного текста, ссылок и мелких значков.
  2. Используйте исходный яркий цвет для крупных заголовков (там достаточно 3:1), фонов, иллюстраций и декора.
  3. На светлых фирменных цветах замените белый текст кнопок на тёмный.
  4. Подложите под текст, который лежит на фотографиях, сплошную или полупрозрачную плашку.
  5. Проверьте все состояния: наведение, фокус, посещённую ссылку, выбранный элемент, ошибку и текст-подсказку.
  6. Сохраните подходящие пары как дизайн-токены или настройки темы, чтобы новые страницы наследовали их, а не изобретали заново.

Дизайн с учётом дальтонизма: почему одного цвета недостаточно

Контраст и цвет — разные проблемы. По данным 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 требует, чтобы цвет не был единственным способом передать информацию, — например, когда ошибку отмечает только красный текст.

Источники

  1. The WebAIM Million: 2026 report on the accessibility of the top 1,000,000 home pages (updated 30 March 2026) (откроется в новой вкладке), WebAIM
  2. Understanding Success Criterion 1.4.3: Contrast (Minimum) (откроется в новой вкладке), W3C Web Accessibility Initiative
  3. Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation 12 December 2024 (откроется в новой вкладке), W3C
  4. Understanding Success Criterion 1.4.11: Non-text Contrast (откроется в новой вкладке), W3C Web Accessibility Initiative
  5. G183: Using a contrast ratio of at least 3:1 to distinguish inline text links from surrounding text (откроется в новой вкладке), W3C Web Accessibility Initiative
  6. Colour blindness (откроется в новой вкладке), Colour Blind Awareness
  7. Contrast Checker (откроется в новой вкладке), WebAIM
  8. Colour Contrast Analyser (CCA) (откроется в новой вкладке), Vispero
  9. Make your website more readable (Chrome DevTools: contrast) (откроется в новой вкладке), Chrome for Developers, Google