Gerador de paleta Material Design
Transforme uma cor hexadecimal em uma escala completa de tons Material Design para interfaces, tokens de design, protótipos e documentação.
Executar grátis
O gerador mantém a cor informada no nível 500 e calcula os níveis claros de 50 a 400 e os escuros de 600 a 900. Cada resultado é fornecido como texto #RRGGBB em letras maiúsculas, pronto para copiar em CSS, arquivos de tema ou sistemas de tokens. O cálculo é imediato, repetível e não depende de serviços de rede nem de escolhas subjetivas de cor.
Comece com uma cor-base confiável
Informe uma cor hexadecimal de seis dígitos com o sinal de cerquilha inicial, como #3F51B5. Esse valor se torna o tom 500, a referência visual da escala gerada. Um formato de entrada rígido elimina ambiguidades entre notações abreviadas, códigos com canal alfa e valores hexadecimais sem cerquilha. Antes de escolher a base, considere onde ela será usada com maior frequência. Uma cor de destaque da marca aplicada a botões pode precisar de contraste suficiente em superfícies claras e escuras, enquanto uma cor decorativa de gráfico talvez precise se separar das séries vizinhas. O gerador não altera discretamente a referência para atender metas de contraste; preservar o nível 500 mantém a paleta vinculada à cor escolhida. Os níveis de número menor ficam progressivamente mais claros, e os de número maior, mais escuros. A saída usa valores de seis dígitos em maiúsculas para entrar diretamente em propriedades CSS, arquivos JSON de tokens, temas de componentes ou documentação. Entradas inválidas são recusadas, em vez de serem adivinhadas ou analisadas parcialmente.
Entenda como a escala de tons é produzida
A paleta segue os rótulos conhecidos do Material: 50, 100, 200, 300, 400, 500, 600, 700, 800 e 900. O nível 500 é exatamente a base enviada. No lado claro, cada canal vermelho, verde e azul é misturado ao branco em proporções fixas, e o tom 50 recebe o clareamento mais forte. No lado escuro, os mesmos canais são misturados ao preto, com o maior escurecimento no tom 900. Cada canal é arredondado para o inteiro mais próximo e convertido novamente em hexadecimal. A interpolação RGB fixa torna o algoritmo transparente e determinístico: a mesma entrada sempre gera os mesmos dez valores na mesma ordem. Ela também evita dependências ocultas de perfis de tela, gerenciamento de cores do navegador, API de rede ou padrões variáveis de programas de design. A escala resultante é uma família tonal prática no estilo Material, mas não afirma que todos os intervalos tenham a mesma luminosidade percebida. A visão humana reage de maneira diferente a cada matiz; se houver requisitos perceptuais rigorosos, use o resultado como ponto de partida estável e avalie-o no contexto de uso.
Aplique a paleta sem perder a acessibilidade
Associe os valores retornados a tokens semânticos, em vez de espalhar números de tons por toda a aplicação. Um tema pode, por exemplo, atribuir um tom ao fundo interativo, outro ao estado de passagem do ponteiro e um mais claro à superfície selecionada. Manter esse mapeamento em uma única camada de tokens permite ajustar o sistema visual sem editar cada componente. Sempre teste as combinações de primeiro plano e fundo no tamanho e no peso de fonte que serão publicados. O rótulo do tom não garante uma taxa específica de contraste, e duas cores-base podem produzir resultados de acessibilidade muito diferentes no mesmo nível. Avalie separadamente indicadores de foco, controles desabilitados, visualizações de dados, modo escuro e configurações de alto contraste. A paleta gerada é valiosa durante a exploração por oferecer opções coerentes rapidamente, mas a seleção final ainda deve considerar contexto e significado. Não use a cor como único sinal de erro ou estado. Quando as equipes de design e desenvolvimento compartilharem a paleta, registre a base original junto dos valores gerados para que alterações futuras sejam reproduzíveis, sem depender de ajustes manuais não documentados.
Casos de uso
Criar tokens de interface
Converta uma cor de marca aprovada em uma escala previsível de dez níveis para estados e superfícies de componentes.
Prototipar um tema Material
Produza tons hexadecimais prontos para copiar antes de definir os estados principal, ativo e selecionado.
Padronizar a entrega para desenvolvimento
Compartilhe uma paleta reproduzível e adequada a JSON, em vez de amostras de cor com nomes vagos.
Perguntas frequentes
Qual formato de entrada é aceito?
Use exatamente uma cerquilha seguida de seis dígitos hexadecimais, por exemplo #3F51B5. Formas de três dígitos, canais alfa e valores sem cerquilha são recusados.
Qual tom contém a cor original?
O tom 500 corresponde à forma normalizada em maiúsculas da cor original. O gerador nunca o altera.
Como os tons claros e escuros são calculados?
Os canais RGB são misturados em proporções fixas ao branco nos níveis de 50 a 400 e ao preto nos níveis de 600 a 900.
Um tom gerado garante contraste acessível?
Não. O contraste depende das cores de primeiro plano e fundo, além do tamanho e do peso do texto; teste cada combinação planejada.
Quanto custa uma chamada de API?
Cada chamada de API custa US$ 0,002. A versão para navegador executa localmente o mesmo cálculo 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/material-palette-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base_color":"#3F51B5"}'const res = await fetch("https://api.kit.forhosting.com/color/material-palette-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base_color": "#3F51B5"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/material-palette-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base_color": "#3F51B5"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/material-palette-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base_color":"#3F51B5"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base_color":"#3F51B5"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/material-palette-generate", 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
{
"base_color": "#3F51B5"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.material_palette_generate",
"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. |