ForHosting KIT · Imagens

Cor de texto acessível

Corrija um texto com pouco contraste sem perder a matiz: o cinza #888888 sobre branco só chega a 3.54 para 1, então é escurecido para #767676 e alcança 4.54 para 1, logo acima da meta de 4.5. Só a luminosidade muda. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Fundo
#ffffff
Texto
#888888
Razão-alvo
4,5
Você obtém
Razão original
3,54
Razão sugerida
4,54
Direção
darken
Luminosidade antes
53,33

Este sugeridor de cor de texto acessível recebe uma cor hex de fundo, uma hex de texto inicial e uma taxa de contraste WCAG alvo, e devolve uma cor de texto sugerida que atinge essa taxa deslocando apenas a luminosidade HSL. Matiz e saturação permanecem fixos, assim um azul de marca continua azul enquanto escurece ou clareia o suficiente para passar AA ou AAA na superfície informada. Se a cor inicial já atinge o alvo, ela volta inalterada e marcada como não ajustada. Designers, autores de tokens de design e jobs de CI usam isso quando um verificador de contraste não basta: precisam de uma hex de substituição determinística, não só de um sinal de passou ou falhou. Não há chamadas de rede, sementes aleatórias nem leitura de relógio.

Como uma busca de luminosidade atinge um alvo de contraste WCAG

Contraste na web não é questão de gosto. As Diretrizes de Acessibilidade para Conteúdo Web definem uma única taxa de contraste a partir da luminância relativa, para que o texto de corpo, botões e rótulos permaneçam legíveis para pessoas com baixa visão. Este sugeridor parte da sua hex de fundo e de uma hex de texto inicial e altera só a luminosidade dessa cor de texto em HSL até a taxa WCAG 2.x contra o fundo atingir o alvo que você pediu.

Matiz e saturação ficam no lugar, assim um navy de marca continua navy e um vermelho de marca continua vermelho; só muda o quão clara ou escura é a tinta. O motor lineariza cada canal sRGB com a curva oficial por partes, monta a luminância com os pesos 0.2126, 0.7152 e 0.0722 e calcula a luminância mais clara mais 0.05 dividida pela mais escura mais 0.05.

Em seguida percorre a luminosidade HSL em décimos de por cento determinísticos rumo ao preto e rumo ao branco, converte cada passo de volta a RGB de 8 bits e guarda a primeira hex quantizada em cada sentido que atinge o alvo sem arredondar. Vence o candidato com a menor mudança de luminosidade; um empate prefere escurecer, o ajuste usual para tipo cinza sobre um cartão claro. Se a cor inicial já atinge o alvo, ela volta inalterada para que tokens não sejam reescritos sem motivo.

Não há jitter aleatório, consulta de rede nem atalho que dependa da data: as mesmas três entradas sempre produzem a mesma hex sugerida e as mesmas flags de validação.

Onde um sugeridor de cor de texto acessível justifica o espaço

Equipes de produto chegam a esta página quando um cinza de marca parece elegante num slide de marketing mas falha como texto de corpo sobre um cartão branco, quando um tema de modo escuro é gerado a partir de tokens claros, ou quando as partes jurídicas pedem uma hex de substituição em vez de uma opinião de captura de tela.

Designers colam uma superfície e uma tinta inicial do Figma ou de um arquivo de tokens e levam a hex sugerida de volta à paleta, em vez de empurrar a olho um controle de luminosidade. Especialistas de QA e acessibilidade anexam a taxa original, a taxa sugerida e a hex sugerida aos tickets para que os desenvolvedores corrijam o par exato. Equipes de conteúdo e marketing verificam se as cores de campanha ainda têm um companheiro de texto legal ao colocá-las sobre fundos claros ou escuros do site.

Se você só precisa medir um par que já escolheu, use uma landing de verificador de contraste; esta página é dona da intenção de sugerir uma cor de texto que passe.

Corrigir tokens de corpo que reprovam

Diante de um cinza de marca que não atinge AA num cartão branco, obtenha a hex mais escura mais próxima que passe 4.5:1 sem mudar o matiz.

Tinta para modo escuro e modo claro

A partir de uma só cor de texto inicial, derive um companheiro que passe numa superfície clara e outro que passe numa superfície escura.

Como o sugeridor de cor de texto acessível escolhe uma hex?

