Como Verificar o Contraste de Cores para Acessibilidade

· 7 min de leitura

Aproximadamente 1 em cada 12 homens e 1 em cada 200 mulheres tem alguma forma de deficiencia de visao de cor. Milhoes a mais tem baixa visao, olhos envelhecidos ou estao visualizando telas sob luz solar brilhante. Se seu texto nao tem contraste suficiente contra seu fundo, essas pessoas nao podem le-lo. Contraste de cor nao e apenas algo bom de ter, e um requisito basico de acessibilidade. Um verificador de contraste baseado em navegador lida com todo o trabalho localmente sem enviar nenhuma cor ou dados para um servidor.

O que WCAG exige

As Diretrizes de Acessibilidade de Conteudo Web (WCAG) definem proporcoes minimas de contraste entre texto e seu fundo:

NivelTexto normalTexto grandeUI nao-texto
AA (minimo)4,5:13:13:1
AAA (melhorado)7:14,5:13:1

«Texto grande» significa 18px em negrito ou 24px regular ou maior. A proporcao de contraste varia de 1:1 (sem contraste, branco sobre branco) a 21:1 (contraste maximo, preto sobre branco).

Como verificar o contraste

  1. Selecione suas cores: insira as cores de primeiro plano (texto) e fundo usando codigos HEX, valores RGB ou seletores de cor.
  2. Verifique os resultados: a ferramenta mostra instantaneamente a proporcao de contraste e se sua combinacao passa em WCAG AA e AAA para texto normal e grande.
  3. Ajuste se necessario: se o contraste falhar, escureca o texto ou clareie o fundo (ou vice-versa) ate passar no nivel necessario.

Uma breve historia dos padroes de contraste de cor

Antes do WCAG, a acessibilidade web era uma colcha de retalhos de regras especificas de fornecedores. O W3C publicou o WCAG 1.0 em 1999, com orientacao de contraste mas sem proporcao especifica. WCAG 2.0 (2008) introduziu a formula 4,5:1 / 7:1 baseada na ciencia das cores da Dra. Lillian Yetenekian e do laboratorio de pesquisa da IBM, com a contribuicao de pesquisadores de baixa visao. A formula foi projetada para que uma pessoa com visao 20/40 (baixa visao leve) possa ler texto em conformidade com AA, e uma pessoa com visao 20/80 (baixa visao significativa) possa ler texto em conformidade com AAA.

WCAG 2.1 (2018) adicionou requisitos de contraste para componentes de UI (3:1 para nao-texto), objetos graficos e indicadores de foco. WCAG 2.2 (2023) adicionou mais requisitos em torno de tamanhos de alvo e visibilidade de foco.

O rascunho de trabalho atual do WCAG 3.0 propoe uma nova formula de contraste (APCA, Accessible Perceptual Contrast Algorithm) que se ajusta melhor a percepcao humana, especialmente para texto mais escuro. APCA ainda nao e uma recomendacao do W3C, mas ja e suportada por algumas ferramentas como previa.

A adocao legal do WCAG tem sido constante:

Para a maioria dos sites publicos, WCAG 2.1 AA e o minimo legal de fato.

Como a proporcao de contraste e calculada

A proporcao de contraste e calculada usando a luminancia relativa de cada cor:

  1. Converter cada cor de sRGB para RGB linear (correcao gamma)
  2. Calcular luminancia relativa: L = 0,2126 R + 0,7152 G + 0,0722 B
  3. Contraste = (L_mais_claro + 0,05) / (L_mais_escuro + 0,05)

O resultado e um numero de 1 (sem contraste) a 21 (contraste maximo). Os deslocamentos de 0,05 impedem a divisao por zero e modelam levemente a contribuicao da luz ambiente para o contraste percebido.

A formula foi deliberadamente projetada para ser deterministica e computavel, de modo que as mesmas cores sempre produzam a mesma proporcao. Ela nao leva em conta:

E por isso que as verificacoes WCAG sao necessarias mas nao suficientes. A revisao visual com usuarios diversos (incluindo aqueles com daltonismo) captura o restante.

Erros de contraste comuns

Texto cinza claro em branco: #999999 em #ffffff tem uma proporcao de apenas 2,8:1. Isso falha em WCAG AA. Pode parecer «limpo» para um designer com visao perfeita, mas e ilegivel para muitas pessoas.

Texto colorido em fundos coloridos: um botao azul com texto branco frequentemente passa, mas um botao verde com texto branco pode nao passar. Sempre verifique, voce nao pode julgar a proporcao de contraste a olho.

Texto de placeholder: os placeholders de campo de formulario sao notoriamente de baixo contraste. Embora o WCAG nao exija estritamente que os placeholders atendam as proporcoes de contraste, os usuarios ainda precisam le-los.

Modo escuro: os designers frequentemente usam texto cinza medio em fundos cinza escuros para uma aparencia «sutil». Isso frequentemente falha nas verificacoes de contraste.

