# color-space [![test](https://github.com/colorjs/color-space/actions/workflows/test.yml/badge.svg)](https://github.com/colorjs/color-space/actions/workflows/test.yml) [![npm](https://img.shields.io/npm/v/color-space)](https://npmjs.org/color-space) [![size](https://img.shields.io/bundlephobia/minzip/color-space/latest)](https://bundlephobia.com/package/color-space) the Ostwald hue circle at full color, shown continuously and in ten steps **Open collection of color spaces.**
* Verified formulas * Conventional ranges * JS / WASM / GLSL / LUT / ICC **[Atlas →](https://color-space.io/)** ## Use ```js import space from 'color-space'; space.rgb.oklch(255, 128, 0); // → [0.732, 0.186, 53] — modern CSS space.slog3.rec2020(0.5, 0.5, 0.5); // camera log → UHD wide gamut space.rgb.xyz(300, -10, 0); // → [59.7, 30.6, 2.8] — out-of-range in, unclamped out // batch space.rgb.oklch([255, 128, 0, 0, 255, 128]); // [0.732, 0.186, 53, 0.875, 0.234, 151] // meta space.lab.range; // [[0, 100], [-125, 125], [-125, 125]] ``` Individual spaces: ```js import oklch from 'color-space/oklch.js'; oklch.rgb(0.65, 0.25, 180); // matches CSS oklch(0.65 0.25 180) ``` ## Imports * `color-space` – All 168 interconnected spaces · 55 kB gzip * `color-space/.js` – One standalone space * `color-space/lite` – 27-space working set · 9 kB gzip * `color-space/wasm` – lite set as WASM · bare `.wasm` included * `color-space/gl` – GLSL/WGSL shader source * `color-space/gl/hlsl` · `color-space/gl/msl` – HLSL (DirectX, Unity, Unreal) and Metal, written by naga from the WGSL · `await hlsl('rgb', 'oklch')` · needs the optional peer `naga-wasm` (it declares Node ≥ 24.12; CI runs it on 22, where npm only warns) * `color-space/lut` – `.cube` LUTs for Resolve, Premiere, OBS, ffmpeg — [verified vs ACES](docs/formula-verification.md#camera-log-verification-against-official-aces-transforms) * `color-space/icc` – Matrix + TRC or CLUT profiles * `color-space/data.json` – Channels, ranges, provenance, references, graph, gamuts * `npx color-space rgb oklch 255 128 0` – CLI, no install: `convert` (default) · `cube` · `icc` · `space` · `spaces` · `mcp` (MCP server for [agents](#agents)) [Upgrading from v2?](docs/migration.md) ## Agents MCP tools – `convert` · `gamut` · `css` · `space` · `spaces` · `cube` – so agents call verified math instead of guessing it. ```sh claude mcp add color-space -- npx -y color-space mcp # Claude Code code --add-mcp '{"name":"color-space","command":"npx","args":["-y","color-space","mcp"]}' # VS Code ``` Claude Desktop `claude_desktop_config.json`, any project `.mcp.json`: ```json { "mcpServers": { "color-space": { "command": "npx", "args": ["-y", "color-space", "mcp"] } } } ``` ## Spaces
**Display & web**
[sRGB](https://color-space.io/rgb) · [Display P3](https://color-space.io/p3) · [Rec. 2020](https://color-space.io/rec2020) · [Linear-light sRGB](https://color-space.io/lrgb) · [Rec. 709](https://color-space.io/rec709) · [ProPhoto RGB](https://color-space.io/prophoto) · [Adobe RGB (1998)](https://color-space.io/a98rgb) · [DCI-P3](https://color-space.io/dci-p3) · [Linear Display P3](https://color-space.io/p3-linear) · [Linear Rec. 2020](https://color-space.io/rec2020-linear) · [Linear Adobe RGB (1998)](https://color-space.io/a98rgb-linear) · [Linear ProPhoto RGB](https://color-space.io/prophoto-linear) · [scRGB](https://color-space.io/scrgb) · [RIMM RGB](https://color-space.io/rimm) · [CIE RGB](https://color-space.io/cie-rgb) · [NTSC RGB (1953)](https://color-space.io/ntsc) · [PAL / SECAM RGB](https://color-space.io/pal) · [Apple RGB](https://color-space.io/apple-rgb) · [SMPTE-240M](https://color-space.io/smpte-240m) **RGB remixes**
[HSL](https://color-space.io/hsl) · [HSV / HSB](https://color-space.io/hsv) · [HWB](https://color-space.io/hwb) · [HSI](https://color-space.io/hsi) · [HCG](https://color-space.io/hcg) · [HCL](https://color-space.io/hcl) · [HSP](https://color-space.io/hsp) · [HCY](https://color-space.io/hcy) · [HSM](https://color-space.io/hsm) **Perceptual**
[OKLCH](https://color-space.io/oklch) · [CIELAB](https://color-space.io/lab) · [CAM16](https://color-space.io/cam16) · [OKLab](https://color-space.io/oklab) · [HCT](https://color-space.io/hct) · [Okhsl](https://color-space.io/okhsl) · [Okhsv](https://color-space.io/okhsv) · [Okhwb](https://color-space.io/okhwb) · [OKLrAB](https://color-space.io/oklrab) · [OKLrCH](https://color-space.io/oklrch) · [SRLAB2](https://color-space.io/srlab2) · [proLab](https://color-space.io/prolab) · [sUCS](https://color-space.io/sucs) · [IgPgTg](https://color-space.io/igpgtg) · [Jzazbz](https://color-space.io/jzazbz) · [JzCzHz](https://color-space.io/jzczhz) · [IPT](https://color-space.io/ipt) · [Izazbz](https://color-space.io/izazbz) · [hdr-IPT](https://color-space.io/hdr-ipt) · [CIELChab](https://color-space.io/lchab) · [CIELUV](https://color-space.io/luv) · [HSLuv](https://color-space.io/hsluv) · [CIELChuv](https://color-space.io/lchuv) · [CIELAB D65](https://color-space.io/lab-d65) · [CIELCh D65](https://color-space.io/lch-d65) · [HPLuv](https://color-space.io/hpluv) · [DIN99o Lab](https://color-space.io/din99o-lab) · [DIN99o LCh](https://color-space.io/din99o-lch) · [DIN99d](https://color-space.io/din99d) · [Hunter Lab](https://color-space.io/labh) · [CIE 1960 UCS](https://color-space.io/ucs) · [CIE 1964 UVW](https://color-space.io/uvw) · [Adams–Nickerson Lab](https://color-space.io/anlab) · [hdr-CIELAB](https://color-space.io/hdr-cie-lab) · [CIECAM02](https://color-space.io/ciecam02) · [CAM16-UCS](https://color-space.io/cam16-ucs) · [ZCAM](https://color-space.io/zcam) · [CAM02-UCS](https://color-space.io/cam02-ucs) · [CAM16-LCD](https://color-space.io/cam16-lcd) · [CAM16-SCD](https://color-space.io/cam16-scd) · [CAM02-LCD](https://color-space.io/cam02-lcd) · [CAM02-SCD](https://color-space.io/cam02-scd) · [Hellwig 2022](https://color-space.io/hellwig2022) · [RLAB](https://color-space.io/rlab) · [LLAB](https://color-space.io/llab) · [Nayatani 95](https://color-space.io/nayatani95) · [Hunt](https://color-space.io/hunt) · [ATD95](https://color-space.io/atd95) **Colorimetry & research**
[CIE XYZ (D65)](https://color-space.io/xyz) · [CIE xyY](https://color-space.io/xyy) · [LMS](https://color-space.io/lms) · [CIE XYZ (D50)](https://color-space.io/xyz-d50) · [CIE 1976 u′v′](https://color-space.io/uv) · [CCT + Duv](https://color-space.io/cct-duv) · [Color temperature (Kelvin)](https://color-space.io/kelvin) · [Maxwell triangle](https://color-space.io/maxwell) · [Wavelength](https://color-space.io/wavelength) · [Absolute XYZ D65](https://color-space.io/xyz-abs-d65) · [MacLeod–Boynton](https://color-space.io/macboyn) · [DKL](https://color-space.io/dkl) · [Grayscale](https://color-space.io/gray) · [Dominant wavelength / DSH](https://color-space.io/dsh) · [rg chromaticity](https://color-space.io/rg) · [Yrg (Kirk 2019)](https://color-space.io/yrg) · [XYB](https://color-space.io/xyb) · [OSA-UCS](https://color-space.io/osaucs) · [TSL](https://color-space.io/tsl) · [YES](https://color-space.io/yes) · [Ohta I₁I₂I₃](https://color-space.io/ohta) · [lαβ](https://color-space.io/lalphabeta)
**Video & broadcast**
[BT.709 Y′CbCr](https://color-space.io/ycbcr-bt709) · [ICtCp](https://color-space.io/ictcp) · [BT.2020 Y′CbCr](https://color-space.io/ycbcr-bt2020) · [BT.601 525-line Y′CbCr](https://color-space.io/ycbcr-bt601-525) · [BT.601 625-line Y′CbCr](https://color-space.io/ycbcr-bt601-625) · [YCbCr (parameterized)](https://color-space.io/ycbcr) · [YUV](https://color-space.io/yuv) · [YIQ](https://color-space.io/yiq) · [YPbPr](https://color-space.io/ypbpr) · [YCgCo](https://color-space.io/ycgco) · [JPEG YCbCr](https://color-space.io/jpeg) · [YDbDr](https://color-space.io/ydbdr) · [YcCbcCrc](https://color-space.io/yccbccrc) · [xvYCC](https://color-space.io/xvycc) · [SMPTE-C](https://color-space.io/smpte-c) · [PhotoYCC](https://color-space.io/photoycc) · [Rec. 2100 PQ](https://color-space.io/rec2100-pq) · [Rec. 2100 HLG](https://color-space.io/rec2100-hlg) · [Linear Rec. 2100](https://color-space.io/rec2100-linear) · [ICaCb](https://color-space.io/icacb) **Film & camera**
[ACEScg](https://color-space.io/acescg) · [ARRI LogC3](https://color-space.io/logc3) · [ACEScc](https://color-space.io/acescc) · [Sony S-Log3](https://color-space.io/slog3) · [Sony S-Gamut3.Cine](https://color-space.io/sgamut3cine) · [ACES2065-1](https://color-space.io/aces2065-1) · [ACEScct](https://color-space.io/acescct) · [ARRI LogC4](https://color-space.io/logc4) · [Cineon](https://color-space.io/cineon) · [DaVinci Wide Gamut / Intermediate](https://color-space.io/davinci) · [Sony S-Log2](https://color-space.io/slog2) · [Panasonic V-Log](https://color-space.io/vlog) · [RED Log3G10](https://color-space.io/log3g10) · [Canon Log](https://color-space.io/clog) · [Canon Log 2](https://color-space.io/clog2) · [Canon Log 3](https://color-space.io/clog3) · [Fujifilm F-Log](https://color-space.io/flog) · [Fujifilm F-Log2](https://color-space.io/flog2) · [Fujifilm F-Log2 C](https://color-space.io/flog2c) · [Nikon N-Log](https://color-space.io/nlog) · [Apple Log](https://color-space.io/applelog) · [Apple Log 2](https://color-space.io/applelog2) · [Blackmagic Film Gen 5](https://color-space.io/bmdfilm) · [DJI D-Log](https://color-space.io/dlog) · [FilmLight T-Log / E-Gamut](https://color-space.io/tlog) · [Kinefinity KineLOG3](https://color-space.io/kinelog3) · [DCDM X′Y′Z′](https://color-space.io/dcdm) · [Sony S-Log](https://color-space.io/slog) · [ACESproxy](https://color-space.io/acesproxy) · [ERIMM RGB](https://color-space.io/erimm) · [Leica L-Log](https://color-space.io/llog) · [GoPro Protune](https://color-space.io/protune) · [GoPro GP-Log2](https://color-space.io/gplog2) · [Insta360 I-Log](https://color-space.io/ilog) · [Xiaomi Mi-Log](https://color-space.io/milog) · [OPPO O-Log](https://color-space.io/olog) · [Samsung Log](https://color-space.io/samsunglog) · [REDLog](https://color-space.io/redlog) · [REDLogFilm](https://color-space.io/redlogfilm) · [RED Log3G12](https://color-space.io/log3g12) · [Panalog](https://color-space.io/panalog) · [ViperLog](https://color-space.io/viperlog) · [Filmic Pro 6](https://color-space.io/filmicpro) **Color order & surface**
[CMYK](https://color-space.io/cmyk) · [Munsell](https://color-space.io/munsell) · [RYB](https://color-space.io/ryb) · [CMY](https://color-space.io/cmy) · [RAL Design](https://color-space.io/ral-design) · [Coloroid](https://color-space.io/coloroid) · [Ostwald](https://color-space.io/ostwald)
## Motivation A complete collection of color spaces: one minimal API, verified formulas. While alternatives focus on digital color spaces, this project takes broader perspective, covering historical and cross-disciplinary spaces as well. Side effects: corrected papers, color education, test cases for JS→WASM compilers ([porffor](https://github.com/CanadaHonk/porffor), [jz](https://github.com/dy/jz)). It is not a color toolbox — parsing, interpolation, ΔE, gamut mapping, contrast, palettes, alpha stay out. Pantone, NCS, RAL Classic, and similar licensed swatch catalogs aren't open and stay out as well. ## Credits Thanks to the researchers, theorists, specifiers, implementors and the libraries that helped this one happen. | Library | Spaces | Ranges | Camera log · CAM · historic | Backends | Speed (M op/s)¹ | |---|---:|---|---|---|---:| | **color-space** | **168** | Conventional | ✅ | JS · WASM · GLSL/WGSL · LUT · ICC | **5.52** | | color-space/lite | 27 | Conventional | logs · HDR | JS · 9 kB gzip | 3.01 ² | | color-space/wasm | 27 | Conventional | logs · HDR | WASM | 1.38–4.78× JS batches ³ | | [culori](https://github.com/Evercoder/culori) | 30 | 0–1 | ❌ | JS | 4.46 | | [colorjs.io](https://colorjs.io/) | ~40 | 0–1 | some | JS | 0.23 | | [texel/color](https://github.com/texel-org/color) | ~16 | 0–1 | ❌ | JS | 3.49 ² | | [chroma-js](https://github.com/gka/chroma.js) | ~12 | mixed | ❌ | JS | 1.19 ² | | [d3-color](https://github.com/d3/d3-color) | 6 | mixed | ❌ | JS | 9.35 ² | ¹ geometric mean, million scalar calls per second over the 7 shared [`npm run benchmark`](benchmark/) conversions (rgb ⇄ lab · hsl · oklab, rgb → p3), inputs rotating through a 256-color table; median of 3 runs on 2026-10-03 as the benchmark prints it, Node 22.22 / Intel Xeon 2.1 GHz (4 vCPU), culori 4.0.2 · colorjs.io 0.5.2 · @texel/color 1.1.11 · chroma-js 3.2.0 · d3-color 3.1.0. Absolute figures move with the machine; the ratios are the claim · ² measured on the subset it implements — color-space on the same subset: lite's 4 (lab, oklab) 3.09 · texel's 3 (oklab, p3) 2.76 · chroma-js's 6 6.45 · d3-color's 4 (lab, hsl) 9.28 · ³ WASM speedup over the JS batch API, rgb → each of its 26 targets over 1M pixels, per-target medians of 3 further runs the same day (lowest on Jzazbz and JzCzHz)

CC0 · ॐ