InícioFerramentasGerador de paletas acessíveis
Gerador de paleta de cores acessível a partir da sua marca
Informe a cor da marca e receba uma escala de dez passos, de 50 a 900, construída no espaço perceptual OKLCH. Cada passo mostra o contraste com texto branco e preto, a paleta indica quais pares de passos passam na WCAG AA e o resultado pode ser exportado como propriedades personalizadas de CSS, cores do Tailwind ou design tokens.
—
| Token | Cor | OKLCH | Texto branco | Texto preto | APCA Lc B / P |
|---|
Pares de texto e fundo que passam AA (4,5:1)
Passo de fundo → passos da mesma paleta que podem ir por cima como texto.
Método. Os passos são distribuídos de forma uniforme na luminosidade OKLCH entre a cor da marca e as pontas da escala (L ≈ 97,5 % para 50, ≈ 25 % para 900); o tom fica fixo, o croma diminui em direção ao branco e cores fora do gamut perdem croma até caber no sRGB. Contraste: razão da WCAG 2.2, sem arredondar para cima.
Tudo é calculado no seu navegador — nada do que você digita é enviado para lugar nenhum.
Como usar
- Informe a cor da marcaCole o HEX do manual da marca ou escolha no seletor. O gerador encontra o passo com a luminosidade certa e cria tons mais claros acima e mais escuros abaixo.
- Confira a tabela de contrasteCada passo mostra o contraste com texto branco e com texto preto. “AA” significa 4,5:1 para texto normal; “Grande”, só 3:1 para texto grande e componentes de interface.
- Escolha pares de texto e fundoA lista de pares mostra quais passos podem ser usados como texto em cada fundo — por exemplo, texto 700 em fundo 50 para um aviso informativo.
- ExporteEscolha variáveis CSS, configuração do Tailwind, JSON ou design tokens do W3C, dê um nome à paleta e copie o código para o seu projeto.
Por que gerar tons em OKLCH
O jeito mais simples de clarear ou escurecer uma cor é misturá-la com branco ou preto no sRGB ou mudar o L do HSL. As duas abordagens geram escalas irregulares. A luminosidade do HSL não é perceptual: um amarelo a 50 % parece bem mais claro que um azul a 50 %, então o “mesmo” passo tem contraste muito diferente de um tom para outro. Misturar com branco no sRGB desloca o tom: azuis puxam para o roxo e vermelhos, para o rosa.
O OKLCH, forma cilíndrica do espaço OKLab publicado por Björn Ottosson em 2020 e hoje parte do CSS Color Level 4, separa as três coisas que importam no design:
Como L acompanha o quanto a cor parece clara, passos iguais em L geram escalas uniformes em qualquer tom, e o contraste com branco ou preto muda de forma previsível de um passo para outro. Por isso o Tailwind CSS v4 define sua paleta padrão em OKLCH.
Como este gerador monta a escala
- A cor da marca é convertida para OKLCH e colocada no passo com a luminosidade de referência mais próxima (ou no passo escolhido). O HEX dela é mantido exato.
- Os passos mais claros são distribuídos de forma uniforme em L entre a cor da marca e L ≈ 97,5 % (passo 50); os mais escuros, entre a cor da marca e L ≈ 25 % (passo 900).
- O tom não muda. O croma diminui em direção ao lado claro — tons muito claros com croma total parecem neon — e cai no máximo um terço em direção ao escuro.
- Qualquer cor fora do gamut sRGB volta para dentro dele com redução de croma, mantendo L e H, como recomenda o CSS Color 4.
- Cada HEX é arredondado para 8 bits por canal, e o contraste é calculado com esse valor arredondado — o mesmo que vai para o código.
Como ler as colunas de contraste
Para cada passo, a tabela mostra a razão de contraste WCAG 2.2 com texto branco puro (#fff) e preto puro (#000):
- AA — pelo menos 4,5:1: serve para texto corrido, rótulos e links.
- Grande — entre 3:1 e 4,5:1: só para texto a partir de 24 px (18,66 px em negrito) e elementos não textuais como ícones, bordas e indicadores de foco (WCAG 1.4.11).
- Não — abaixo de 3:1: só decoração, nunca texto.
Como os passos seguem a luminosidade perceptual, o resultado é parecido na maioria dos tons: texto branco passa AA de 600 a 900 e texto preto de 50 a 500. Praticamente nenhuma cor passa com os dois: 4,5:1 contra branco e contra preto ao mesmo tempo só é possível numa faixa muito estreita de luminância relativa (0,175–0,183). Por isso os design systems usam 600 ou 700 para botões principais com texto branco e reservam 400–500 para preenchimentos, gráficos e texto grande.
A coluna APCA mostra o contraste de luminosidade (Lc) do rascunho da WCAG 3 para texto branco e preto. Acima de 75 é confortável para texto corrido, acima de 60 para rótulos de interface e acima de 45 para títulos. O APCA ainda não é padrão: use-o para escolher entre opções que já passam na WCAG 2.2.
Pares dentro da paleta
Interfaces tingidas — avisos informativos, linhas selecionadas, tags, dicas de onboarding — colocam um passo escuro sobre um passo claro do mesmo tom. A lista de pares indica, para cada fundo, quais passos de texto chegam a 4,5:1. Como regra prática, passos separados por cinco posições ou mais (50 com 600, 100 com 700) costumam passar; vizinhos, nunca.
Como usar a paleta num design system
- Nomeie pela função, não pelo valor. Exporte a escala como
--brand-50 … --brand-900e atribua funções por cima:--color-primary: var(--brand-600),--color-primary-text: var(--brand-700),--color-info-bg: var(--brand-50). Se a marca mudar, você altera uma lista só. - Documente os pares aprovados. Registre qual passo de texto vai em qual fundo, para ninguém colocar texto 400 em fundo 100 na pressa.
- O tema escuro é outro mapeamento. Reaproveite a escala ao contrário — passos claros para texto, escuros para superfícies — e confira os pares de novo: combinações escuras que passam na WCAG 2 ainda podem parecer apagadas, algo que o APCA mostra melhor.
- Estados também precisam de contraste. Hover e pressionado costumam descer um passo; o indicador de foco precisa de 3:1 contra o fundo ao redor.
- Cores semânticas (sucesso, alerta, erro) são geradas do mesmo jeito, cada uma a partir da sua cor base. Amarelo e verde-limão só são reconhecíveis em passos claros, onde texto branco não passa — use texto escuro sobre elas.
Para conferir um par específico, inclusive cores fora da paleta ou camadas semitransparentes, use o verificador de contraste de cores.
Fontes
- Ottosson B. A perceptual color space for image processing, 2020 — OKLab e OKLCH, matrizes de conversão.
- W3C. CSS Color Module Level 4 — notação oklch() e ajuste de gamut por redução de croma.
- W3C. Web Content Accessibility Guidelines (WCAG) 2.2 — critérios 1.4.3, 1.4.6 e 1.4.11, luminância relativa e razão de contraste.
- Somers A. APCA — Accessible Perceptual Contrast Algorithm, apca-w3 0.0.98G-4g — valores Lc.
- W3C Design Tokens Community Group. Design Tokens Format Module, rascunho — estrutura $type e $value da exportação de tokens.
Perguntas frequentes
O que significam os números de 50 a 900 numa paleta?
São passos de luminosidade de um mesmo tom, popularizados pelo Material Design e pelo Tailwind CSS: 50 é o tom mais claro, 900 o mais escuro, e 500 ou 600 costuma ficar perto da cor da marca. Os números são nomes, não medidas, então qualquer passo pode ser ajustado.
Por que usar OKLCH em vez de HSL para gerar tons?
A luminosidade do OKLCH corresponde ao brilho percebido; a do HSL, não: um amarelo e um azul com a mesma luminosidade HSL parecem muito diferentes e têm contrastes muito diferentes. Passos iguais em OKLCH geram escalas uniformes em qualquer tom, sem desvio de matiz ao clarear.
Qual passo da paleta usar para texto no branco?
O primeiro passo com pelo menos 4,5:1 contra branco na tabela. Nas paletas deste gerador costuma ser o 600, porque os passos seguem a luminosidade perceptual; em paletas baseadas em HSL, amarelo, limão e ciano muitas vezes precisam de 800 ou mais escuro. Para texto grande e ícones, 3:1 basta, então um passo mais claro pode servir.
Por que nenhum passo passa com texto branco e preto?
Para chegar a 4,5:1 contra branco e contra preto ao mesmo tempo, a cor precisa de luminância relativa entre 0,175 e 0,183 — uma faixa tão estreita que quase nenhum passo cai nela. É o esperado: use texto branco nos passos escuros e texto escuro nos claros.
A cor exata da minha marca vai estar na paleta?
Sim. A cor da marca mantém o HEX exato no passo em que a luminosidade se encaixa melhor, ou no passo escolhido, e os outros passos são construídos em volta dela.
Como usar a exportação no Tailwind CSS?
No Tailwind v3, cole a exportação do Tailwind em theme.extend.colors no tailwind.config.js e use classes como bg-brand-600. No Tailwind v4, exporte variáveis CSS e renomeie para --color-brand-600 dentro de um bloco @theme.
Mais em Design de produto
- Verificador de contraste de cores
Este par de cores de texto e fundo passa no WCAG AA ou AAA?
- Gerador de escala tipográfica
Quais tamanhos de fonte formam uma escala tipográfica consistente e fluida?
- Tempo de leitura de tooltips e tours
O usuário tem tempo de ler um tooltip ou uma etapa do tour?
- Verificador de textos de tooltips
Este tooltip está curto, claro e leva à ação?
- Calculadora SUS
Qual é a nota SUS da interface e a usabilidade é boa?