How 3D LUTs actually work
A 3D LUT (look-up table) is the simplest powerful idea in colour: instead of describing a colour transform with formulas, just write down the answer for a grid of input colours and interpolate between them.
The lattice
Imagine RGB colour as a cube: red on one axis, green on another, blue on the third. A 33×33×33 LUT places a lattice of 35,937 sample points through that cube, and for each point stores the output colour the transform should produce. That's the entire file — 35,937 lines of three numbers.
Interpolation does the rest
Your actual pixel almost never lands exactly on a lattice point, so the editor finds the eight surrounding points and blends them — trilinear interpolation (fancier engines use tetrahedral). This is why LUT size matters: with a 17³ grid the points are twice as far apart, and sharp curve changes get smoothed over or, worse, band. 33³ is the standard compromise between fidelity and file size, and what most editors expect.
The .cube format
The most portable container is a plain text file: a TITLE, a
LUT_3D_SIZE, a domain declaration (usually 0–1), then the lattice values
with red varying fastest. Because it's display-referred (it maps display colours to display
colours), the same file works across video editors, compositors, encoders, and even streaming
tools.
Two properties that separate good LUTs from bad ones
- Monotonicity: along any axis, output values should never reverse direction. A non-monotonic LUT means two different exposures of the same thing can swap brightness order — visible as contouring and posterisation in gradients.
- Smoothness: neighbouring lattice points should change gradually. Overfitted LUTs (built from noisy data without regularisation) produce speckled, brittle results on images they weren't built from.
What LUTs can't do
A LUT maps colour to colour, one pixel at a time. It cannot sharpen, denoise, vignette, or treat the sky differently from the ground. If a look depends on where something is in the frame, that part needs masks — the LUT carries everything global.
Tonemara does all of this in your browser in one click: drop a reference
image and your own photo, preview the match free, and export a 33×33×33 .cube
LUT plus a Lightroom-compatible .xmp preset. Your images never leave your device.