Apply a .cube LUT to a Photo
Grade a photo with a 1D or 3D .cube LUT, tetrahedral or trilinear, at any strength.
Try an example: Warm fade 3D LUT (generated by Lumina) on a landscape · 1D contrast LUT at 60 % strength, trilinear
How it works
Applies an Adobe/Resolve .cube LUT (1D, 3D or a 1D shaper plus 3D table, DOMAIN_MIN/MAX and LUT_*_INPUT_RANGE) to a PNG, JPEG or WebP image with tetrahedral or trilinear interpolation, mixed at the strength you choose. Reports the LUT type, size and how much the image changed.
- The .cube file is parsed per the Adobe Cube LUT Specification 1.0 (TITLE, LUT_1D_SIZE, LUT_3D_SIZE, DOMAIN_MIN/MAX, red index fastest); Resolve’s LUT_1D_INPUT_RANGE/LUT_3D_INPUT_RANGE are read too, and a file with both tables applies the 1D shaper first.
- Each pixel is un-premultiplied, encoded as sRGB (or kept linear), normalised to the LUT domain and looked up with tetrahedral interpolation (six tetrahedra per cube cell; exact on the grey axis) or trilinear interpolation, then mixed with the original by the strength.
- An identity LUT reproduces the image exactly; outside the domain values are clamped. This is the same engine as the LUT node in Lumina’s Compositor.
Sources
- Cube LUT Specification, version 1.0 (Adobe Systems)
- Kasson, Nin & Plouffe (1995): An analysis of selected computer interchange color spaces (tetrahedral interpolation) (ACM Transactions on Graphics)
Part of Lumina
-
Lumina Photo editor & image toolkit
Bring out what you saw. A free photo studio, right in your browser.
Related tools
- Node Compositor for Images and Short Clips – Run a node graph — keying, grading, LUTs, masks, merges — on images or a short clip.
- Photo Tone Curves & Profile Processor – Apply levels, RGB curves and white balance, or reuse a Lumina photo profile.
- Photo Histogram & Clipping Analyzer – Inspect RGB histograms, clipped channels and tonal percentiles in a photo.
How to use Apply a .cube LUT to a Photo
Grade a photo with a 1D or 3D .cube LUT, choose tetrahedral or trilinear interpolation and a strength, and check how much the image changed.
What it is for
A LUT (look-up table) stores a colour grade as numbers: for every input colour on a grid it lists the output colour. Colourists export them from DaVinci Resolve, Premiere or camera apps as .cube files, and the same file gives the same look on every photo. This tool applies such a file to a PNG, JPEG or WebP image.
It reads the Adobe Cube LUT format: 1D tables (one curve per channel), 3D tables (a full colour cube), and files with both, where the 1D table acts as a shaper before the cube. DOMAIN_MIN/DOMAIN_MAX and Resolve's input-range lines are honoured. You can upload the file or paste its text. It does not convert camera log footage on its own — use the LUT that matches how your image is encoded.
Worked example
The first example applies Lumina warm fade, a 3D LUT with a 9³ grid generated by Lumina, to a synthetic landscape at full strength with tetrahedral interpolation. The tool reports a 3D LUT, a mean change of 9.79 per colour channel (on the 0–255 scale) and a largest change of 20. The header table repeats the title, the grid size and the domain 0 0 0 to 1 1 1.
Running the same LUT at 50 % strength with trilinear interpolation halves the effect almost exactly: mean change 4.85, largest change 10. Strength mixes the graded and the original colour linearly, so it is the simplest way to tone a look down.
The second example is a 1D contrast curve with 9 entries at 60 % strength on a green-screen plate. The mean change is 4.8 and the largest 8: a 1D LUT bends each channel separately and cannot shift hues the way a 3D cube can.
How to read the result
- LUT type is 1D, 3D or "1D shaper + 3D"; LUT size is the number of 1D entries or the grid size of the cube. Common sizes are 17³, 33³ and 65³.
- Mean change tells you how strong the grade is overall; largest change shows whether some colours move a lot. A mean change of 0 means the LUT is an identity or does not fit the image.
- The graded image keeps the original transparency in PNG and WebP; JPEG is flattened on white.
Tips and common mistakes
- Match the encoding. Most photo and video LUTs expect sRGB or Rec. 709 encoded values — keep the default. Choose linear light only for LUTs built for linear data.
- Tetrahedral interpolation is smoother on neutral greys and is what most grading software uses; trilinear is the classic alternative and differs mainly on small grids.
- Small grids (9³ or 17³) are fine for gentle looks. Strong creative LUTs with sharp colour shifts need 33³ or more to avoid banding.
- Values outside the LUT's domain are clamped. A LUT made for log footage will look flat and washed out on a normal photo.
- Pasted text wins over an uploaded file when both are given.
FAQ
Does an identity LUT really leave the photo unchanged?
Yes. An identity cube maps every grid point to itself, and both interpolation methods reproduce it exactly, so the output pixels equal the input pixels.
Which LUT sizes are accepted?
1D tables from 2 to 65,536 entries and 3D cubes from 2³ to 129³, in files of up to 8 MB.
Can I use the LUT in a longer edit?
Yes. Lumina's Compositor has a LUT node with the same engine, and the lumina-compositor tool applies LUTs as part of a graph, also to short video clips.
Why does my LUT look different in another program?
Usually the input encoding differs (log versus Rec. 709) or the other program uses a different interpolation or ignores the shaper. Check which colour space the LUT was built for.
Guide last updated:
For scripts and AI agents
- JSON API:
POST https://luminalutapply.usefulweb.app/api/v1/calculate(same calculation as this page) - Interface description: OpenAPI 3.1 · AI guide: llms.txt
- MCP server (Streamable HTTP):
https://luminalutapply.usefulweb.app/mcp· tool namelumina_lut_apply
Example request
curl -s -X POST https://luminalutapply.usefulweb.app/api/v1/calculate \
-H 'content-type: application/json' \
-d '{…see OpenAPI examples…}'