Ferramentas de Design
February 23, 20268 min readBy BrowseryTools Team

Contraste de Cores e Acessibilidade Web: Um Guia Completo sobre WCAG

Aprenda por que o contraste de cores é essencial para a acessibilidade, como calcular razões de contraste, o que significam os níveis WCAG AA e AAA, e como verificar qualquer combinação de cores instantaneamente.

acessibilidadeWCAGcontraste de coresa11ydesignUX

Toda vez que você precisa franzir os olhos para ler um texto muito claro num site, ou tem dificuldade para ler o rótulo de um botão porque ele se confunde com o fundo, você está vivenciando uma falha de contraste. Para a maioria das pessoas, isso é uma inconveniência menor. Para uma parcela significativa da população — aquelas com deficiências na visão de cores, baixa visão, olhos envelhecidos ou qualquer pessoa usando uma tela sob luz solar intensa — isso torna o conteúdo genuinamente inacessível. O contraste de cores é um dos aspectos mais impactantes e mais frequentemente violados da acessibilidade na web, e também um dos mais fáceis de corrigir quando você entende as regras. Este guia explica o padrão, a matemática, os erros comuns e como usar o Verificador de Contraste de Cores do BrowseryTools para verificar qualquer par de cores instantaneamente no seu navegador.

Por que o Contraste Importa

A escala da população afetada é maior do que a maioria dos designers imagina. De acordo com a Organização Mundial da Saúde, aproximadamente 2,2 bilhões de pessoas no mundo têm alguma forma de deficiência visual de perto ou de longe. A deficiência na visão de cores — comumente chamada de daltonismo — afeta cerca de 8% dos homens e 0,5% das mulheres de descendência do norte europeu, o que significa que cerca de 300 milhões de pessoas no mundo têm alguma dificuldade para distinguir certas cores.

Além das condições permanentes, o contraste afeta todos situacionalmente:

  • Ler um celular sob luz solar intensa apaga completamente textos de baixo contraste.
  • Monitores velhos ou de orçamento limitado têm brilho reduzido e pior precisão de cores.
  • Pessoas com enxaqueca e sensibilidade à luz frequentemente usam telas com brilho reduzido.
  • O reflexo da tela por janelas ou luzes de teto efetivamente reduz o contraste percebido.
  • Usuários com pressa — essencialmente todos — processam conteúdo de alto contraste mais rapidamente.

Bom contraste não é uma acomodação de nicho. Melhora a experiência de todos os usuários, em todos os dispositivos, em todas as condições de iluminação.

O que é Razão de Contraste?

A razão de contraste é um número padronizado que expressa o quão diferentes duas cores são em termos de seu brilho relativo (luminância). É sempre expressa como uma proporção: a cor mais clara dividida pela mais escura, com 0,05 adicionado a cada uma para evitar divisão por zero e para levar em conta a luz ambiente em displays reais.

O intervalo vai de 1:1 (duas cores idênticas — zero contraste, completamente ilegível) a 21:1 (preto puro sobre branco puro — o contraste máximo possível). Quanto maior a proporção, mais distinguíveis são as duas cores.

Como a Razão de Contraste é Calculada

A fórmula usada pelo WCAG (e por todo o ecossistema de padrões da web) baseia-se no conceito de luminância relativa — uma medida de quanta luz uma cor parece emitir, ajustada para a percepção visual humana. O cálculo acontece em duas etapas.

Etapa 1: Calcular a luminância relativa (L) para cada cor.

Primeiro, converta cada canal RGB do intervalo 0–255 para uma escala linear de 0–1, depois aplique uma fórmula de expansão de gama para levar em conta como os displays codificam o brilho:

// Para cada valor de canal c em [0, 1]:
if c <= 0.04045:
    c_linear = c / 12.92
else:
    c_linear = ((c + 0.055) / 1.055) ^ 2.4

L = 0.2126 × R_linear + 0.7152 × G_linear + 0.0722 × B_linear

Os coeficientes 0.2126, 0.7152 e 0.0722 refletem a sensibilidade humana às cores: nossos olhos são mais sensíveis ao verde, moderadamente sensíveis ao vermelho e menos sensíveis ao azul.

Etapa 2: Calcular a razão de contraste.

Razão de Contraste = (L_mais_clara + 0.05) / (L_mais_escura + 0.05)

