Free Online CIELAB to CIE XYZ Color Space Conversion Tool
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.
Input your CIELAB color values (L*, a*, b*) in the converter above
Get immediate XYZ tristimulus values using D65 illuminant standard
Apply the XYZ values in your color management or device calibration workflow
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.
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.
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.
// 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
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
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)
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)
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)
Roughly corresponds to red sensitivity, typically 0-95
Brightness component, matches L* relationship, 0-100
Roughly corresponds to blue sensitivity, typically 0-109
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})")
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)})`);
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.
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.
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.
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.
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.
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.
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.
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.
Convert CIE XYZ colors to CIELAB color space with precise mathematical formulas.
Transform CIE XYZ colors to RGB with sRGB color space conversion and gamma correction.
Convert RGB colors to CIELAB color space for perceptual color analysis and processing.