Ordenar cores por luminância
Transforme um grupo desordenado de cores hex em uma escala previsível do escuro ao claro.
Executar grátis
A ferramenta valida cada valor, normaliza a notação hex curta e completa, converte canais sRGB em luz linear e ordena pela luminância relativa WCAG. Cada resultado traz a cor normalizada e sua luminância, para que você examine diferenças pequenas sem depender da percepção visual. Empates mantêm a ordem original, duplicatas são preservadas e entradas idênticas sempre geram a mesma saída.
Crie uma escala de brilho a partir de uma paleta desordenada
Coleções de cores normalmente seguem a criação dos tokens ou a serialização do arquivo, não o brilho. Envie o array colors e receba registros da menor para a maior luminância relativa. Formas de três dígitos são expandidas, as de seis aceitam cerquilha opcional e o retorno usa #rrggbb minúsculo. Isso facilita snapshots, arquivos de tokens, CSS e comparações. Duplicatas não são removidas, pois podem representar tokens diferentes. Cores com luminância exatamente igual mantêm a ordem de entrada, evitando oscilações entre execuções. A resposta informa quantidade, direção e método. Use a lista para montar uma paleta sequencial ou analisar tons vizinhos. A operação apenas reordena: não cria tonalidades intermediárias, não renomeia tokens nem promete passos perceptualmente uniformes.
Entenda como a luminância relativa define a ordem
Luminância relativa não é a média simples dos bytes vermelho, verde e azul. Cores hex codificam canais sRGB com uma curva não linear; cada canal é escalado entre zero e um e convertido em luz linear. Valores até o limite sRGB são divididos por 12.92, e os demais usam a função de potência padrão. Em seguida, aplicam-se os coeficientes 0.2126, 0.7152 e 0.0722. Verde tem o maior peso e azul o menor; o resultado vai de zero no preto a um no branco. A ordenação utiliza o número completo, sem arredondamento. As seis casas exibidas servem para leitura e serialização estável. O modelo integra cálculos WCAG, mas ordenar uma paleta não comprova acessibilidade; avalie separadamente cada par de primeiro plano e fundo.
Valide entradas e integre resultados determinísticos
O campo colors deve ser um array não vazio com até 1000 itens. Cada item precisa ser uma string com exatamente três ou seis dígitos hexadecimais após uma cerquilha opcional. Espaços externos são ignorados; alfa, nomes CSS, funções rgb(), comprimentos inválidos e outros tipos são rejeitados. O erro aponta o índice incorreto, sem descartar ou adivinhar valores. Isso impede que builds aceitem uma escala parcial aparentemente válida. A implementação faz apenas aritmética local e ordenação em memória, sem rede, relógio, aleatoriedade ou retenção. Assim, o mesmo array gera o mesmo JSON no navegador, em CI e pela API. O uso no navegador é gratuito; cada chamada API custa US$ 0,002. Duplicatas preservadas e empates estáveis permitem mapear os resultados aos metadados originais com segurança.
Casos de uso
Ordenar tokens de design
Converta cores herdadas ou geradas em uma sequência estável antes de numerar a escala.
Preparar cores sequenciais para gráficos
Organize amostras por luminância relativa para que a escala visual avance de modo consistente.
Auditar a progressão da paleta
Examine luminâncias e cores normalizadas para encontrar inversões, duplicatas ou intervalos pequenos.
Perguntas frequentes
Quanto custa uma chamada API?
Cada chamada API custa US$ 0,002. Você também pode executar gratuitamente o mesmo solucionador no navegador.
Quais formatos de cor são aceitos?
Use hex com três ou seis dígitos e cerquilha opcional, como #abc, abc, #aabbcc ou AABBCC.
Cores com alfa ou nomes CSS são aceitos?
Não. Hex com alfa, nomes, rgb(), hsl() e outras sintaxes CSS são rejeitados para evitar ambiguidade.
O que ocorre quando duas cores têm a mesma luminância?
Elas mantêm a ordem relativa original. A regra estável também preserva duplicatas de modo determinístico.
A ordem do escuro ao claro garante contraste acessível?
Não. A ordenação descreve cores individuais; acessibilidade requer testar pares específicos de frente e fundo.
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/sort-by-luminance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"colors":["#f8fafc","#0f172a","#22c55e","#64748b"]}'const res = await fetch("https://api.kit.forhosting.com/color/sort-by-luminance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"colors": [
"#f8fafc",
"#0f172a",
"#22c55e",
"#64748b"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/sort-by-luminance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"colors": [
"#f8fafc",
"#0f172a",
"#22c55e",
"#64748b"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/sort-by-luminance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"colors":["#f8fafc","#0f172a","#22c55e","#64748b"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"colors":["#f8fafc","#0f172a","#22c55e","#64748b"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/sort-by-luminance", 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": [
"#f8fafc",
"#0f172a",
"#22c55e",
"#64748b"
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.sort_by_luminance",
"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.
Limites
max_items | 1000 |
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. |