Onde L_mais_clara é a luminância relativa da cor mais clara e L_mais_escura é a luminância relativa da cor mais escura.

Exemplos de Cálculo

  • Preto (#000000) sobre branco (#FFFFFF): L(branco) = 1,0, L(preto) = 0,0. Proporção = (1,0 + 0,05) / (0,0 + 0,05) = 1,05 / 0,05 = 21:1. Contraste máximo possível.
  • Cinza #767676 sobre branco (#FFFFFF): L(#767676) ≈ 0,216. Proporção = (1,0 + 0,05) / (0,216 + 0,05) ≈ 1,05 / 0,266 ≈ 4,54:1. Isso mal passa no WCAG AA para texto normal.
  • Cinza #999999 sobre branco (#FFFFFF): L(#999999) ≈ 0,319. Proporção = (1,0 + 0,05) / (0,319 + 0,05) ≈ 1,05 / 0,369 ≈ 2,85:1. Isso não passa no WCAG AA para texto de nenhum tamanho.

WCAG: O Padrão que Define os Requisitos de Acessibilidade

As Diretrizes de Acessibilidade para Conteúdo Web (WCAG) são publicadas pelo World Wide Web Consortium (W3C) e definem o padrão internacionalmente reconhecido para acessibilidade na web. A versão atual em uso regulatório generalizado é o WCAG 2.1, publicado em 2018. O WCAG 3.0 está em desenvolvimento e eventualmente o substituirá com um sistema de medição mais refinado, mas o WCAG 2.1 continua sendo o padrão operativo para fins de conformidade.

O WCAG organiza os requisitos em três níveis de conformidade: A (mínimo), AA (padrão) e AAA (aprimorado). O nível AA é o que a maioria dos frameworks legais exige. O nível AAA é aspiracional e não é obrigatório para sites inteiros, apenas para contextos específicos.

Requisitos de Contraste do WCAG 2.1 em Resumo

  • Nível AA — Texto normal: razão de contraste mínima de 4,5:1
  • Nível AA — Texto grande: razão de contraste mínima de 3:1(texto grande = 18pt / 24px peso regular, ou 14pt / ~18,67px em negrito)
  • Nível AA — Componentes de interface e objetos gráficos: razão de contraste mínima de 3:1(aplica-se a bordas de botões, contornos de campos de entrada, ícones que transmitem significado)
  • Nível AAA — Texto normal: razão de contraste mínima de 7:1
  • Nível AAA — Texto grande: razão de contraste mínima de 4,5:1

É importante notar ao que os requisitos de contraste não se aplicam: imagens decorativas sem conteúdo informacional, logotipos e marcas nominais e texto que faz parte de um componente de interface inativo (um botão desabilitado, por exemplo) estão todos isentos dos requisitos de contraste no WCAG 2.1. A intenção é proteger o conteúdo informacional, não elementos puramente decorativos.

Pares de Cores: Exemplos de Aprovação e Reprovação

A razão de contraste de um par de cores depende inteiramente da luminância relativa das duas cores — não de qual cor é "mais bonita" ou de quais parecem similares para você. Aqui estão exemplos representativos ao longo do espectro de aprovação/reprovação:

Cor do TextoCor do FundoRazão de ContrasteAA NormalAAA Normal
#000000 (preto)#FFFFFF (branco)21:1AprovadoAprovado
#1a1a2e (azul-marinho escuro)#FFFFFF (branco)18,1:1AprovadoAprovado
#595959 (cinza escuro)#FFFFFF (branco)7,0:1AprovadoAprovado
#767676 (cinza médio)#FFFFFF (branco)4,54:1AprovadoReprovado
#FFFFFF (branco)#4f46e5 (índigo)5,9:1AprovadoReprovado
#999999 (cinza claro)#FFFFFF (branco)2,85:1ReprovadoReprovado
#FFFFFF (branco)#ffdd00 (amarelo)1,29:1ReprovadoReprovado
#0000ee (link azul)#6b21a8 (roxo)1,7:1ReprovadoReprovado

Erros Comuns de Contraste

Os mesmos erros aparecem repetidamente em auditorias de acessibilidade na web. Conhecê-los pelo nome facilita identificá-los no seu próprio trabalho.

Texto Cinza Claro sobre Branco

Esta é de longe a falha de contraste mais comum na web moderna. As tendências de design minimalista produziram uma geração de interfaces onde o texto do corpo, legendas, metadados e textos de placeholder são renderizados em tons como #aaaaaa, #bbbbbb ou #cccccc sobre fundos brancos. Essas combinações tipicamente produzem razões de contraste entre 1,5:1 e 2,5:1 — bem abaixo do mínimo de 4,5:1. O designer consegue ler num monitor calibrado de estúdio em sala escura; o usuário final num smartphone sob luz solar da tarde não consegue.

Texto Branco em Botões Coloridos

Texto branco sobre amarelo (#ffdd00), verde-limão (#84cc16) ou laranja claro (#fb923c) não passa no WCAG AA em nenhum tamanho de texto. Essas combinações de cores são visualmente marcantes, mas o contraste é muito baixo. Texto escuro (preto ou cinza muito escuro) sobre esses fundos claros é a solução acessível — geralmente alcança razões acima de 10:1.

Texto Placeholder em Campos de Formulário

O texto de placeholder padrão dos navegadores — o texto de dica que aparece em campos de entrada vazios antes do usuário digitar — é tipicamente renderizado com cerca de 40% de opacidade da cor do texto, ou como um cinza médio como #aaaaaa. Isso universalmente não passa no WCAG AA. O texto placeholder está sujeito ao mesmo requisito de contraste de 4,5:1 que o texto regular, porque transmite informação sobre o que digitar.

Links Azuis em Fundos Coloridos ou Escuros

A cor tradicional de hiperlink azul (#0000ee) tem excelente contraste sobre branco (8,6:1), mas falha em fundos coloridos. Em um fundo roxo médio, o mesmo link azul alcança apenas cerca de 1,7:1. As cores dos links precisam ser verificadas não apenas contra o fundo da página, mas contra qualquer seção colorida ou card em que apareçam.

Estados Desabilitados e Indicadores de Foco

Embora o WCAG 2.1 isente componentes de interface desabilitados dos requisitos de contraste, os indicadores de foco — o anel ou contorno visível que aparece quando um usuário navega por tabulação para um elemento focável — devem atender a 3:1 de contraste contra as cores adjacentes sob o WCAG 2.2. Muitos sites suprimem o anel de foco padrão do navegador com outline: none sem fornecer substituto, o que é uma falha de acessibilidade para usuários que usam apenas o teclado.

Técnicas para Escolher Cores Acessíveis

Comece Escuro sobre Claro

O padrão mais simples para texto é texto quase preto sobre fundo branco ou cinza muito claro. Razões acima de 10:1 são fáceis de alcançar e oferecem enorme flexibilidade com tamanho e peso da fonte. Reserve esquemas de cores claras sobre escuras (modo escuro) para superfícies secundárias e certifique-se de verificar o contraste em ambos os temas.

Verifique Todos os Estados Interativos

O estado padrão de um botão pode passar no AA enquanto seu estado de hover — que clareia o fundo — fica abaixo de 4,5:1. Verifique os estados padrão, hover, foco, ativo e desabilitado separadamente. O estado desabilitado está isento do requisito, mas todos os outros devem passar.

A Regra 60-30-10 Aplicada com Acessibilidade

A regra de cores 60-30-10 (60% cor dominante, 30% cor secundária, 10% cor de destaque) é útil para hierarquia visual. Aplicá-la de forma acessível significa: verificar que o texto que aparece em cada uma dessas três zonas de cor atende ao limiar de contraste para aquela zona individualmente. A cor de destaque em 10% é frequentemente a mais problemática — cores de destaque vivas combinadas com texto branco ou escuro podem falhar em certas combinações de matiz e saturação.

Use o Verificador de Contraste Antes de Confirmar

O momento mais barato para corrigir um problema de contraste é antes de você codificar qualquer coisa. Ao selecionar cores em uma ferramenta de design, verifique imediatamente os pares texto/fundo pretendidos. Ajustar a luminosidade de uma cor em 10–15% frequentemente coloca uma combinação reprovada em conformidade sem alterar significativamente o caráter visual do design.

Requisitos Legais

A conformidade com o WCAG não é puramente voluntária em muitas jurisdições. Frameworks legais que referenciam o WCAG AA incluem:

  • Estados Unidos — Americans with Disabilities Act (ADA): A ADA proíbe discriminação por deficiência em locais de acomodação pública. Tribunais federais e o Departamento de Justiça interpretaram isso como cobrindo sites comerciais. Milhares de ações judiciais de acessibilidade ADA são ajuizadas em tribunais federais dos EUA anualmente, com violações de contraste de cores frequentemente citadas em cartas de notificação.
  • União Europeia — EN 301 549: A Diretiva de Acessibilidade Web da UE exige conformidade WCAG 2.1 Nível AA para sites e aplicativos móveis do setor público. A EN 301 549 é o padrão técnico usado para aquisições. Organizações do setor privado em setores regulamentados enfrentam requisitos crescentes também.
  • Canadá — AODA (Lei de Acessibilidade para Ontarianos com Deficiências): Ontario exige conformidade WCAG 2.0 Nível AA para organizações do setor privado com 50 ou mais funcionários e para todas as organizações do setor público.
  • Reino Unido — Lei da Igualdade de 2010: Os prestadores de serviços têm o dever de fazer ajustes razoáveis para pessoas com deficiência, o que o governo do Reino Unido interpreta como incluindo acessibilidade de sites.

Além do risco legal, muitos clientes corporativos e processos de compras governamentais agora exigem conformidade WCAG AA em contratos com fornecedores. A conformidade com acessibilidade é cada vez mais um requisito comercial, não apenas ético.

Requisito Essencial para Lembrar

O WCAG 2.1 Nível AA exige uma razão de contraste de 4,5:1 para texto normal e 3:1 para texto grande (18pt+ ou 14pt+ em negrito). Contornos de componentes de interface e ícones significativos também exigem 3:1. Não atingir esses limiares significa não passar no padrão de acessibilidade mais amplamente exigido na web.

Quem se Beneficia Além das Pessoas com Deficiência

Contraste acessível é um bom design para todos. Pesquisas em experiência do usuário consistentemente mostram que texto de alto contraste é lido mais rapidamente e com menos erros em todos os grupos de usuários. As populações que mais se beneficiam demonstravelmente incluem:

  • Pessoas com deficiência na visão de cores (vermelho-verde, azul-amarelo ou monocromacia)
  • Adultos mais velhos, para quem a sensibilidade ao contraste diminui naturalmente com a idade
  • Pessoas com baixa visão que não usam ampliação de tela
  • Usuários em ambientes com alta luz ambiente (ao ar livre, perto de janelas)
  • Usuários com displays de baixa qualidade, envelhecidos ou de orçamento limitado
  • Qualquer pessoa sob carga cognitiva — quando cansado ou distraído, alto contraste reduz erros de leitura

Como Usar o Verificador de Contraste de Cores do BrowseryTools

O Verificador de Contraste de Cores do BrowseryTools torna trivial verificar qualquer combinação de cores em relação aos padrões WCAG:

  • Insira códigos hex: Digite ou cole qualquer código de cor hex válido (3 ou 6 dígitos, com ou sem o prefixo #) nos campos de primeiro plano e fundo.
  • Veja a proporção imediatamente: A razão de contraste é calculada e exibida em tempo real enquanto você digita — sem botão para clicar.
  • Selos AA e AAA: Selos claros de aprovação/reprovação são mostrados para texto AA normal, texto AA grande, texto AAA normal e texto AAA grande — para que você possa ver exatamente quais limiares seu par atende.
  • Visualização ao vivo: A ferramenta renderiza uma amostra de texto no fundo escolhido para que você possa ver a combinação como ela apareceria para um usuário.
  • Use o seletor de cores: Se você não tem um valor hex específico em mente, o seletor de cores integrado permite selecionar cores visualmente e ver instantaneamente como a proporção muda ao navegar pelo espaço de cores.
Tudo é executado localmente no seu navegador. O Verificador de Contraste de Cores realiza todos os cálculos de luminância usando JavaScript na aba do seu navegador. Nenhum valor de cor é transmitido para qualquer servidor. Não há contas, logs de histórico nem análises de terceiros envolvidos no cálculo. Feche a aba e tudo desaparece.

Verifique qualquer combinação de cores em relação ao WCAG AA e AAA instantaneamente

Insira dois códigos hex e veja a razão de contraste, o status de aprovação/reprovação e uma prévia de texto ao vivo. Sem cadastro. Nada é enviado.

Abrir Verificador de Contraste de Cores →

🛠️

Try the Tools — 100% Free, No Sign-Up

Everything runs in your browser. No uploads. No accounts. No ads.

Explore All Tools →