Verificador de contraste de cores (WCAG)

Escolha a cor do texto e a do fundo para ver a razão de contraste, o resultado AA/AAA e uma sugestão de ajuste quando a combinação não passa.

Texto grande de exemplo

Este é um texto normal de exemplo para você avaliar a leitura com estas cores.

Razão de contraste

—

  • AA texto normal (4,5:1)
  • AA texto grande (3:1)
  • AAA texto normal (7:1)
  • AAA texto grande (4,5:1)
  • Componentes de interface (3:1)

Sugestões de cor de texto acessível

  • Para AA (4,5:1) —
  • Para AAA (7:1) —

Por que o contraste entre texto e fundo importa

Contraste é a diferença de luminância entre duas cores. Quando ela é pequena, o texto se mistura ao fundo e a leitura exige esforço, ou simplesmente não acontece. Isso afeta muito mais gente do que parece:

Por isso as diretrizes de acessibilidade medem luminância, e não matiz: é o indicador que melhor prevê se um texto será legível para o maior número de pessoas.

Os critérios de contraste da WCAG 2.2

A WCAG (Web Content Accessibility Guidelines), publicada pelo W3C, tem três critérios de sucesso ligados a contraste de cor. A versão 2.2 manteve os mesmos valores das versões 2.0 e 2.1:

Selo na ferramentaCritérioRazão mínima
AA texto normal1.4.34,5:1
AA texto grande1.4.33:1
AAA texto normal1.4.67:1
AAA texto grande1.4.64,5:1
Componentes de interface1.4.113:1

Os limites não são arredondados: uma combinação de 4,49:1 falha no AA para texto normal. Há exceções previstas na norma, como logotipos, texto puramente decorativo e componentes desabilitados. O texto completo está na documentação oficial do W3C.

O que conta como texto grande

Para a WCAG, texto grande é aquele com pelo menos 18 pontos (cerca de 24 px) em peso normal, ou 14 pontos (cerca de 18,66 px) em negrito. Letras maiores e mais grossas têm traços mais largos, por isso continuam legíveis com menos contraste.

Na prática, títulos costumam se encaixar como texto grande; corpo de texto, legendas, rótulos de formulário e links em parágrafos, não. Fontes muito finas ou com desenho incomum podem precisar de mais contraste do que o mínimo, mesmo em tamanho grande.

Como a razão de contraste é calculada

O cálculo tem duas etapas. Primeiro, cada cor é convertida em luminância relativa, um valor de 0 (preto) a 1 (branco). Para isso, cada canal RGB é dividido por 255 e linearizado, desfazendo a curva gama do sRGB:

c = valor ÷ 255
se c ≤ 0,04045: c = c ÷ 12,92
senão:          c = ((c + 0,055) ÷ 1,055) ^ 2,4

L = 0,2126 × R + 0,7152 × G + 0,0722 × B

Os pesos refletem a sensibilidade do olho: enxergamos o verde como muito mais claro que o azul. Depois, a razão é (L1 + 0,05) ÷ (L2 + 0,05), com L1 sendo a cor mais clara.

Exemplo com #FF5733: os canais linearizados são R = 1, G ≈ 0,0953 e B ≈ 0,0331, o que dá L ≈ 0,283. Sobre branco (L = 1), a razão é 1,05 ÷ 0,333 ≈ 3,15:1: passa para texto grande e componentes, mas falha para texto normal. Sobre preto (L = 0), a razão é 0,333 ÷ 0,05 ≈ 6,66:1, suficiente para AA em qualquer tamanho.

Erros comuns de contraste

Cinza claro sobre branco

É o erro mais frequente em sites “minimalistas”. #999999 sobre branco tem só 2,85:1. O cinza mais claro que ainda passa no AA para texto normal sobre branco é #767676 (4,54:1); #777777 já fica em 4,48:1 e falha. Para AAA, é preciso chegar a #595959 (7:1).

Texto sobre imagem

Uma foto tem áreas claras e escuras, e o contraste precisa funcionar na pior delas. Use o seletor de cor de imagem para capturar o pixel mais claro atrás de um texto branco e teste aqui. Se falhar, aplique uma camada escura semitransparente sobre a imagem ou coloque o texto sobre um fundo sólido.

Placeholder e texto de apoio

O texto de exemplo dentro de campos costuma ser um cinza bem claro. Se ele transmite informação, como o formato esperado de uma data, está sujeito aos mesmos 4,5:1. Melhor ainda: não use o placeholder como único rótulo do campo.

Estados de foco, hover e bordas

O contorno de foco e as bordas de campos são componentes visuais e precisam de 3:1 em relação às cores adjacentes pelo critério 1.4.11. A WCAG 2.2 acrescentou ainda o critério 2.4.13 (Aparência do foco, AAA), que trata do tamanho e do contraste do indicador de foco. Um hover que só muda levemente o tom também passa despercebido para muita gente.

Como corrigir uma combinação que não passa

Na maioria dos casos, a solução é mudar a luminosidade e manter o matiz: escureça o texto sobre fundos claros ou clareie-o sobre fundos escuros. Assim a cor continua reconhecível como parte da identidade visual. É exatamente o que a sugestão desta ferramenta faz: ela procura a cor de texto mais próxima da original, com o mesmo matiz, que atinge o nível AA ou AAA, e um botão aplica o ajuste na hora.

  1. Informe a cor do texto e a do fundo (o botão de inverter ajuda a testar a combinação ao contrário, como em modo escuro).
  2. Veja os selos e a prévia ao vivo.
  3. Se algum nível falhar, aplique a sugestão e confira se o resultado ainda combina com o restante da paleta.
  4. Copie o link da página: ele guarda as duas cores e pode ser enviado para a equipe revisar.

Contraste suficiente não resolve tudo. Evite comunicar informação apenas pela cor, como erro em vermelho e sucesso em verde sem ícone ou texto. O simulador de daltonismo mostra como sua paleta aparece para outras pessoas, e os guias de contraste e acessibilidade e de design para daltonismo trazem exemplos práticos.

Perguntas frequentes

Qual é o contraste mínimo recomendado pela WCAG?

Para o nível AA, texto normal precisa de pelo menos 4,5:1 e texto grande (a partir de 24 px, ou 18,66 px em negrito) de 3:1. No nível AAA, os mínimos sobem para 7:1 e 4,5:1.

Como a razão de contraste é calculada?

Pela luminância relativa das duas cores: (L1 + 0,05) / (L2 + 0,05), sendo L1 a cor mais clara. O resultado vai de 1:1 (mesma cor) a 21:1 (preto sobre branco).

O contraste também vale para ícones e botões?

Sim. A WCAG 2.1 exige 3:1 para componentes de interface e elementos gráficos necessários para entender o conteúdo, como bordas de campos e ícones.

O que fazer quando a combinação não passa?

Escureça ou clareie uma das cores. A ferramenta sugere automaticamente a cor mais próxima da original que atinge o nível escolhido, mantendo o mesmo matiz.