A professional, high-precision color manipulation library for TypeScript and JavaScript.
Designed for scientific accuracy, HDR workflows, and modern web standards.
Features
Type-Safe: Written purely in strict TypeScript.
Universal: Supports both ESM (EcmaScript Modules) and CommonJS. Works in
Node.js and Browsers.
Professional Grade: Designed with many advanced use cases in mind.
Immutable Objects For predictable state management.
High Precision: Uses spectral calculations and high-bit depth logic
where applicable.
1 * HDR Support: Handles out-of-bound values (values > 1.0 or < 0.0)
natively without clamping.
Advanced Capabilities:
Tone Mapping: Includes industry standards like AgX, ACES (Rgb/Luminance), and Reinhard.
Gamut Mapping: Perceptual compression using Oklch/Oklab logic.
Chromatic Adaptation: Automatic White Point balancing (e.g., D50 D65)
using Bradford matrices.
Utilities:
Accessibility: WCAG contrast ratios and APCA.
CVD: Color Vision Deficiency (Color Blindness) simulation and
correction.
Extraction: K-Means and Median Cut algorithms for palette generation
from images.
Generators: Palettes, scales, gradients, and statistical
distributions.
// An extremely bright HDR red (unsupported by standard monitors) constsuperBright = Rec2020.fromComponents([2.0, 0, 0, 1])
// "The Ultimate Conversion": White Balance -> Tone Map -> Gamut Map constdisplayReady = Base.convert(superBright, Rgb, { "gamutMapping":true, // Use modern AgX filmic tone mapping "toneMapping": {"fn":"agX", "look":"punchy"}, "whiteBalance":"bradford" })
Supported Spaces
Currently supports 28 color spaces, including legacy, print, and modern HDR
standards:
Standard RGB: RGB (sRGB), Linear RGB, P3 (Display P3), Adobe RGB, ProPhoto
RGB (ROMM RGB), Rec.2020, Rec.709
To ensure maintainability and tree-shakability, the library uses a
Star Topology. Every color space maps directly to/from XYZ (D65). This
allows conversion between any two spaces in exactly two steps, avoiding the
complexity of direct converters.