Espacio de color Cubehelix

Mira un color, una paleta, un degradado o una imagen en todos los espacios de color. De las pantallas a la impresión, de los selectores de color a la investigación, de 1860 a 2026.

Uso

JavaScript

La biblioteca completa: 221 espacios, 71 kB con gzip. De cualquier espacio a cualquier otro, en ambos sentidos.

npm install color-space
import space from 'color-space'

space.rgb.oklch(255, 128, 0)      // → [0.732, 0.186, 53]
space.oklch.rgb(0.65, 0.1, 180)   // → [56.14, 162.97, 145.41]
space.oklch.range                 // [[0,1], [0,0.4], [0,360]]

O un solo espacio: el paquete no lleva nada más.

import oklch from 'color-space/oklch.js'

oklch.rgb(0.65, 0.1, 180)   // → [56.14, 162.97, 145.41]

Con tipos: las declaraciones de TypeScript vienen en el paquete, para toda la biblioteca y para cada espacio por separado.

¿Qué es un espacio de color?

Un sistema de coordenadas para el color: ejes, rangos y una regla que vincula los números con luz medible. La visión humana es tricromática, con tres tipos de conos (S, M, L), por lo que tres coordenadas son el mínimo para describir cualquier color que el ojo pueda ver. El mismo naranja es rgb(255 128 0), oklch(0.732 0.186 53) y XYZ [49, 36.7, 4.5]. Una paleta es una selección de colores; un espacio es una forma de registrar cualquier color.

Modelo de color o espacio de color: ¿en qué se diferencian?

Un modelo de color define las componentes con las que se describe un color: tres primarios en RGB, matiz, saturación y claridad en HSL, y cuatro tintas en CMYK. Un espacio de color especifica además los primarios, el punto blanco y la curva de codificación, de modo que cada conjunto de valores corresponda a un color medible. Por eso rgb(255 0 0) describe rojos distintos en sRGB, Display P3 y Adobe RGB: un modelo, tres espacios.

En el uso habitual, ambos se llaman espacios, también en color-mix(in hsl, …) de CSS y en este catálogo. Un modelo puede tomar como referencia un espacio ya definido: aquí HSL y HSV se basan en sRGB, como en CSS.

¿Qué espacio debería usar realmente?

Depende de la tarea:

  • almacenar y compartir imágenes: sRGB, el estándar por defecto de la web;
  • diseñar paletas y degradados: OKLCH, donde incrementos iguales se perciben como cambios iguales;
  • cálculos con luz (mezcla, desenfoque, 3D): RGB en luz lineal;
  • grabar y etalonar vídeo: el espacio log de la cámara, con entrega en Rec. 709 o Rec. 2100;
  • medir cuán distintos se ven dos colores: CIELAB o DIN99o.

Para ver todos los espacios ordenados por tarea, agrupa el catálogo por uso.

¿Qué debería usar en lugar de HSL?

OKLCH. Mantiene los mismos tres parámetros —matiz, croma, claridad—, pero su claridad es fiable: en HSL, el amarillo a L=50 emite unas 13 veces más luz que el azul a L=50, así que la misma L no significa el mismo brillo. En OKLCH, sí. CSS admite oklch() de forma nativa.

¿Cómo convierto hex a OKLCH?

Escríbelo o pégalo en el campo de color de arriba, por ejemplo #ff8000. Todos los espacios de la página muestran ese color a la vez; en OKLCH sus valores son 0.732, 0.186, 53, que en CSS se escriben oklch(0.732 0.186 53). La pestaña css de cada dosier da la forma lista para copiar, y en código es space.rgb.oklch(255, 128, 0).

¿Por qué los colores del degradado se apagan en el centro?

Porque se calculan en sRGB codificado con gamma, donde promediar los números de dos colores produce una luz más oscura y apagada que la que daría mezclar realmente su luz. Interpolar en OKLab lo evita; en CSS se escribe linear-gradient(in oklab, red, blue). La fila interpolar de cada dosier traza la misma mezcla en dos espacios, uno junto al otro, para ver la diferencia antes de elegir.

¿Cómo convierto S-Log3 u otro log de cámara a Rec. 709?

Abre el espacio log de tu cámara, como S-Log3, LogC4 o Apple Log. En su bloque LUT, elige Rec. 709 y tu editor: DaVinci Resolve, Premiere Pro, Final Cut Pro, OBS, ffmpeg y otros. Tu navegador genera el archivo .cube. Es una conversión técnica sin mapeo de tonos: las altas luces por encima del blanco difuso se recortan, y el look lo pones tú.

¿Qué significa «fuera de gama»?

Un color que un espacio puede describir pero que otro —o la pantalla— no puede mostrar. Un verde intenso de Display P3 no existe en sRGB: al convertirlo, los números quedan fuera del rango válido. El atlas lo mantiene a la vista: un ⚠ junto al color actual indica que queda fuera del Límite elegido; al mantener Alt sobre un plano o una franja, se indica qué gama más amplia necesita el color de ese punto (P3, Rec. 2020), y los tramos fuera de rango se ven atenuados sobre un damero.

