Conversor de Cores

Converta cores entre formatos HEX, RGB, HSL e HSV com seletor visual

Experimente um exemplo

Clique na amostra para abrir o seletor de cor

Ou edite qualquer valor abaixo

HEX
RGB
HSL
HSV

O que é Conversão de Cores?

Um conversor de cores traduz um valor de cor de uma notação para outra — por exemplo, de um triplo HEX (#6366F1) para uma tupla RGB (99, 102, 241) ou um triplo HSL (239, 84%, 67%). A mesma cor também pode ser expressa como um triplo HSV (239, 59%, 95%). Cada formato codifica a mesma cor visual usando um modelo matemático diferente; ferramentas, linguagens e APIs distintas esperam formatos diferentes dependendo do contexto.

HEX e RGB descrevem a cor como uma mistura de luz vermelha, verde e azul. HEX é uma representação hexadecimal compacta dos mesmos três valores de canal 0-255 que o RGB expressa em decimal. HSL (Matiz, Saturação, Luminosidade) e HSV (Matiz, Saturação, Valor) reorganizam a mesma informação em um sistema de coordenadas cilíndrico, onde o matiz é um ângulo na roda de cores (0-360 graus) e a saturação e luminosidade ou brilho são percentagens. Isso torna HSL e HSV mais intuitivos para tarefas como criar tons mais claros ou escuros do mesmo matiz.

A conversão entre esses formatos requer matemática bem definida. A especificação W3C CSS Color Module Level 4 documenta os algoritmos que os navegadores usam para resolver qualquer cor CSS em um triplo sRGB. As fórmulas são determinísticas: uma entrada específica sempre produz o mesmo resultado, então as conversões são sem perda, contanto que os valores não sejam arredondados ou truncados. A maioria dos seletores de cores e ferramentas de design usa essas mesmas fórmulas internamente.

Por que usar este Conversor de Cores?

Ferramentas de design exportam cores em um formato, seu CSS precisa de outro, e a API que você está chamando espera um terceiro. Em vez de escrever código de conversão ou buscar a fórmula correta, cole um valor e obtenha todos os formatos de uma vez.

Conversão em Tempo Real
Digite ou selecione uma cor e veja HEX, RGB, HSL e HSV atualizando em tempo real. Sem botão de envio, sem viagem ao servidor.
🔒
Processamento com Privacidade
Toda a matemática de conversão é executada no seu navegador. Nenhum valor de cor, dado de uso ou cookie é enviado a qualquer lugar.
🔀
Todos os Quatro Formatos de Uma Vez
Uma entrada produz HEX, RGB, HSL e HSV simultaneamente. Copie o formato que precisar com um único clique.
📋
Sem Cadastro Necessário
Abra a página e comece a converter. Sem cadastro, sem e-mail, sem limites de uso. Funciona offline após o carregamento.

Casos de Uso do Conversor de Cores

Desenvolvimento CSS
Um designer entrega um valor HEX do Figma, mas sua biblioteca de componentes usa HSL para tematização. Converta o valor e insira nas suas propriedades CSS personalizadas ou na configuração do Tailwind.
Integração com API Backend
Seu endpoint aceita cores como arrays RGB para geração de gráficos. Converta os códigos HEX da marca presentes no guia de estilo nos triplos inteiros que a API espera.
Manutenção de Design System
Ao documentar um design system, você precisa de cada token de cor listado em HEX para referência rápida, RGB para renderização no Canvas e HSL para geração programática de variações.
QA e Testes Visuais
Comparar a cor de pixel de uma captura de tela (geralmente reportada em RGB pelo DevTools do navegador) com o valor HEX esperado de uma especificação do Figma. A conversão rápida confirma ou sinaliza divergências.
Visualização de Dados
Bibliotecas de gráficos como D3.js e Chart.js aceitam cores em diferentes formatos dependendo do método. Converta uma vez e mantenha uma notação consistente em toda a configuração do dataset.
Aprendizado de Teoria das Cores
Estudantes de computação gráfica ou design web podem ver como a mesma cor se mapeia em HEX, RGB, HSL e HSV. Ajustar um canal e observar os outros mudando constrói intuição sobre como os modelos de cores se relacionam.

Referência de Formatos de Cor

A tabela abaixo lista os cinco formatos de cor mais comuns, com a mesma cor índigo (#6366F1) exibida em cada notação. HEX e RGB são os mais amplamente suportados em CSS e JavaScript. HSL é preferido para tematização porque ajustar luminosidade e saturação é direto. HSV é o modelo usado pelos seletores de cor da maioria dos softwares de design gráfico.

FormatoExemplo (índigo)CanaisUso comum
HEX#6366F16 (or 3/8)CSS, design tools, brand guides
RGBrgb(99, 102, 241)3 (0–255 each)CSS, Canvas API, image processing
HSLhsl(239, 84%, 67%)3 (deg, %, %)CSS, color theming, accessibility tuning
HSVhsv(239, 59%, 95%)3 (deg, %, %)Color pickers, Photoshop, Figma
CMYKcmyk(59%, 58%, 0%, 5%)4 (0–100% each)Print design, prepress workflows

HEX vs RGB vs HSL

Os três formatos descrevem o mesmo espaço de cor sRGB. A diferença está em como expõem os dados, o que afeta a legibilidade e a facilidade de manipulação em diferentes contextos.

HEX
Uma string hexadecimal de 6 dígitos (ou abreviação de 3 dígitos). Compacto e universal em CSS, ferramentas de design e diretrizes de marca. Difícil de ler à primeira vista: #6366F1 não informa o matiz. Suporta um formato opcional de 8 dígitos (#6366F180) para transparência alfa.
RGB
Três inteiros de 0 a 255 para os canais vermelho, verde e azul. O formato nativo para Canvas 2D, WebGL e a maioria das bibliotecas de processamento de imagem. Fácil de manipular canal por canal, mas ajustar o brilho percebido requer alterar os três valores juntos.
HSL
Matiz (0-360 graus), saturação (0-100%) e luminosidade (0-100%). Projetado para legibilidade humana. Para tornar uma cor mais clara, aumente L. Para dessaturar, diminua S. O CSS suporta nativamente a notação hsl(), e a sintaxe moderna color-mix() e de cor relativa do CSS é baseada nela.

Exemplos de Código

Conversão de cores entre HEX, RGB e HSL em linguagens e ambientes comuns. Cada exemplo usa a mesma cor índigo (#6366F1) para facilitar a comparação.

JavaScript
// HEX → RGB
function hexToRgb(hex) {
  const n = parseInt(hex.replace('#', ''), 16)
  return [(n >> 16) & 255, (n >> 8) & 255, n & 255]
}
hexToRgb('#6366f1') // → [99, 102, 241]

// RGB → HSL
function rgbToHsl(r, g, b) {
  r /= 255; g /= 255; b /= 255
  const max = Math.max(r, g, b), min = Math.min(r, g, b)
  const l = (max + min) / 2
  if (max === min) return [0, 0, Math.round(l * 100)]
  const d = max - min
  const s = l > 0.5 ? d / (2 - max - min) : d / (max + min)
  let h = 0
  if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6
  else if (max === g) h = ((b - r) / d + 2) / 6
  else h = ((r - g) / d + 4) / 6
  return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)]
}
rgbToHsl(99, 102, 241) // → [239, 84, 67]
Python
import colorsys

# HEX → RGB
def hex_to_rgb(hex_str: str) -> tuple[int, int, int]:
    h = hex_str.lstrip('#')
    return tuple(int(h[i:i+2], 16) for i in (0, 2, 4))

hex_to_rgb('#6366f1')  # → (99, 102, 241)

# RGB → HSL (colorsys uses HLS order)
r, g, b = 99 / 255, 102 / 255, 241 / 255
h, l, s = colorsys.rgb_to_hls(r, g, b)
print(f"hsl({h * 360:.0f}, {s * 100:.0f}%, {l * 100:.0f}%)")
# → hsl(239, 84%, 67%)

# RGB → HSV
h, s, v = colorsys.rgb_to_hsv(r, g, b)
print(f"hsv({h * 360:.0f}, {s * 100:.0f}%, {v * 100:.0f}%)")
# → hsv(239, 59%, 95%)
Go
package main

import (
	"fmt"
	"math"
)

func hexToRGB(hex string) (int, int, int) {
	var r, g, b int
	fmt.Sscanf(hex, "#%02x%02x%02x", &r, &g, &b)
	return r, g, b
}

func rgbToHSL(r, g, b int) (int, int, int) {
	rf, gf, bf := float64(r)/255, float64(g)/255, float64(b)/255
	max := math.Max(rf, math.Max(gf, bf))
	min := math.Min(rf, math.Min(gf, bf))
	l := (max + min) / 2
	if max == min {
		return 0, 0, int(math.Round(l * 100))
	}
	d := max - min
	s := d / (2 - max - min)
	if l <= 0.5 {
		s = d / (max + min)
	}
	var h float64
	switch max {
	case rf: h = (gf - bf) / d; if gf < bf { h += 6 }
	case gf: h = (bf - rf) / d + 2
	case bf: h = (rf - gf) / d + 4
	}
	return int(math.Round(h / 6 * 360)), int(math.Round(s * 100)), int(math.Round(l * 100))
}

func main() {
	r, g, b := hexToRGB("#6366f1")
	fmt.Println(r, g, b)         // → 99 102 241
	fmt.Println(rgbToHSL(r, g, b)) // → 239 84 67
}
CSS
/* Modern CSS supports multiple color formats natively */

/* HEX notation */
.button { color: #6366f1; }

/* RGB functional notation */
.button { color: rgb(99 102 241); }

/* HSL — easier to adjust lightness and saturation */
.button { color: hsl(239 84% 67%); }

/* CSS Color Level 4: relative color syntax (Chrome 119+) */
.button-light { color: hsl(from #6366f1 h s calc(l + 20%)); }

/* color-mix() for tinting without manual conversion */
.button-muted { color: color-mix(in srgb, #6366f1 70%, white); }

Perguntas Frequentes

Qual é a diferença entre HSL e HSV?
Ambos usam matiz e saturação, mas definem o brilho de forma diferente. HSL usa luminosidade, onde 50% é a cor pura, 0% é preto e 100% é branco. HSV usa valor (ou brilho), onde 100% é a cor pura e 0% é preto. HSV não tem um ponto de extremidade branco direto. Na prática, HSL é usado em CSS e desenvolvimento web, enquanto HSV é o modelo por trás da maioria dos seletores de cores em softwares de design como Photoshop e Figma.
Como converter HEX para RGB em JavaScript?
Analise a string hex como inteiro com parseInt(hex, 16), depois extraia cada canal com deslocamento de bits: (n >> 16) & 255 para vermelho, (n >> 8) & 255 para verde e n & 255 para azul. Isso funciona com qualquer string hex de 6 dígitos com ou sem o # inicial. Para abreviações de 3 dígitos como #F0F, expanda cada dígito primeiro (FF00FF) antes de analisar.
Posso usar HSL diretamente no CSS?
Sim. Todos os navegadores modernos suportam hsl() e hsla() em CSS. A partir do CSS Color Level 4, a sintaxe é hsl(239 84% 67%) com valores separados por espaço (vírgulas ainda são aceitas). Você também pode adicionar alfa como quarto parâmetro: hsl(239 84% 67% / 0.5). Safari, Chrome, Firefox e Edge suportam essa sintaxe.
A conversão de cores tem perda de dados?
Matematicamente, não. HEX, RGB, HSL e HSV descrevem o mesmo espaço de cor sRGB e as conversões são reversíveis. Na prática, pequenas diferenças de arredondamento podem aparecer porque HEX é limitado a 256 passos por canal e as percentagens de HSL são geralmente arredondadas para inteiros. Converter repetidas vezes pode acumular erros de arredondamento de 1-2 unidades.
O que é o formato HEX de 8 dígitos?
O formato HEX de 8 dígitos adiciona dois dígitos alfa (transparência) ao HEX padrão de 6 dígitos. Por exemplo, #6366F180 significa a mesma cor índigo com 50% de opacidade (0x80 = 128, aproximadamente 50% de 255). O CSS suporta essa notação em todos os navegadores modernos. A forma abreviada tem 4 dígitos, como #63F8.
Por que minha cor parece diferente em outro monitor?
A aparência da cor depende do perfil de cor, brilho e calibração gama do monitor. Duas telas podem exibir o mesmo valor sRGB (#6366F1) de forma diferente se seus perfis de cor divergirem. Ferramentas de conversão de cores trabalham em um espaço de cor definido (geralmente sRGB) e produzem resultados matematicamente corretos. Diferenças percebidas são um problema de calibração de display, não um erro de conversão.
Como escolher um tom mais claro ou escuro de uma cor?
Converta a cor para HSL e ajuste o canal L (luminosidade). Aumentar L em direção a 100% produz tons mais claros; diminuir em direção a 0% produz tons mais escuros. O matiz e a saturação permanecem iguais. Em CSS, você pode fazer isso diretamente: hsl(239 84% 80%) é uma versão mais clara de hsl(239 84% 67%). O CSS moderno também oferece color-mix(in srgb, #6366F1, white 30%) para o mesmo efeito sem conversão manual.