All posts
Guide2026/09/20

How to Create a LUT from a Reference Image

Learn how to choose a source and reference image, match their colors, refine the result, and export a reusable .cube LUT.

A reference image tells you where you want the colour to go. It does not tell you how it got there. This guide walks through the practical part: picking two images that can actually be matched, running the match, and turning the result into a .cube file you can reuse.

What the source and the reference each do

The source image is your footage. The engine measures its colours and proposes a transform that moves them.

The reference image is the target. The engine measures its colours too, and fits a single global colour map from the source's distribution onto the reference's distribution.

That is the whole idea. There is no object detection, no region selection and no copying of pixels from the reference. If your reference is a frame from a film you love, the result will be a reusable style, not a reconstruction of the grade that made that frame. A photograph has already thrown away the curve, the white balance, the second pass and the surrounding shots.

Choosing images that can be matched

Match quality depends far more on your choices than on the tool.

  • Similar lighting. A sunlit source matched against a low-key night reference will always be a compromise. Compare the two side by side before you generate anything.
  • Similar subject matter. Matching a skin-tone portrait against a landscape reference will fight itself, because most of the landscape pixels are foliage and sky, not skin.
  • Avoid extreme references. An almost-black or almost-white reference has almost no distribution to measure, and the match is skipped rather than guessed. You will see that the tool fell back to identity.
  • Watch the clipping. A reference with a blown sky or crushed shadows has lost information at both ends. The match cannot invent it back.

Running the match

Open the workbench, drop your image into Original image and pick a reference — either your own file or one from the reference gallery, which is the fastest way to see what the tool does with a known pair.

Press Generate LUT. The work runs locally in a Web Worker: the browser reads the colours, builds a 33-point table, writes it out as .cube text, parses that text back, and only then drives the preview. That round trip is deliberate — if a table cannot be read back, it is never shown to you as a working LUT.

Refining the result

You now have a global transform and five visible controls on top of it:

ControlWhat it doesRange
StrengthBlends the whole transform with identity. 0% is an exact identity LUT.0–100%
ExposureMultiplies linear light by a power of two.−1 to +1 EV
ContrastScales linear light around an 18% pivot.0.75× to 1.30×
SaturationScales linear light around Rec.709 luma.0 to 1.5×
TemperatureNormalised warm/cool channel gain. Not Kelvin.−0.25 to 0.25
TintNormalised green/magenta channel gain.−0.15 to 0.15

There are also shadow and highlight tints, which apply small per-channel offsets weighted by a continuous luminance function. The weighting is squared, so there is no hard band where one influence stops and the other starts.

Two things worth knowing:

  1. Everything you change is baked into the export. The downloaded .cube already contains your strength and your fine-tune values. Your editor does not need a second hidden intensity setting, and getting the same result does not depend on remembering to set one.
  2. Reset returns to the generated baseline, not to the original file. Your source and reference stay put.

Exporting and using it

Press Download .cube. You get a 33-point table by default; the advanced settings let you switch to 65 points, which re-samples the same continuous function onto a denser grid rather than stretching the 33-point table.

Set the colour space to match what you exported:

  • sRGB → sRGB for photos.
  • Rec.709 Gamma 2.4 for video that has already been normalised from a camera Log profile.

Then load the file in your editor. If it does not look the way the preview did, work through Why your LUT looks different in another app — it is almost always a colour-space or gamma mismatch rather than a broken file.