Gere uma paleta de cores análogas a partir de uma cor hexadecimal
Crie uma paleta previsível de cores análogas usando uma cor hexadecimal e a quantidade exata de amostras de que você precisa.
Executar grátis
O gerador converte a cor base para HSL, distribui as cores uniformemente em uma faixa de sessenta graus centralizada no matiz original e converte cada resultado para hexadecimal normalizado. Uma solicitação de uma cor devolve o próprio matiz base; paletas maiores incluem os dois limites de trinta graus. O cálculo determinístico atende tokens de design, gráficos, ilustrações e pipelines repetíveis.
Escolha a cor base e o tamanho da paleta
Comece com uma cor hexadecimal CSS de três ou seis dígitos, com cerquilha inicial opcional. A forma curta é expandida antes da conversão; portanto, #36c e #3366cc indicam a mesma cor inicial e geram a mesma saída normalizada. Em seguida, escolha count, que define o número exato de amostras retornadas. Esse valor precisa ser um inteiro igual ou superior a um; zero e números negativos são recusados porque não descrevem uma paleta. Quando count é um, o gerador devolve o matiz base sem deslocamento. Quando é dois, devolve os limites de menos trinta e mais trinta graus. Com três cores, a base fica entre os limites. Quantidades maiores acrescentam intervalos iguais na mesma faixa, sem ampliar a harmonia. Saturação e luminosidade permanecem iguais às da base, isolando o matiz como única dimensão variável. A resposta informa a cor normalizada, a quantidade e cada amostra com índice, deslocamento sinalizado, ângulo circular e hexadecimal de seis dígitos em minúsculas.
Entenda o espaçamento uniforme no círculo cromático
Cores análogas ocupam posições vizinhas em um círculo de matizes. Esta capacidade usa uma faixa fixa entre trinta graus abaixo e trinta graus acima do matiz base, totalizando sessenta graus. Para count maior que um, o intervalo resulta da divisão dessa amplitude por count menos um. Cinco cores usam -30, -15, 0, 15 e 30 graus; quatro usam -30, -10, 10 e 30. Como o matiz é circular, um deslocamento que cruza zero continua próximo de trezentos e sessenta, em vez de virar um ângulo negativo inválido. O algoritmo interpreta os canais RGB, converte-os para HSL, aplica cada deslocamento e transforma o HSL novamente em RGB inteiro e hexadecimal. O arredondamento é determinístico, fazendo entradas idênticas produzirem o mesmo JSON. Tons neutros continuam válidos: o cinza tem saturação zero, então mudar seu matiz matemático não altera o RGB visível e pode gerar códigos hexadecimais repetidos.
Use a paleta em fluxos de produção
Use o array gerado quando uma família repetível de cores relacionadas for mais importante do que um contraste forte. Um sistema de design pode associar índices a propriedades como accent-1 até accent-5 e regenerá-las quando a cor principal da marca mudar. Um criador de gráficos pode solicitar a quantidade de séries do relatório e atribuir as amostras em ordem para preservar a coesão. Ferramentas de ilustração podem transformar uma semente escolhida artisticamente em cores controladas para preenchimentos e detalhes, embora ajustes de luminosidade devam ocorrer separadamente. O resultado também funciona bem em testes de snapshot porque não contém aleatoriedade, data, resposta de rede ou variação de modelo. Guarde a cor base e count como fonte oficial. Antes de aplicar qualquer amostra a textos, ícones ou controles, verifique o contraste com o fundo real: harmonia análoga não garante conformidade WCAG. Cada item bem-sucedido na API custa US$ 0,002; valide count na interface e mostre o erro quando ele for menor que um ou não for inteiro.
Casos de uso
Crie tokens de destaque para sistemas de design
Transforme uma cor de marca aprovada em uma quantidade exata de matizes vizinhos estáveis para componentes e temas.
Aplique cores a séries relacionadas
Ajuste a quantidade ao número de séries e atribua cores uniformes na ordem determinística do array.
Monte famílias de cores para ilustrações
Derive preenchimentos e detalhes coesos de uma semente artística sem seleção aleatória nem cálculos manuais.
Perguntas frequentes
O que acontece quando count é um?
A única cor retornada usa o matiz base com deslocamento de zero grau.
Os extremos estão incluídos?
Sim. Para quantidades acima de um, a primeira cor fica em -30 graus e a última em 30 graus.
Quais formatos de cor são aceitos?
São aceitas cores hexadecimais CSS de três ou seis dígitos, com ou sem cerquilha inicial.
Por que o cinza pode gerar valores repetidos?
O cinza tem saturação zero; mudanças matemáticas de matiz não alteram seus canais RGB visíveis.
Quanto custa uma solicitação API?
Cada item processado com sucesso custa US$ 0,002. A ferramenta no navegador está disponível para uso interativo.
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/analogous-palette \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#3366cc","count":5}'const res = await fetch("https://api.kit.forhosting.com/color/analogous-palette", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#3366cc",
"count": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/analogous-palette",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#3366cc",
"count": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/analogous-palette", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#3366cc","count":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#3366cc","count":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/analogous-palette", 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
{
"color": "#3366cc",
"count": 5
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.analogous_palette",
"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. |