LAB to XYZ Color Converter

Free Online CIELAB to CIE XYZ Color Space Conversion Tool

Free ToolInstant ResultsD65 StandardProfessional Quality

Convert CIELAB (LAB) perceptual color values to CIE XYZ tristimulus coordinates with our free, accurate online calculator. Perfect for designers, photographers, color scientists, and print professionals who need reliable reverse color space conversions.

Our tool uses the industry-standard D65 illuminant and provides instant, precise results with detailed mathematical explanations and comprehensive technical documentation.

How to Convert LAB to XYZ Colors

1

Enter LAB Values

Input your CIELAB color values (L*, a*, b*) in the converter above

2

Instant Conversion

Get immediate XYZ tristimulus values using D65 illuminant standard

3

Use Results

Apply the XYZ values in your color management or device calibration workflow

💡 Pro Tip

XYZ color space is device-independent and serves as the foundation for all other color spaces. Converting from LAB to XYZ allows you to then transform to RGB, CMYK, or other device-specific color spaces while maintaining color accuracy.

Understanding LAB to XYZ Color Space Conversion

CIELAB Color Space

CIELAB (LAB) is a perceptually uniform color space where equal distances represent equal perceived color differences. It's designed to be device-independent and closely match human vision.

  • L*: Lightness (0-100)
  • a*: Green-red axis (-128 to +127)
  • b*: Blue-yellow axis (-128 to +127)

CIE XYZ Color Space

CIE XYZ is the foundation color space defined by the International Commission on Illumination (CIE). It represents colors using three tristimulus values based on human vision response curves.

  • X: Red-green axis (0-95.047 for D65)
  • Y: Luminance (0-100)
  • Z: Blue-yellow axis (0-108.883 for D65)

LAB to XYZ Conversion Formula

// Step 1: Calculate intermediate values
f_y = (L* + 16) / 116
f_x = a* / 500 + f_y
f_z = f_y - b* / 200

// Step 2: Apply inverse nonlinear transformation
f_inv(t) = t³ > 0.008856 ? t³ : (t - 16/116) / 7.787

X_n = f_inv(f_x)
Y_n = f_inv(f_y)
Z_n = f_inv(f_z)

// Step 3: Apply D65 illuminant scaling
X = X_n × 95.047
Y = Y_n × 100.000
Z = Z_n × 108.883

Common LAB to XYZ Conversion Examples

Vibrant Red Color

LAB Input: L*=53.23, a*=80.11, b*=67.22

XYZ Output: X=41.24, Y=21.26, Z=1.93

High chroma red showing positive a* and b* values

Pure Green Color

LAB Input: L*=87.73, a*=-86.18, b*=83.18

XYZ Output: X=35.76, Y=71.52, Z=11.92

Bright green with negative a* (green direction) and positive b* (yellow component)

Deep Blue Color

LAB Input: L*=32.30, a*=79.19, b*=-107.86

XYZ Output: X=18.05, Y=7.22, Z=95.05

Dark blue with positive a* (red component) and negative b* (blue direction)

Neutral Gray (50%)

LAB Input: L*=53.39, a*=0.00, b*=0.00

XYZ Output: X=20.52, Y=21.59, Z=23.51

Perfect neutral gray with zero chroma (a*=0, b*=0)

Understanding XYZ Output Values

X (Red-Green):

Roughly corresponds to red sensitivity, typically 0-95

Y (Luminance):

Brightness component, matches L* relationship, 0-100

Z (Blue-Yellow):

Roughly corresponds to blue sensitivity, typically 0-109

Programming Implementation

🐍Python - LAB to XYZ Conversion

import numpy as np

def lab_to_xyz(L, a, b):
    """Convert CIELAB to CIE XYZ using D65 illuminant"""
    # Calculate intermediate values
    fy = (L + 16) / 116
    fx = a / 500 + fy
    fz = fy - b / 200
    
    # Apply inverse nonlinear transformation
    def f_inv(t):
        t3 = np.power(t, 3)
        return t3 if t3 > 0.008856 else (t - 16/116) / 7.787
    
    x_norm = f_inv(fx)
    y_norm = f_inv(fy)
    z_norm = f_inv(fz)
    
    # D65 illuminant white point
    xn, yn, zn = 95.047, 100.000, 108.883
    
    # Apply illuminant scaling
    X = x_norm * xn
    Y = y_norm * yn
    Z = z_norm * zn
    
    return X, Y, Z

