Pular para o conteúdo principal

Converter RGB em HEX

O Conversor de RGB para HEX transforma três canais decimais em uma cor hexadecimal. Cada canal é dividido por 16: o quociente é o primeiro dígito hexadecimal e o resto é o segundo, então 136 vira 88 e 255 vira ff. Um valor de alfa é acrescentado como um quarto par, arredondado para o mais próximo dos 256 níveis — o único ponto em que a ida e volta não é exata.

Só local
Entrada RGB

Digite uma cor à esquerda. São aceitos valores hexadecimais com ou sem cerquilha, rgb(), hsl(), oklch() e nomes de cores CSS.

Como funciona o Converter RGB em HEX?

Cada canal é um número inteiro de 0 a 255, e dois dígitos hexadecimais cobrem exatamente esse intervalo. Divida por 16: o quociente é o primeiro dígito, o resto é o segundo. 136 ÷ 16 é 8 com resto 8, então 88. 255 ÷ 16 é 15 com resto 15, e 15 é f, então ff.

Canais com um só dígito precisam do zero à esquerda

Um canal abaixo de 16 produz um dígito, e descartar o zero desloca todos os dígitos seguintes. rgb(255 8 0) é #ff0800, e não #ff800 — que tem cinco dígitos e não é cor nenhuma. É o bug clássico de um conversor feito à mão, e ele só aparece em cores escuras, onde ninguém olha.

O que acontece com um canal não inteiro

O CSS aceita rgb(255.6 136 0), e o hexadecimal não pode guardar uma fração. O valor é arredondado para o inteiro mais próximo, que é o que o navegador também faz. Se seus canais saíram de um cálculo — uma cor clareada, um passo interpolado —, o hex que você recebe de volta é a versão arredondada, e convertê-lo novamente não devolverá a fração com que começou.

Alfa, e a única etapa com perda

Um alfa de 0.5 vira 80, porque 0.5 × 255 é 127.5 e arredonda para 128. Convertendo de volta, dá 0.502. Todo canal de cor faz a ida e volta de forma exata; o alfa não, porque é uma fração armazenada em 256 níveis. A diferença está muito abaixo de qualquer coisa visível, e vai aparecer no momento em que você comparar duas strings em um teste.

Porcentagens

rgb(100% 53.3% 0%) é a mesma cor que rgb(255 136 0) : as porcentagens em rgb() são resolvidas contra 255, e não contra 100. Isso pega as pessoas que convertem a partir de uma ferramenta de design que exporta valores de 0 a 100, onde 53% significa 135, e não 53.

Canais RGB

rgb(255 136 0)

A cor hexadecimal

#ff8800

255 → ff   (15 × 16 + 15)
136 → 88   (8 × 16 + 8)
  0 → 00   (0 × 16 + 0)

Quais opções e casos-limite o Converter RGB em HEX suporta?

Referência técnica e opções
ParâmetroTipoPadrãoComportamento e casos-limite
0canal00O mínimo. Os dois dígitos são zero.
8canal08Abaixo de 16, então o zero à esquerda é obrigatório. Removê-lo corrompe o valor inteiro.
128canal80O ponto médio, e exatamente 8 × 16.
136canal888 × 16 + 8.
255canalffO máximo. 15 × 16 + 15.
alfa 0.5fração80127.5 é arredondado para 128. Converter de volta dá 0.502 — a única etapa desta conversão que não é exata.
255.6não inteiroffArredondado, como o navegador faz. Um canal fracionário não sobrevive ao hex.
100%porcentagem255As porcentagens são resolvidas com base em 255. 53% é 135, não 53.

Perguntas frequentes

Como converter RGB para hex manualmente?

Divida cada canal por 16. O quociente é o primeiro dígito e o resto é o segundo, com 10–15 escritos como a–f. 136 ÷ 16 = 8 com resto 8, então 88. Escreva os três pares em ordem — vermelho, verde, azul — com um # na frente. A única armadilha é um canal abaixo de 16: ele ainda precisa de dois dígitos, então 8 é 08, e não 8.

Por que minha cor hexadecimal tem cinco dígitos?

Um canal abaixo de 16 perdeu o zero à esquerda. rgb(255 8 0) é #ff0800; escrito como #ff800, tem cinco caracteres, o que não é uma cor hexadecimal válida e faz os navegadores ignorarem a declaração inteira. Este é o bug mais comum em código de conversão escrito à mão, e ele só aparece em cores escuras.

Converter RGB para hex perde alguma informação de cor?

Não, quanto à cor em si — as duas notações guardam os mesmos três bytes, então a ida e volta é exata. O alfa é a exceção: é uma fração no CSS, e o hex o armazena em 256 níveis, então 0.5 vira 80 e volta como 0.502. Invisível na tela, visível em uma comparação de strings.

Para o que rgb(100% 50% 0%) é convertido?

#ff8000. As porcentagens em rgb() são frações de 255, não de 100, então 50% é 127.5, que arredonda para 128 — hex 80. Se uma ferramenta de design exportar esses números como valores de 0 a 100, eles significam outra coisa, e vale conferir essa diferença antes de colar.

Devo escrever rgba() ou usar um hex de 8 dígitos?

Qualquer um; ambos são suportados em todos os lugares atuais. O hex de 8 dígitos é mais compacto e mantém a cor inteira em um token só, o que combina com design tokens e variáveis. rgba() é mais fácil de ler e de editar à mão, e é o que a maioria das folhas de estilo existentes já contém. O único argumento real é a consistência com o código ao redor.

Por que o hex do designer não bate com o RGB que meu conta-gotas de tela informa?

Gerenciamento de cor. Um conta-gotas de tela amostra os pixels depois que o perfil do monitor foi aplicado, então um monitor de gamute amplo informa números diferentes para a mesma cor de origem sRGB. Amostre a partir do arquivo de design, e não de uma captura de tela, ou configure o conta-gotas para sRGB, e os dois voltam a bater.