edubun
Português

Contraste de cores

Cinza-claro #999999 sobre branco tem razão de contraste de 2.85:1, bem abaixo dos 4.5:1 que a WCAG 2.2 pede para texto corrido.

Carregando o modelo 3D

Arraste para girar. Role ou faça pinça para dar zoom.

A cor do texto começa em #999999 sobre fundo branco. Arraste o controle de Luminosidade para baixo e veja a razão passar de 4.5:1 e depois de 7:1. Os resultados aparecem em palavras além de números.

Por que o contraste importa

Um texto pálido em relação ao fundo é difícil de ler para pessoas com baixa visão, para muitos leitores mais velhos e para qualquer um usando o celular no sol. A WCAG 2.2 não deixa o "pálido" ao gosto de cada um. Ela mede a luminância relativa das duas cores, um número que vai de 0 para o preto a 1 para o branco, e as compara pela razão de contraste (L1 + 0.05) / (L2 + 0.05), em que L1 é a cor mais clara. O resultado vai de 1:1, uma cor sobre ela mesma, a 21:1, preto sobre branco. O curso de teoria das cores trabalha a fórmula passo a passo; aqui nós a usamos.

Os números a cumprir

O critério de sucesso 1.4.3 Contraste (Mínimo), de nível AA, pede pelo menos 4.5:1 para texto normal e 3:1 para texto grande, que a WCAG define como pelo menos 18 pontos, ou 14 pontos em negrito. O critério 1.4.6, de nível AAA, sobe esses valores para 7:1 e 4.5:1. O critério 1.4.11 Contraste Não Textual pede 3:1 para as partes de controles e gráficos que as pessoas precisam ver, como a borda de um campo de texto ou as linhas de um gráfico. Logotipos e textos puramente decorativos ou que fazem parte de um controle inativo estão isentos.

Cinco cores de texto sobre branco com as suas razões de contraste, calculadas com a fórmula da WCAG 2.2. #999999 falha, #767676 passa no AA por pouco, #595959 passa no AAA.

Vale a pena lembrar alguns valores. O cinza #767676 dá 4.54:1 sobre branco e costuma ser citado como o cinza puro mais claro que passa no AA; #777777 dá 4.48:1 e falha. O mais escuro #595959 chega a 7.00:1 e passa no AAA. Cores saturadas podem enganar: o vermelho puro #ff0000 sobre branco dá só 4.00:1, enquanto o vermelho mais fechado #c01c28 chega a 6.11:1. O texto de placeholder dentro de campos de formulário é uma falha frequente, porque os designers muitas vezes o deixam bem claro de propósito.

Conferindo as cores na prática

Você raramente precisa fazer a conta da fórmula à mão. Quando você inspeciona um elemento de texto, o seletor de cores das ferramentas de desenvolvedor dos principais navegadores mostra a razão de contraste em relação ao fundo, muitas vezes com uma linha marcando os limites AA e AAA. Dois casos pedem cuidado extra. Um texto sobre uma foto ou um degradê não tem um fundo único, então confira-o contra a parte mais clara sobre a qual ele fica, ou ponha um painel sólido atrás. E um site com tema escuro precisa ser conferido duas vezes, porque uma cor que passa sobre branco pode falhar sobre um quase preto: o azul #1a5fb4 dá 6.29:1 sobre branco, mas só 3.34:1 sobre preto puro.

Nunca só a cor

O contraste entre texto e fundo é metade da história. O critério 1.4.1 Uso de Cores, de nível A, diz que a cor não pode ser o único jeito de mostrar uma informação. O vermelho #c01c28 e o azul #1a5fb4 se leem bem sobre branco, mas um contra o outro a razão é só 1.03:1. Em tons de cinza, ou para alguém que não distingue vermelho de azul, eles viram o mesmo cinza. Então um campo obrigatório marcado só por um rótulo vermelho, ou um link que difere do texto em volta só pela cor, precisa de um segundo sinal: uma palavra, um ícone, um sublinhado.

O vermelho #c01c28 e o azul #1a5fb4 têm quase a mesma luminância, então em tons de cinza parecem quase idênticos.

AA: 4.5:1 para texto corrido, 3:1 para texto grande e para partes da interface. AAA: 7:1 para texto corrido. Preto sobre branco dá 21:1.

Pontos-chave
  • Razão de contraste = (L1 + 0.05) / (L2 + 0.05), de 1:1 a 21:1.
  • AA: 4.5:1 texto normal, 3:1 texto grande (1.4.3); 3:1 para controles e gráficos (1.4.11).
  • #767676 sobre branco dá 4.54:1; #999999 dá 2.85:1.
  • A cor nunca pode ser o único sinal (1.4.1).
  1. Qual razão de contraste a WCAG 1.4.3 exige para texto corrido normal?
  2. E para texto grande, no nível AA?
  3. Qual é a razão de contraste de #000000 sobre #ffffff?
  4. O cinza #999999 sobre branco dá 2.85:1. Para texto corrido, ele
    • falha no AA
    • passa no AA
    • passa no AAA
    • passa só para links
  5. Qual cinza passa por pouco no AA sobre branco?
    • #767676 (4.54:1)
    • #777777 (4.48:1)
    • #999999 (2.85:1)
    • #aaaaaa (2.32:1)
  6. Vermelho puro #ff0000 sobre branco: razão de contraste com duas casas decimais?
  7. Qual critério pede 3:1 para a borda de um campo de texto?
    • 1.4.11 Contraste Não Textual
    • 1.4.6 Contraste (Melhorado)
    • 1.1.1 Conteúdo Não Textual
    • 2.4.7 Foco Visível
  8. O vermelho #c01c28 e o azul #1a5fb4, um contra o outro, dão 1.03:1. O que isso quer dizer?
    • Eles parecem quase iguais em tons de cinza
    • Os dois são ilegíveis sobre branco
    • Juntos, passam no AAA
    • São complementares
  9. Um link é indicado só por ser azul. Qual correção cumpre o 1.4.1?
    • Acrescentar um sublinhado
    • Deixá-lo num azul mais vivo
    • Deixá-lo vermelho
    • Deixá-lo azul em negrito
  10. Qual é a razão mínima AAA para texto normal?
Fontes deste curso (9)
  • W3C, Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation first published 5 October 2023, current edition 12 December 2024 (w3.org/TR/WCAG22/, checked 2026-10-17, rechecked 2026-10-18)
  • W3C WAI, What's new in WCAG 2.2 (w3.org/WAI/standards-guidelines/wcag/new-in-22/, checked 2026-10-17)
  • W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree/, checked 2026-10-17)
  • W3C, Using ARIA (w3.org/TR/using-aria/, Discontinued Draft 24 February 2026, rules 1 to 4, checked 2026-10-17)
  • W3C WAI-ARIA Authoring Practices Guide, Read Me First, "No ARIA is better than bad ARIA" (w3.org/WAI/ARIA/apg/practices/read-me-first/, checked 2026-10-17)
  • MDN Web Docs, tabindex (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex, checked 2026-10-17)
  • MDN, Heading elements, accessibility notes (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements, checked 2026-10-17)
  • MDN, autocomplete attribute (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete, checked 2026-10-17)
  • Every code exercise was checked with a Playwright probe against a reference solution.

Data de verificação: 2026-10-17