# Example usage
lab = (53.23, 80.11, 67.22)  # Red color
xyz = lab_to_xyz(*lab)
print(f"LAB{lab} -> XYZ({xyz[0]:.2f}, {xyz[1]:.2f}, {xyz[2]:.2f})")

JavaScript - LAB to XYZ Conversion

function labToXyz(L, a, b) {
    // Calculate intermediate values
    const fy = (L + 16) / 116;
    const fx = a / 500 + fy;
    const fz = fy - b / 200;
    
    // Apply inverse nonlinear transformation
    const fInv = (t) => {
        const t3 = Math.pow(t, 3);
        return t3 > 0.008856 ? t3 : (t - 16/116) / 7.787;
    };
    
    const xNorm = fInv(fx);
    const yNorm = fInv(fy);
    const zNorm = fInv(fz);
    
    // D65 illuminant white point
    const xn = 95.047, yn = 100.000, zn = 108.883;
    
    // Apply illuminant scaling
    const X = xNorm * xn;
    const Y = yNorm * yn;
    const Z = zNorm * zn;
    
    return { X: X, Y: Y, Z: Z };
}

// Example usage
const lab = { L: 53.23, a: 80.11, b: 67.22 };  // Red color
const xyz = labToXyz(lab.L, lab.a, lab.b);
console.log(`LAB(${lab.L}, ${lab.a}, ${lab.b}) -> XYZ(${xyz.X.toFixed(2)}, ${xyz.Y.toFixed(2)}, ${xyz.Z.toFixed(2)})`);

Real-World Applications and Use Cases

Design & Photography

  • Converting measured LAB values to device-specific coordinates
  • Color reproduction from spectrophotometer measurements
  • Professional photo editing with measured color targets
  • Brand color implementation across different media

Manufacturing & Quality Control

  • Converting LAB measurements to production color coordinates
  • Quality assurance in textile and paint industries
  • Color matching in automotive and consumer goods
  • Food industry color standardization and control

Scientific Research

  • Converting perceptual measurements to tristimulus values
  • Color vision research and psychophysical studies
  • Spectral data analysis and color appearance modeling
  • Colorimetric research and instrument calibration

Print & Display Technology

  • Print production color management workflows
  • Display calibration and characterization
  • Color profile creation and validation
  • Cross-media color reproduction

Frequently Asked Questions

When would I need to convert LAB to XYZ colors?

LAB to XYZ conversion is essential when you have perceptual color measurements (from instruments like spectrophotometers) and need to convert them to device-independent tristimulus values for further processing, such as converting to RGB for display or CMYK for printing.

What happens if I input LAB values outside normal ranges?

While LAB values can theoretically extend beyond typical ranges, extreme values may produce XYZ coordinates outside the visible spectrum. Our converter handles these cases mathematically correctly, but such colors may not be reproducible on physical devices or displays.

How does this converter handle the D65 illuminant?

Our converter uses the CIE standard D65 illuminant (daylight at 6500K) with white point coordinates X=95.047, Y=100.000, Z=108.883. This ensures compatibility with sRGB, most display systems, and international color management standards.

Is this LAB to XYZ converter suitable for professional use?

Yes, our converter implements the official CIE formulas with professional-grade precision. It's suitable for color management workflows, quality control, and research applications. However, for critical applications, always validate results with certified reference standards.

Can I integrate this conversion into my own software?

Absolutely! We provide complete code examples in Python and JavaScript that you can use in your own projects. The conversion algorithms are based on public CIE standards and can be freely implemented in commercial and open-source software.

Technical Notes

D65 Illuminant

This converter uses the D65 illuminant (daylight at 6500K) as the reference white point, which is the standard for sRGB and most modern display systems. The D65 white point coordinates are X=95.047, Y=100.000, Z=108.883.

Perceptual Uniformity

CIELAB is designed to be perceptually uniform, meaning that equal distances in the LAB color space correspond to equal perceived color differences. This makes it ideal for color difference calculations and color matching applications.

Precision Considerations

The conversion involves cube root and power operations that can introduce small numerical errors. For critical applications, consider using higher precision arithmetic or specialized color science libraries.