¿Por qué la impresión se ve más apagada que la pantalla?

Una pantalla emite luz; el papel refleja lo que sus tintas no absorben. La tinta sobre papel alcanza menos colores vivos —los azules, verdes y rojos RGB saturados quedan fuera de su gama—, así que se imprimen más apagados. La preimpresión convierte mediante un perfil ICC específico de la máquina de impresión y el papel, como FOGRA39 para papel estucado en Europa o GRACoL en EE. UU. El CMYK de este catálogo es la fórmula simple que CSS usa para device-cmyk() sin perfil: válida para los valores, no una prueba de impresión.

¿En qué espacio de color debo exportar las fotos?

Para la web y para compartir, sRGB: navegadores y teléfonos lo dan por hecho cuando un archivo no lleva perfil. Display P3 reproduce más colores intensos de la escena en las pantallas de Apple y de muchos Android, siempre que el perfil siga incrustado. Envía Adobe RGB cuando un laboratorio de impresión lo pida. Reserva ProPhoto RGB para editar a 16 bits: su gama es tan amplia que los archivos de 8 bits muestran bandas.

¿Son exactas las conversiones? ¿Se pierden datos en una conversión de ida y vuelta?

Las conversiones son fórmulas cerradas, no aproximaciones por tabla, y una conversión de ida y vuelta devuelve los valores originales con diferencias del orden de la precisión de coma flotante. Las pocas excepciones están documentadas donde ocurren: OSA-UCS no tiene inversa cerrada, y los sistemas de atlas como Munsell interpolan entre los valores publicados. La salida en rgb nunca se limita: un color fuera de sRGB da valores por debajo de 0 o por encima de 255, así que conviene limitarlo solo al mostrarlo.

Además están verificadas: cada espacio enlaza el artículo o la especificación que implementa, los valores se contrastan con colorjs.io en todos los espacios que ambos cubren, y los logs de cámara, con las transformaciones ACES oficiales de la Academia. formula-verification.md registra qué se contrastó con qué, incluidos algunos casos en que los propios artículos publicados tenían errores.

Si los números difieren de los de otra biblioteca, compara los rangos: esta conserva los rangos convencionales de cada espacio —RGB 0–255, claridad Lab 0–100, matiz 0–360—, mientras que muchas lo normalizan todo a 0–1. Cada tarjeta muestra sus rangos; en código son space.oklch.range.

¿Cuáles de estos espacios se pueden escribir en CSS?

De forma nativa, rgb(), hsl(), hwb(), lab(), lch(), oklab() y oklch(), más color() para Display P3, Adobe RGB, ProPhoto, sRGB lineal y XYZ (D65 y D50). El rec2020 de CSS es una gamma 2.4 pura, no la curva BT.2020 del Rec. 2020 de este catálogo: los mismos números corresponderían a otro color. La pestaña css de cada dosier muestra el color actual listo para copiar; los espacios que CSS no tiene se ofrecen en su lugar como perfiles ICC o LUT.

¿Cómo ven los colores las personas daltónicas?

Abre Vista y elige una opción de Visión: ceguera al rojo (protanopia), ceguera al verde (deuteranopia) o ceguera al azul (tritanopia). El catálogo se redibuja como lo ve ese ojo, para que compruebes que los colores de una paleta siguen distinguiéndose. Alrededor de 1 de cada 12 hombres tiene una deficiencia en la visión del color, según datos del NEI.

¿Dónde están Pantone, NCS y RAL?

Son productos con licencia: sus colores se definen mediante datos que venden sus propietarios, no mediante fórmulas publicadas; así que no hay un modelo matemático público que implementar, y redistribuir sus tablas no sería legal. Sí están aquí sistemas afines de definición pública: Munsell (su renotación de 1943 es de acceso público) y RAL Design (definido directamente en CIELAB). Tiene cabida aquí cualquier sistema cuyas fórmulas se hayan publicado alguna vez; sugiere uno que falte.

Alternativas

Comparación de bibliotecas de conversión de color.
HerramientaEspaciosLogs de cámaraLuma–cromasRGBUtilidadesTamañoVelocidadDestinos
color-space20531160–255
parse mix ΔE contrast CVD
62 kBJS, WASM, GL, LUT, ICC, OCIO, MCP, Figma, VS Code, CLI, web
culori30–10–1
parse mix gamut ΔE contrast CVD
23 kBJS
colorjs.io51––0–1
parse mix gamut ΔE contrast
34 kBJS, web
chroma-js11––0–255
parse mix ΔE contrast palettes
17 kBJS
@texel/color16––0–1
parse gamut ΔE
9 kBJS
colour-science1282460–1
ΔE CVD
––Python, LUT
ColorAide77––0–1
parse mix gamut ΔE contrast CVD palettes
––Python
colorspace (R)9––0–1
mix contrast CVD palettes
––R, web
OpenColorIO5711–0–1
gamut
––C++, Python, GL, LUT, ICC
Bruce Lindbloom22––0–1, 0–255
ΔE
––web
oklch.com9––0–255
parse gamut
––web

Según el código fuente, el paquete o la página de cada proyecto, a 2026-10-18.

Copiado