Código de cor hex explicado: como funciona o #RRGGBB
Um código de cor hex como #1e90ff são três pares de dígitos hexadecimais: a quantidade de luz vermelha, verde e azul, cada uma de 00 (nada) a ff (máximo, 255). Acrescente um quarto par para definir a opacidade: 80 significa cerca de 50%, ff significa totalmente sólido.
6 min de leitura
Como funciona um código de cor hex
Toda cor na tela é uma mistura de luz vermelha, verde e azul. Um código hex escreve a intensidade de cada luz com dois caracteres depois do sinal #: primeiro o vermelho, depois o verde, depois o azul. Esse é o padrão #RRGGBB.
Os caracteres são hexadecimais, um jeito de contar com 16 dígitos: de 0 a 9 e depois a (10), b (11), c (12), d (13), e (14) e f (15). Um par cobre 256 valores, de 00 (0) a ff (255), exatamente a faixa do rgb().
Para transformar um par em número comum, multiplique o primeiro dígito por 16 e some o segundo. Abaixo está o #1e90ff, a cor CSS dodgerblue, em quatro formatos e depois calculado par a par.
| Formato | Valor |
|---|---|
| HEX | |
| RGB | |
| HSL | |
| OKLCH |
| Par | Canal | Cálculo | Valor |
|---|---|---|---|
| 1e | Vermelho | 1 × 16 + 14 | 30 |
| 90 | Verde | 9 × 16 + 0 | 144 |
| ff | Azul | 15 × 16 + 15 | 255 |
Então #1e90ff é rgb(30, 144, 255): um pouco de vermelho, bastante verde e azul no máximo, o que resulta em um azul-celeste vivo. Três pares de 256 valores dão 16.777.216 cores possíveis.
Hex abreviado de 3 e 4 dígitos
Quando os dois dígitos de cada par são iguais, dá para escrever cada par uma vez só. #ffcc00 vira #fc0, e o navegador duplica cada dígito de volta. #1e90ff não tem forma curta, porque 1e e 90 não são pares repetidos.
A forma curta cobre só 4.096 das 16,7 milhões de cores. Uma versão de quatro dígitos acrescenta a opacidade do mesmo jeito, então #f008 significa #ff000088.
| Curto | Completo | Cor |
|---|---|---|
| #fff | #ffffff | Branco |
| #000 | #000000 | Preto |
| #f00 | #ff0000 | Vermelho |
| #fc0 | #ffcc00 | Amarelo quente |
| #abc | #aabbcc | Azul acinzentado |
| #f008 | #ff000088 | Vermelho com 53% de opacidade |
Opacidade em hex: hex de 8 dígitos com alfa
Um código de oito dígitos acrescenta um quarto par para o alfa, a opacidade: #RRGGBBAA. 00 é totalmente transparente e ff é totalmente sólido. Todos os navegadores atuais suportam isso no CSS, assim como a forma curta #RGBA de quatro dígitos.
Para obter o par, multiplique a opacidade por 255, arredonde para um número inteiro e converta para hex. 50% dá 127,5, que arredonda para 128, escrito como 80. Veja a tabela completa aplicada ao #1e90ff.
| Opacidade | Alfa (0–255) | Par hex | #1e90ff com alfa |
|---|---|---|---|
| 100% | 255 | ff | #1e90ffff |
| 95% | 242 | f2 | #1e90fff2 |
| 90% | 230 | e6 | #1e90ffe6 |
| 85% | 217 | d9 | #1e90ffd9 |
| 80% | 204 | cc | #1e90ffcc |
| 75% | 191 | bf | #1e90ffbf |
| 70% | 179 | b3 | #1e90ffb3 |
| 65% | 166 | a6 | #1e90ffa6 |
| 60% | 153 | 99 | #1e90ff99 |
| 55% | 140 | 8c | #1e90ff8c |
| 50% | 128 | 80 | #1e90ff80 |
| 45% | 115 | 73 | #1e90ff73 |
| 40% | 102 | 66 | #1e90ff66 |
| 35% | 89 | 59 | #1e90ff59 |
| 30% | 77 | 4d | #1e90ff4d |
| 25% | 64 | 40 | #1e90ff40 |
| 20% | 51 | 33 | #1e90ff33 |
| 15% | 38 | 26 | #1e90ff26 |
| 10% | 26 | 1a | #1e90ff1a |
| 5% | 13 | 0d | #1e90ff0d |
| 0% | 0 | 00 | #1e90ff00 |
CSS
.overlay {
background: #00000080;
}
.overlay-same {
background: rgb(0 0 0 / 50%);
}Dois detalhes. Primeiro, 80 é 128 de 255, ou seja, 50,2%, não exatamente 50%: o alfa em hex tem só 256 passos, então a maioria das porcentagens redondas é uma aproximação. Segundo, o Android coloca o alfa na frente. Em um recurso de cor do Android, #801e90ff significa o mesmo que #1e90ff80 no CSS.
Como ler um código hex no olho
Dá para adivinhar uma cor sem converter nada. Olhe o primeiro dígito de cada par, porque ele carrega quase toda a informação.
| Nome CSS | Hex | RGB | Como ler |
|---|---|---|---|
| tomato | #ff6347 | 255, 99, 71 | Vermelho no máximo, um pouco de verde e azul: vermelho claro e quente |
| gold | #ffd700 | 255, 215, 0 | Vermelho e verde altos, sem azul: amarelo |
| chocolate | #d2691e | 210, 105, 30 | Vermelho na frente, verde pela metade, azul baixo: marrom alaranjado |
| darkturquoise | #00ced1 | 0, 206, 209 | Verde e azul altos, sem vermelho: ciano |
| dodgerblue | #1e90ff | 30, 144, 255 | Azul na frente, verde no meio: azul-celeste |
| mediumorchid | #ba55d3 | 186, 85, 211 | Vermelho e azul altos, verde baixo: roxo |
| teal | #008080 | 0, 128, 128 | Verde e azul pela metade: ciano-escuro |
| navy | #000080 | 0, 0, 128 | Só azul, pela metade: azul-escuro |
| slategray | #708090 | 112, 128, 144 | Quase iguais, azul um pouco à frente: cinza-azulado |
- O maior primeiro dígito é a luz dominante. #d2691e tem d no vermelho, 6 no verde e 1 no azul, então é um marrom alaranjado.
- Dois canais altos se misturam: vermelho e verde dão amarelo, verde e azul dão ciano, vermelho e azul dão magenta ou roxo.
- Três pares iguais dão um cinza. #333333 é cinza-escuro, #999999 é cinza-claro. Pares quase iguais, como em #708090, dão uma cor apagada, acinzentada.
- Dígitos altos no geral indicam uma cor clara, dígitos baixos, uma cor escura. Quando os três pares são c0 ou mais, a cor é pálida. Quando os três são 30 ou menos, ela é bem escura.
- O verde parece muito mais claro que o azul com o mesmo número. #00ff00 tem luminosidade OKLCH de 0,866, #0000ff só 0,452.
Por que #808080 não é o cinza médio
#808080 fica exatamente no meio em números: 128 de 255 em cada canal. Mas ele não parece estar no meio entre o preto e o branco. A luminosidade OKLCH dele é 0,600, então ele é percebido a 60% do caminho até o branco.
Os valores hex já vêm codificados com a curva do sRGB, que acompanha o olho de forma aproximada, mas não exata. #808080 emite cerca de 21,6% da luz do branco, e os modelos perceptuais colocam o meio visual mais abaixo: o OKLCH em #636363, o CIELAB em #777777.
| Cinza | O que é | L do OKLCH | Contraste no branco | Contraste no preto |
|---|---|---|---|---|
| #808080 | Meio numérico, 128 | 0.600 | 3.95:1 | 5.32:1 |
| #777777 | Meio do CIELAB, L* 50 | 0.569 | 4.48:1 | 4.69:1 |
| #767676 | Cinza mais claro com 4.5:1 no branco | 0.566 | 4.54:1 | 4.62:1 |
| #636363 | Meio do OKLCH, L 0.5 | 0.500 | 6.01:1 | 3.50:1 |
Isso importa para texto. Cinza #808080 sobre branco dá 3,95:1 e reprova no WCAG AA para texto corrido. #767676 é o cinza mais claro que passa em 4,5:1, e #777777, um passo mais claro, já reprova com 4,48:1.
Maiúsculas ou minúsculas, com ou sem #
Códigos hex não diferenciam maiúsculas de minúsculas. #1E90FF, #1e90ff e #1E90ff são a mesma cor no CSS, no SVG e nas ferramentas de design. Escolha um estilo e mantenha-o em todo lugar, para que uma busca no código encontre todos os usos. Minúsculas são a escolha mais comum no CSS.
O sinal # faz parte da sintaxe do CSS, não da cor. O Figma e muitas ferramentas de design mostram o código sem ele, e linguagens de programação costumam escrevê-lo como número com o prefixo 0x, como no Flutter, em que Color(0xFF1E90FF) começa pelo par do alfa.
Como descobrir o código hex de uma cor na tela
Use um conta-gotas: uma ferramenta que lê a cor sob o cursor e mostra o código dela. Existem opções gratuitas e quase sempre já instaladas.
- Chrome e Edge: abra o DevTools com F12, clique em qualquer quadradinho de cor no painel Estilos e use o ícone de conta-gotas para capturar uma cor da página.
- PickShade: o seletor de cores da página inicial tem um botão de conta-gotas no Chrome e no Edge que captura cores de qualquer lugar da tela.
- Windows: instale o Microsoft PowerToys e pressione Win + Shift + C para abrir o Seletor de Cores.
- macOS: abra o Medidor de Cor Digital em Aplicativos, Utilitários. Mude para sRGB e escolha Visualizar, Exibir Valores, Como Hexadecimal.
- Figma, Photoshop e a maioria dos apps de design: pressione I para o conta-gotas.
- Em uma foto ou captura de tela: abra no seletor de cores de imagem e clique em qualquer pixel. A imagem fica no seu dispositivo.
Um valor capturado pode diferir em algumas unidades do original, porque as telas aplicam perfis de cor e as imagens são comprimidas. Quando você precisar do valor exato, copie-o do arquivo de design ou do CSS, não de uma captura de tela.
Perguntas e respostas
O que é um código de cor hex?
Um código de cor hex é um código de seis dígitos como #1e90ff que descreve uma cor pela quantidade de luz vermelha, verde e azul que ela tem. Cada par de dígitos hexadecimais vai de 00 (0) a ff (255), então #1e90ff é rgb(30, 144, 255).
Como adicionar opacidade a uma cor hex?
Acrescente um quarto par de dígitos no final: #RRGGBBAA. Multiplique a opacidade por 255, arredonde e converta para hex: 50% vira 80, 25% vira 40 e 75% vira bf. Por exemplo, #1e90ff80 é o dodgerblue com cerca de 50% de opacidade.
Quanto é 50% de opacidade em hex?
50% de opacidade em hex é 80, como em #00000080 para um preto semitransparente. 80 equivale a 128 de 255, ou seja, 50,2%, porque o alfa em hex tem 256 passos e os 50% exatos ficam entre 7f e 80.
Qual é a diferença entre hex e RGB?
Não há diferença na cor, só na notação. O hex escreve os valores de vermelho, verde e azul como pares em base 16, o rgb() os escreve como números decimais de 0 a 255, então #ff6347 e rgb(255, 99, 71) são o mesmo vermelho tomate.
Códigos de cor hex diferenciam maiúsculas de minúsculas?
Não. #FF6347, #ff6347 e #Ff6347 são a mesma cor no CSS, no HTML, no SVG e nas ferramentas de design. A maioria dos projetos CSS usa minúsculas, mas qualquer estilo funciona desde que seja consistente.
Qual é o código hex do cinza médio?
#808080 é o meio numérico, mas parece mais claro que a metade, com luminosidade OKLCH de 0,600. Um cinza que parece estar no meio entre o preto e o branco fica entre #636363 (L 0,5 no OKLCH) e #777777 (L* 50 no CIELAB).