Verifique paletas para protanopia e deuteranopia
Uma paleta categórica precisa fazer mais do que parecer atraente em condições comuns.
Executar grátis
Suas cores devem continuar separáveis quando uma pessoa com deficiência frequente de visão vermelho-verde observa um gráfico, mapa, painel ou interface. Este verificador simula protanopia e deuteranopia completas, mede cada par em um espaço de cor perceptual e identifica pares abaixo do limite escolhido. Ele oferece um alerta inicial reproduzível, enquanto a análise final de rótulos, formas, estilos de linha e tamanhos reais permanece a cargo do design.
Teste todas as relações da paleta categórica
A cor categórica diferencia classes independentes: linhas de produto em um gráfico, rotas em um mapa, estados em um painel ou equipes em um planejamento. Uma paleta pode parecer variada e ainda conter duas cores que convergem para uma pessoa com deficiência de visão vermelho-verde. Insira de duas a sessenta e quatro cores hexadecimais. O verificador normaliza a notação curta e longa, avalia cada par único e devolve os índices originais para que você localize as amostras exatas no sistema de origem. O resultado informa se a paleta passou, quantos pares foram examinados e quais precisam de atenção. Também devolve cores hexadecimais simuladas para protanopia e deuteranopia, facilitando a inspeção ou reprodução do cálculo. Use um par sinalizado como motivo para aumentar a diferença de luminosidade, saturação ou matiz e execute novamente. Cores duplicadas são sinalizadas porque a distância perceptual é zero. Notação inválida, listas grandes demais e paletas com menos de duas cores são rejeitadas para não gerar conclusões enganosas.
Entenda a simulação e o limite
O cálculo primeiro decodifica cada cor sRGB e lineariza seus canais, pois matrizes de deficiência não devem ser aplicadas diretamente a valores de tela com gama. Em seguida, aplica separadamente matrizes estabelecidas de intensidade completa para protanopia e deuteranopia, converte cada resultado simulado em CIE Lab e mede a separação pela fórmula CIE76. Um par é sinalizado quando sua distância fica estritamente abaixo do limite. O padrão é 20, um valor prático de triagem para paletas categóricas, e não uma afirmação de que um número represente toda pessoa ou condição de visualização. Você pode reduzi-lo para uma verificação técnica menos conservadora ou aumentá-lo quando marcas pequenas, linhas finas, telas ruins ou leitura rápida exigirem mais separação. A saída mantém os resultados das duas condições separados e fornece uma lista consolidada, permitindo que fluxos automatizados falhem uma vez sem perder detalhes. A distância original aparece nos pares sinalizados para revelar cores inicialmente distantes que convergem após a simulação. As distâncias exibidas são arredondadas para resultados estáveis.
Use o resultado como parte do design acessível
Uma paleta aprovada fornece evidência útil, mas não é um certificado completo de acessibilidade. A aparência das cores muda com o entorno, tamanho das marcas, antisserrilhamento, calibração da tela, luz ambiente e tipo ou intensidade da visão cromática individual. Mais importante: interfaces não devem comunicar significado essencial apenas pela cor. Combine a verificação com rótulos diretos, ícones, padrões, formas, linhas tracejadas ou posição, para que uma pessoa reconheça categorias mesmo quando duas cores forem difíceis de nomear. Em gráficos, teste a visualização pronta no tamanho esperado, em vez de aprovar apenas amostras isoladas. Para estados como sucesso e falha, confira separadamente o contraste entre texto e fundo, pois distância categórica e contraste WCAG respondem a questões diferentes. Em um sistema de design, execute esta capacidade quando os tokens mudarem e armazene o JSON determinístico com os demais controles. A mesma entrada ordenada sempre recebe o mesmo cálculo, sem rede, aleatoriedade, inferência de modelo ou dados temporais. Navegador e API usam o mesmo solucionador, permitindo experimentar e aplicar o limite na integração contínua por US$ 0,002 por solicitação.
Casos de uso
Revise cores de séries em gráficos
Encontre cores de linhas, barras ou áreas que possam convergir para deficiências vermelho-verde antes de publicar um painel.
Proteja tokens do sistema de design
Execute uma verificação determinística quando tokens categóricos mudarem e bloqueie revisões que criem um par ambíguo.
Audite categorias de mapas e estados
Identifique regiões, rotas ou estados que precisem de maior separação de matiz ou luminosidade, rótulos, padrões ou ícones.
Perguntas frequentes
Quais formatos de cor são aceitos?
Use cores sRGB hexadecimais em #RGB ou #RRGGBB. A notação curta é expandida e a saída normalizada para #RRGGBB em maiúsculas.
O que significa o limite?
É a distância CIE76 mínima permitida após a simulação. Um par abaixo dela é sinalizado; o padrão é 20.
Um resultado seguro garante acessibilidade?
Não. É uma triagem da paleta. Use sinais redundantes, teste o design final e faça as verificações adequadas de contraste.
Quais deficiências são simuladas?
O verificador simula separadamente protanopia e deuteranopia completas e relata os pares problemáticos em cada condição.
Por que incluir a distância original?
Ela revela pares que pareciam muito separados, mas ficam próximos em uma ou nas duas simulações.
Quanto custa a API?
Cada solicitação de API custa US$ 0,002. Você também pode usar o verificador no navegador com o mesmo solucionador determinístico.
Para desenvolvedores — acesso via API
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.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/color/color-blind-safe-palette-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"colors":["#0072B2","#D55E00","#009E73","#CC79A7"]}'const res = await fetch("https://api.kit.forhosting.com/color/color-blind-safe-palette-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"colors": [
"#0072B2",
"#D55E00",
"#009E73",
"#CC79A7"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/color-blind-safe-palette-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"colors": [
"#0072B2",
"#D55E00",
"#009E73",
"#CC79A7"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/color-blind-safe-palette-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"colors":["#0072B2","#D55E00","#009E73","#CC79A7"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"colors":["#0072B2","#D55E00","#009E73","#CC79A7"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/color-blind-safe-palette-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"colors": [
"#0072B2",
"#D55E00",
"#009E73",
"#CC79A7"
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.color_blind_safe_palette_check",
"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.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |