Pular para o conteúdo
nearnull

Verificador de Contraste de Cores

Verifique a razão de contraste entre uma cor de texto e uma de fundo segundo WCAG AA e AAA. Funciona totalmente no seu navegador: nada é enviado a nenhum servidor.

Cores
Resultados
Razão de contraste 14.04:1
Texto grande, 24px Texto normal a 16px. Um pequeno jabuti xereta viu dez cegonhas felizes.
Texto normal WCAG AA · 4.5:1
Passa
Texto grande WCAG AA · 3:1
Passa
Texto normal WCAG AAA · 7:1
Passa
Texto grande WCAG AAA · 4.5:1
Passa
Componentes de interface e gráficos WCAG AA · 3:1
Passa

O que é a razão de contraste de cores?

A razão de contraste compara a luminância relativa de duas cores em uma escala de 1:1 (idênticas) a 21:1 (preto sobre branco). As diretrizes de acessibilidade WCAG a usam para decidir se um texto é legível para pessoas com baixa visão ou deficiências de cor: o nível AA exige pelo menos 4.5:1 para texto normal e 3:1 para texto grande, o nível AAA eleva isso para 7:1 e 4.5:1, e ícones, bordas de inputs e outros gráficos com significado precisam de 3:1. Este verificador calcula a razão com a fórmula da WCAG, diz quais critérios um par de cores atende e, quando não chega lá, sugere a cor de texto mais próxima que passa, mantendo seu matiz.

Exemplos

A fórmula de luminância relativa e contraste da WCAG, e onde mais encontrá-la:

JavaScript
const lin = (c) => (c /= 255) <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
const lum = ([r, g, b]) => 0.2126 * lin(r) + 0.7152 * lin(g) + 0.0722 * lin(b);
const [hi, lo] = [lum(fg), lum(bg)].sort((a, b) => b - a);
const ratio = (hi + 0.05) / (lo + 0.05);
Python
def lin(c):
    c /= 255
    return c / 12.92 if c <= 0.04045 else ((c + 0.055) / 1.055) ** 2.4

def lum(r, g, b):
    return 0.2126 * lin(r) + 0.7152 * lin(g) + 0.0722 * lin(b)
PHP
function lin($c) { $c /= 255; return $c <= 0.04045 ? $c / 12.92 : (($c + 0.055) / 1.055) ** 2.4; }
function lum($r, $g, $b) { return 0.2126 * lin($r) + 0.7152 * lin($g) + 0.0722 * lin($b); }
Swift
func lin(_ c: Double) -> Double {
  let v = c / 255
  return v <= 0.04045 ? v / 12.92 : pow((v + 0.055) / 1.055, 2.4)
}

Casos de uso

Revisar um design antes do handoff

Verifique cada par de texto e fundo de um mockup, assim os problemas de acessibilidade são corrigidos no design e não descobertos em uma auditoria depois do lançamento.

Escolher cores de marca acessíveis

Descubra se uma cor de marca serve para texto corrido ou apenas para títulos grandes e decoração, e ajuste a luminosidade até passar.

Corrigir apontamentos de auditoria

Auditorias automáticas como o Lighthouse sinalizam texto com baixo contraste. Cole aqui as cores reportadas para ver por quanto falham e testar uma substituta.

Verificar estados e modo escuro

Texto em hover, desabilitado e placeholders, e cada cor do tema escuro, precisam de sua própria verificação. Inverta as cores para testar pares invertidos rapidamente.

Perguntas frequentes

O que conta como texto grande?
A WCAG define texto grande como pelo menos 18 pontos (24 pixels CSS) em peso normal, ou 14 pontos (cerca de 18.7 pixels CSS) em negrito. Qualquer coisa menor é texto normal e precisa da razão mais alta.
Por que 4.49:1 falha se arredonda para 4.5?
Os limites da WCAG são mínimos estritos, então a razão nunca é arredondada para cima. Esta ferramenta trunca a razão exibida em duas casas decimais pelo mesmo motivo, assim o número e o veredito sempre coincidem.
Como as cores transparentes são tratadas?
Um fundo translúcido primeiro é pintado sobre branco, depois a cor do texto é pintada sobre esse resultado, e a razão é medida nessas cores finais, que é o que um usuário vê em uma página branca.
Preciso de AA ou AAA?
A maioria das leis e políticas que referenciam a WCAG, como o European Accessibility Act e a Section 508, exige nível AA. AAA é um alvo mais rigoroso que vale buscar no texto corrido, mas não é exigido para sites inteiros.
Meus dados são enviados a algum servidor?
Não. A razão é calculada no seu navegador com JavaScript puro. Nada do que você informa é transmitido ou armazenado.