Convertidor de Colores

Convierte colores entre formatos HEX, RGB, HSL y HSV con selector de color visual

Prueba un ejemplo

Haz clic en la muestra para abrir el selector

O edita cualquier valor abajo

HEX
RGB
HSL
HSV

¿Qué es la conversión de colores?

Un convertidor de colores traduce un valor de color de una notación a otra — por ejemplo, de un triplete HEX (#6366F1) a una tupla RGB (99, 102, 241) o un triple HSL (239, 84%, 67%). Un mismo color también puede expresarse como un triple HSV (239, 59%, 95%). Cada formato codifica el mismo color visual usando un modelo matemático diferente; distintas herramientas, lenguajes y APIs esperan formatos distintos según el contexto.

HEX y RGB describen el color como una mezcla de luz roja, verde y azul. HEX es una representación hexadecimal compacta de los mismos tres valores de canal 0-255 que RGB expresa en decimal. HSL (Tono, Saturación, Luminosidad) y HSV (Tono, Saturación, Valor) reorganizan la misma información en un sistema de coordenadas cilíndricas donde el tono es un ángulo en una rueda de colores (0-360 grados), y la saturación y luminosidad o brillo son porcentajes. Esto hace que HSL y HSV sean más intuitivos para tareas como crear tonos más claros u oscuros del mismo tono.

La conversión entre estos formatos requiere matemáticas bien definidas. La especificación CSS Color Module Level 4 del W3C documenta los algoritmos que usan los navegadores para convertir cualquier color CSS en un triplete sRGB. Las fórmulas son deterministas: una entrada dada siempre produce la misma salida, por lo que las conversiones no tienen pérdida mientras los valores no se redondeen o recorten. La mayoría de los selectores de color y herramientas de diseño se basan en estas mismas fórmulas internamente.

¿Por qué usar este convertidor de colores?

Las herramientas de diseño exportan colores en un formato, tu CSS necesita otro, y la API que estás llamando espera un tercero. En lugar de escribir código de conversión o buscar la fórmula correcta, pega un valor y obtén todos los formatos a la vez.

Conversión instantánea en tiempo real
Escribe o selecciona un color y observa cómo HEX, RGB, HSL y HSV se actualizan en tiempo real. Sin botón de envío, sin viaje de ida y vuelta al servidor.
🔒
Procesamiento con privacidad
Toda la matemática de conversión se ejecuta en tu navegador. Ningún valor de color, dato de uso ni cookie se envía a ningún lugar.
🔀
Los cuatro formatos a la vez
Una entrada produce HEX, RGB, HSL y HSV simultáneamente. Copia el formato que necesites con un solo clic.
📋
Sin cuenta requerida
Abre la página y empieza a convertir. Sin registro, sin correo electrónico, sin límites de uso. Funciona sin conexión una vez cargado.

Casos de uso del convertidor de colores

Desarrollo CSS
Un diseñador te da un valor HEX de Figma, pero tu librería de componentes usa HSL para el sistema de temas. Convierte el valor y añádelo a tus propiedades personalizadas CSS o a la configuración de Tailwind.
Integración con APIs backend
Tu endpoint acepta colores como arrays RGB para la generación de gráficos. Convierte los códigos HEX de marca de la guía de estilo en los tripletes enteros que espera la API.
Mantenimiento del sistema de diseño
Al documentar un sistema de diseño, necesitas cada token de color listado en HEX para referencia rápida, RGB para el renderizado en Canvas, y HSL para la generación programática de tonos.
QA y pruebas visuales
Comparar el color de un píxel de una captura de pantalla (normalmente reportado en RGB por el DevTools del navegador) con el valor HEX esperado de una especificación de Figma. Una conversión rápida confirma o señala discrepancias.
Visualización de datos
Librerías de gráficos como D3.js y Chart.js aceptan colores en distintos formatos según el método. Convierte una vez y mantén una notación consistente en toda la configuración de tu conjunto de datos.
Aprendizaje de teoría del color
Los estudiantes de gráficos por computadora o diseño web pueden ver cómo el mismo color se mapea en HEX, RGB, HSL y HSV. Ajustar un canal y observar cómo cambian los demás genera intuición sobre cómo se relacionan los modelos de color.

Referencia de formatos de color

La tabla a continuación lista los cinco formatos de color más comunes, mostrando el mismo color índigo (#6366F1) en cada notación. HEX y RGB son los más ampliamente soportados en CSS y JavaScript. HSL es preferido para sistemas de temas porque ajustar la luminosidad y la saturación es sencillo. HSV es el modelo que usan la mayoría de los selectores de color en software de diseño gráfico.

FormatoEjemplo (índigo)CanalesUso común
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

Los tres formatos describen el mismo espacio de color sRGB. La diferencia está en cómo exponen los datos, lo que afecta la legibilidad y la facilidad de manipulación en distintos contextos.

HEX
Una cadena hexadecimal de 6 dígitos (o abreviatura de 3 dígitos). Compacto y universal en CSS, herramientas de diseño y guías de marca. Difícil de leer a simple vista: #6366F1 no indica el tono. Soporta un formato opcional de 8 dígitos (#6366F180) para transparencia alfa.
RGB
Tres enteros de 0 a 255 para los canales rojo, verde y azul. El formato nativo para Canvas 2D, WebGL y la mayoría de librerías de procesamiento de imágenes. Fácil de manipular canal por canal, pero ajustar el brillo percibido requiere cambiar los tres valores a la vez.
HSL
Tono (0-360 grados), saturación (0-100%) y luminosidad (0-100%). Diseñado para la legibilidad humana. Para aclarar un color, aumenta L. Para desaturar, disminuye S. CSS soporta nativamente la notación hsl(), y la sintaxis moderna de color-mix() y colores relativos se basa en ella.

Ejemplos de código

Conversión de colores entre HEX, RGB y HSL en lenguajes y entornos comunes. Cada ejemplo usa el mismo color índigo (#6366F1) para facilitar la comparación.

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); }

Preguntas frecuentes

¿Cuál es la diferencia entre HSL y HSV?
Ambos usan tono y saturación, pero definen el brillo de forma distinta. HSL usa luminosidad, donde 50% es el color puro, 0% es negro y 100% es blanco. HSV usa valor (o brillo), donde 100% es el color puro y 0% es negro. HSV no tiene un punto final blanco directo. En la práctica, HSL se usa en CSS y desarrollo web, mientras que HSV es el modelo detrás de la mayoría de los selectores de color en software de diseño como Photoshop y Figma.
¿Cómo convierto HEX a RGB en JavaScript?
Convierte la cadena hexadecimal a un entero con parseInt(hex, 16) y extrae cada canal con desplazamiento de bits: (n >> 16) & 255 para rojo, (n >> 8) & 255 para verde, y n & 255 para azul. Esto funciona con cualquier cadena hex de 6 dígitos con o sin el # inicial. Para abreviaturas de 3 dígitos como #F0F, expande primero cada dígito (FF00FF) antes de convertir.
¿Puedo usar HSL directamente en CSS?
Sí. Todos los navegadores modernos soportan hsl() y hsla() en CSS. A partir de CSS Color Level 4, la sintaxis es hsl(239 84% 67%) con valores separados por espacios (las comas todavía se aceptan). También puedes añadir el canal alfa como cuarto parámetro: hsl(239 84% 67% / 0.5). Safari, Chrome, Firefox y Edge soportan esta sintaxis.
¿La conversión de colores tiene pérdida?
Matemáticamente, no. HEX, RGB, HSL y HSV describen el mismo espacio de color sRGB y las conversiones son reversibles. En la práctica, pueden aparecer pequeñas diferencias de redondeo porque HEX está limitado a 256 pasos por canal y los porcentajes de HSL suelen redondearse a enteros. Convertir varias veces puede acumular errores de redondeo de 1-2 unidades.
¿Qué es el formato HEX de 8 dígitos?
El formato HEX de 8 dígitos añade dos dígitos alfa (transparencia) al color HEX estándar de 6 dígitos. Por ejemplo, #6366F180 representa el mismo color índigo al 50% de opacidad (0x80 = 128, aproximadamente el 50% de 255). CSS soporta esta notación en todos los navegadores modernos. La forma abreviada tiene 4 dígitos, como #63F8.
¿Por qué mi color se ve diferente en otro monitor?
La apariencia del color depende del perfil de color del monitor, su brillo y la calibración gamma. Dos pantallas pueden mostrar el mismo valor sRGB (#6366F1) de forma diferente si sus perfiles de color divergen. Las herramientas de conversión de colores trabajan en un espacio de color definido (generalmente sRGB) y producen una salida matemáticamente correcta. Las diferencias percibidas son un problema de calibración de pantalla, no un error de conversión.
¿Cómo elijo un tono más claro u oscuro de un color?
Convierte el color a HSL y ajusta el canal L (luminosidad). Aumentar L hacia 100% produce tonos más claros; reducirlo hacia 0% produce tonos más oscuros. El tono y la saturación permanecen iguales. En CSS, puedes hacerlo directamente: hsl(239 84% 80%) es una versión más clara de hsl(239 84% 67%). CSS moderno también ofrece color-mix(in srgb, #6366F1, white 30%) para el mismo efecto sin conversión manual.