Ele mantém o matiz e a saturação iniciais, percorre a luminosidade HSL rumo ao preto e rumo ao branco e devolve a hex quantizada mais próxima cujo contraste WCAG 2.x atinge o alvo. Um empate prefere escurecer.

Quais taxas alvo você pode pedir?

Qualquer número finito de 1 a 21 inclusive. O padrão é 4.5 (AA de texto normal). Use 3 para AA de texto grande e 7 para AAA de texto normal.

Quanto custa o sugeridor de cor de texto acessível?

A ferramenta do navegador é gratuita e roda no seu computador.

E se nenhuma variação da minha cor atingir a meta?

Você recebe mesmo assim o melhor extremo, preto ou branco, marcado claramente como abaixo da meta. Isso acontece, por exemplo, ao pedir AAA 7 para 1 sobre um cartão cinza médio.

A matiz da minha cor de marca vai mudar?

Não. Matiz e saturação ficam fixas e só a luminosidade muda: um azul-marinho da marca continua azul-marinho, apenas mais escuro ou mais claro até atingir o contraste.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/color/suggest-accessible-text

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/color/suggest-accessible-text \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"background":"#ffffff","text":"#888888"}'
{
  "background": "#ffffff",
  "text": "#888888"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "color.suggest_accessible_text",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_color_chars32
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Se nenhuma luminosidade desse matiz alcança o alvo — por exemplo AAA 7:1 num cartão cinza médio — o motor ainda devolve o extremo melhor, preto ou branco, e define meets_target como false para que um pipeline possa falhar de forma fechada. Chamadas de API bem-sucedidas são cobradas a US$ 0,002 por item; entrada inválida não é cobrada.

O que você envia, o que recebe de volta e como a validação funciona

Envie uma hex de fundo e uma hex de texto inicial. Alvos comuns são 3 para AA de texto grande, 4.5 para AA normal e 7 para AAA normal; qualquer número finito de 1 a 21 inclusive é aceito porque esse é o intervalo WCAG de cores idênticas até preto sobre branco. Uma string formula curta documenta a regra. Um target_ratio opcional vale 4.5 por padrão, o limiar AA de texto normal. Fundo também aceita o alias bg; texto aceita foreground, fg e color; target_ratio aceita ratio e target. Campos ausentes, caracteres não hex, formas alfa, comprimentos errados, NaN, Infinity e um alvo fora do intervalo fechado falham com invalid_input e não são cobrados. Em caso de sucesso a resposta ecoa amostras normalizadas de seis dígitos para fundo, texto e sugerido, com strings rgb imprimíveis. original_ratio e suggested_ratio são arredondados a dois decimais para exibição, enquanto meets_target compara a taxa sugerida sem arredondar com o alvo, para que um 4.50 impresso não esconda um verdadeiro 4.499. adjusted diz se a hex de fato se moveu; direction é none, darken ou lighten. lightness_before e lightness_after tornam o passo HSL auditável. O objeto wcag informa normal_aa, normal_aaa, large_aa e large_aaa do par sugerido para que um revisor veja a matriz inteira, não só o alvo pedido. Combine o formulário gratuito do navegador com a API idêntica a US$ 0,002 por item bem-sucedido quando um pipeline de tokens de design precisar da mesma hex em integração contínua.

Onde um sugeridor de cor de texto acessível justifica o espaço

Engenheiros ligam o mesmo contrato a checagens de pull request que reescrevem ou rejeitam um token quando o AA de texto normal cairia abaixo de 4.5, e leem meets_target para que um pedido AAA impossível em cinza médio não publique preto em silêncio como se tivesse passado. Como esta capacidade é um motor parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação falha não consome saldo.

Portões de CI que precisam de uma hex de substituição

Chame a API a partir de pull requests para reescrever ou rejeitar tokens quando o par sugerido ainda não puder atingir o alvo WCAG pedido.

E se nenhuma cor de texto neste matiz puder atingir o alvo?

O motor devolve o melhor entre preto ou branco e define meets_target como false. Isso ocorre em alguns fundos cinza médio quando você pede 7:1.

Quais formatos de cor são aceitos?

Só hex: #RGB ou #RRGGBB, com ou sem o cerquilha inicial, sem distinguir maiúsculas. rgb(), hsl(), cores nomeadas e hex alfa são rejeitados com invalid_input.

Ver a documentação completa do KIT →