Texto sobre imagens: o texto colocado sobre uma imagem heroi frequentemente passa quando a imagem e escura e falha quando a imagem e clara. Use uma sobreposicao de gradiente escuro/claro ou um fundo solido atras do texto sobre imagens.

Mudancas de cor de marca: a identidade corporativa frequentemente dita uma cor primaria de marca. Se essa cor falhar como texto do corpo, use-a para titulos (texto grande, limite 3:1) e use um tom mais escuro para o corpo.

Cores de link: links devem ser distinguiveis do texto circundante. WCAG exige uma proporcao de 3:1 entre link e texto do corpo, mais outra pista visual (sublinhado, negrito ou icone).

Indicadores de foco: o contorno em torno de um botao ou link focado deve atender 3:1 de contraste contra seu fundo. Os aneis de foco padrao do navegador sao geralmente seguros; estilos de foco personalizados frequentemente falham.

Armadilhas comuns

Alem do WCAG: APCA e contraste perceptual moderno

O Algoritmo Acessivel de Contraste Perceptual (APCA) e uma formula mais nova proposta por Andrew Somers para WCAG 3.0. Ao contrario da formula WCAG 2, APCA:

As pontuacoes APCA variam aproximadamente de -108 a +108. Uma pontuacao de 60 (positiva ou negativa) e aproximadamente equivalente a 4,5:1 do WCAG 2. APCA ainda nao e legalmente exigido em lugar nenhum, mas esta sendo adotado por sistemas de design como Material Design e IBM Carbon como um padrao olhando para o futuro.

Para a maioria dos propositos praticos hoje, WCAG 2.1 AA (4,5:1 / 3:1) permanece o padrao legal e da industria. Algumas equipes usam APCA em paralelo como verificacao de qualidade.

Ferramentas e integracoes

FerramentaCaso de uso
Browser DevTools (Chrome, Firefox)Inspecionar elemento mostra proporcao de contraste em tempo real
axe DevToolsAuditoria WCAG automatizada incluindo contraste
WAVE (WebAIM)Extensao de navegador visualizando erros de contraste
Stark (plugin Figma)Verificacao de contraste em tempo de design
Color Contrast Analyser (TPGi)App de desktop com conta-gotas
Lighthouse (Chrome)Auditoria de acessibilidade integrada incluindo contraste
ARC Toolkit (Deque)Extensao de navegador de acessibilidade abrangente
PolypaneNavegador para designers com ferramentas de contraste integradas
GitHub Action: a11y-actionsVerificacoes automatizadas em nivel PR
CI: pa11y, axe-core/cliBloqueia PRs que introduzem falhas de contraste

Integre pelo menos uma ferramenta automatizada em CI para que falhas de contraste nao possam ser enviadas sem serem detectadas.

Dicas

Privacidade e dados de design

O verificador de contraste de cor roda inteiramente no seu navegador. As cores e valores que voce insere, os calculos e os resultados de contraste ficam todos no seu dispositivo. Nada e enviado para um servidor, registrado ou compartilhado com ninguem.

Isso importa menos para cores individuais (elas nao sao secretas) e mais para verificacao em lote ou trabalho de sistema de design onde voce pode colar uma paleta de marca completa, cores internas de mockup de produto, ou especificacoes de UI de produto nao lancadas. Ferramentas de contraste em nuvem registram cada colagem em seus logs de requisicao, as vezes os retem para «melhoria do servico», e poderiam vazar cores de marca nao lancadas ou designs UI. Um verificador baseado em navegador tem exposicao zero: as cores nunca saem da sua maquina.

A verificacao de contraste baseada em navegador tambem funciona offline depois que a pagina e carregada, util para revisoes de design em avioes, em ambientes seguros sem acesso a internet, ou em qualquer lugar onde voce nao pode ou nao deveria compartilhar dados de design com um servico de terceiros.

Perguntas frequentes

Qual taxa de contraste devo buscar?

Para texto normal, mire em pelo menos 4,5:1 (WCAG AA). Para texto grande (18px em negrito ou 24px normal), 3:1 é suficiente. Para o padrão máximo de acessibilidade (AAA), busque 7:1 para texto normal.

Isso se aplica apenas a texto?

Não. O WCAG 2.1 também exige contraste suficiente para componentes de interface e objetos gráficos (ícones, bordas de formulários, indicadores de foco). O mínimo para elementos não textuais é 3:1.

E quanto ao modo escuro?

O modo escuro precisa das mesmas verificações de contraste. Texto branco em fundo escuro costuma passar facilmente, mas texto cinza em fundo cinza escuro frequentemente falha. Teste os dois modos.

O contraste de cores é uma exigência legal?

Em muitas jurisdições, sim. A ADA (EUA), a EN 301 549 (UE) e leis semelhantes exigem acessibilidade digital. A conformidade com o WCAG é o padrão reconhecido para atender a esses requisitos.