{"course":{"slug":"image-editing","title":"Editing an Image","url":"https://addaly.com/learn/image-editing","level":"beginner","track":"create"},"lesson":{"slug":"colour-grading-and-luts","title":"A look is a mapping, and a LUT is a table of it","url":"https://addaly.com/learn/image-editing/colour-grading-and-luts","position":37,"of":78,"minutes":9,"answer":"A grade is a mapping from input colour to output colour.","keyIdea":"A grade is a mapping from input colour to output colour, so a LUT applies it identically every time and therefore gives a different result on an image whose exposure and contrast were not normalised first."},"body":{"format":"markdown","text":"## Grading is not correction\n\nColour correction makes the picture neutral: white is white, skin is plausible, the cast is gone. **Grading** is what you do after that, deliberately moving the colour away from neutral for effect.\n\nThe order matters. Grade before you correct and you are building a look on top of an error, and it will not transfer to the next frame. Correct first, always, so you know where neutral is.\n\n## The three-way split\n\nThe classic grading control splits the tonal range into shadows, midtones and highlights and lets you push each one towards a hue. Photoshop's *Colour Balance* does it with three sets of sliders; Lightroom's *Colour Grading* panel and darktable's *colour balance RGB* do it with three colour wheels.\n\nThe move that underlies most cinematic grading is simple: **cool shadows, warm highlights**. Push the shadows towards blue-teal and the highlights towards orange-yellow. The reason it works is that skin is warm and most shadow is ambient skylight, which is blue, so the grade exaggerates a relationship the eye already expects, and it separates the subject from the background by hue as well as tone.\n\nThe inverse (warm shadows, cool highlights) reads as period, faded, or like an old print. Both are worth a few minutes of experiment.\n\nDoing the same thing with **Curves** gives more control: switch to the Blue channel, lift the bottom left corner slightly and drop the top right slightly, and you have exactly the teal-and-orange split with control over where it transitions. This is worth learning because it works in every tool including free ones.\n\n## What a LUT is\n\nA lookup table is exactly what the name says: a table saying, for a given input colour, what the output colour should be.\n\nA 3D LUT is a cube. A common size is 33×33×33, which is 35,937 entries covering the RGB space at intervals; colours between the entries are interpolated. A `.cube` file is a plain text file listing those entries, and you can open one in a text editor and read it.\n\n```\nTITLE \"teal and orange\"\nLUT_3D_SIZE 33\n0.000000 0.000000 0.000000\n0.031250 0.028000 0.040000\n...\n```\n\nBecause it is just a mapping, a LUT can encode anything a combination of curves, saturation moves and channel mixes can do; and it applies in one operation, identically, every time.\n\nApply one in Photoshop with a **Colour Lookup** adjustment layer. GIMP has *Colours > Map > Apply LUT* in recent versions and the GEGL operation behind it. darktable has a *LUT 3D* module. Krita, Resolve, Premiere, Kdenlive and Shotcut all load `.cube` files, which is why a look built for video can be used on stills.\n\n## Making your own\n\nThe useful workflow, and it takes ten minutes.\n\n1. Grade one representative image until you like it, using adjustment layers only.\n2. In Photoshop, *File > Export > Colour Lookup Tables*. It renders your whole adjustment stack into a `.cube`.\n3. That file now applies the same look to anything, in any application that reads LUTs, including free video editors.\n\nWithout Photoshop, the route is a **HALD image**: a small PNG containing every colour in the space laid out in a grid. Apply your edits to the HALD image in GIMP, and the modified HALD *is* a LUT. GIMP's G'MIC plugin and ImageMagick both convert between HALD PNGs and `.cube` files. This is how most free film-emulation LUT packs were built.\n\n## The limit that makes LUTs go wrong\n\nA LUT is a fixed mapping from input value to output value. It knows nothing about the photograph.\n\nThat means **two images at different exposures get different-looking results from the same LUT**, because their pixel values are different and the mapping is by value. A look built on a correctly exposed frame applied to one that is a stop darker will land on the wrong part of the curve and come out muddy or contrastless. This is the single commonest complaint about LUT packs and the answer is always the same: normalise exposure, contrast and white balance *first*, then apply the look.\n\nThe second limit is **clipping inside the LUT**. A strongly contrasty LUT can map several input values to the same output, destroying detail exactly as a hard curve does, and unlike a curve you cannot see the shape to know. Apply LUTs on an adjustment layer with opacity control, at 40 to 70 per cent, and check the histogram.\n\nThe third is **the input space**. A LUT built for log-encoded video footage applied to an ordinary sRGB photograph produces a wildly wrong result, because the mapping assumes an input distribution that is not there. Free LUT packs are often video LUTs; check what they were made for.\n\n## Film emulation\n\nA lot of free and paid LUTs claim to be Portra, Tri-X, Velvia or Kodachrome. What a LUT can reproduce is the colour mapping: the hue shifts, the contrast curve, the way a film rendered greens or skin.\n\nWhat it cannot reproduce: grain structure (which is spatial, not per-pixel), halation (light spreading inside the film base around highlights), the response to overexposure (film rolls off gently, digital clips hard), and the tonal response varying with exposure. Those are the parts that actually make film look like film.\n\nThe better free tools do model some of this. **RawTherapee's** film simulation uses HaldCLUTs; darktable has a *sigmoid* and *filmic rgb* module that models the highlight roll-off properly, which is the single most film-like thing you can do to a digital file, and it is not a LUT at all: it is a tone mapping curve with shoulder and toe controls.\n\nA look built from your own decisions on your own photographs will serve you better than a pack of 300 named presets. Build three: one neutral, one warm, one cool. Use them for a year. That is a style, and a pack is not."},"check":{"question":"A photographer applies the same purchased LUT to two frames from one shoot. On the correctly exposed frame it looks good; on a frame a stop darker it comes out muddy and flat. Why?","options":[{"text":"The LUT is a fixed mapping by pixel value, so a darker frame's values land on a different part of the table than the look was designed around.","correct":true},{"text":"LUTs are applied before the exposure adjustment in the processing pipeline, so the exposure correction is being undone.","correct":false,"tempting":"Invents a fixed pipeline position: the application order is under the editor's control, and the mismatch persists however the two operations are sequenced if exposure is not normalised first."},{"text":"The LUT's interpolation between table entries is less accurate at low values, so dark frames receive a cruder approximation.","correct":false,"tempting":"Cites a real property of interpolation whose error is far too small to explain a visible difference in look between two frames."},{"text":"The darker frame has more noise, and the LUT amplifies noise, which reads as muddiness.","correct":false,"tempting":"Identifies a genuine secondary effect of grading an underexposed file while missing the primary cause, which would produce the same flat result on a clean, noise-free dark frame."}]},"prev":{"slug":"black-and-white-properly","title":"Monochrome is a decision about which colours become which greys","url":"https://addaly.com/learn/image-editing/black-and-white-properly"},"next":{"slug":"skin-tones-honestly","title":"There is no correct number for skin","url":"https://addaly.com/learn/image-editing/skin-tones-honestly"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'A look is a mapping, and a LUT is a table of it', in Editing an Image. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/image-editing/colour-grading-and-luts (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"A look is a mapping, and a LUT is a table of it","courseTitle":"Editing an Image","module":{"index":4,"slug":"tone-and-colour","title":"Tone and colour"},"answer":null,"keyIdea":"A grade is a mapping from input colour to output colour, so a LUT applies it identically every time and therefore gives a different result on an image whose exposure and contrast were not normalised first.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"grading-is-not-correction","runs":[{"text":"Grading is not correction"}]},{"t":"p","runs":[{"text":"Colour correction makes the picture neutral: white is white, skin is plausible, the cast is gone. "},{"text":"Grading","b":true},{"text":" is what you do after that, deliberately moving the colour away from neutral for effect."}]},{"t":"p","runs":[{"text":"The order matters. Grade before you correct and you are building a look on top of an error, and it will not transfer to the next frame. Correct first, always, so you know where neutral is."}]},{"t":"h2","id":"the-three-way-split","runs":[{"text":"The three-way split"}]},{"t":"p","runs":[{"text":"The classic grading control splits the tonal range into shadows, midtones and highlights and lets you push each one towards a hue. Photoshop’s "},{"text":"Colour Balance","i":true},{"text":" does it with three sets of sliders; Lightroom’s "},{"text":"Colour Grading","i":true},{"text":" panel and darktable’s "},{"text":"colour balance RGB","i":true},{"text":" do it with three colour wheels."}]},{"t":"p","runs":[{"text":"The move that underlies most cinematic grading is simple: "},{"text":"cool shadows, warm highlights","b":true},{"text":". Push the shadows towards blue-teal and the highlights towards orange-yellow. The reason it works is that skin is warm and most shadow is ambient skylight, which is blue, so the grade exaggerates a relationship the eye already expects, and it separates the subject from the background by hue as well as tone."}]},{"t":"p","runs":[{"text":"The inverse (warm shadows, cool highlights) reads as period, faded, or like an old print. Both are worth a few minutes of experiment."}]},{"t":"p","runs":[{"text":"Doing the same thing with "},{"text":"Curves","b":true},{"text":" gives more control: switch to the Blue channel, lift the bottom left corner slightly and drop the top right slightly, and you have exactly the teal-and-orange split with control over where it transitions. This is worth learning because it works in every tool including free ones."}]},{"t":"h2","id":"what-a-lut-is","runs":[{"text":"What a LUT is"}]},{"t":"p","runs":[{"text":"A lookup table is exactly what the name says: a table saying, for a given input colour, what the output colour should be."}]},{"t":"p","runs":[{"text":"A 3D LUT is a cube. A common size is 33×33×33, which is 35,937 entries covering the RGB space at intervals; colours between the entries are interpolated. A "},{"text":".cube","code":true},{"text":" file is a plain text file listing those entries, and you can open one in a text editor and read it."}]},{"t":"code","lang":"","label":"Text","text":"TITLE \"teal and orange\"\nLUT_3D_SIZE 33\n0.000000 0.000000 0.000000\n0.031250 0.028000 0.040000\n..."},{"t":"p","runs":[{"text":"Because it is just a mapping, a LUT can encode anything a combination of curves, saturation moves and channel mixes can do; and it applies in one operation, identically, every time."}]},{"t":"p","runs":[{"text":"Apply one in Photoshop with a "},{"text":"Colour Lookup","b":true},{"text":" adjustment layer. GIMP has "},{"text":"Colours > Map > Apply LUT","i":true},{"text":" in recent versions and the GEGL operation behind it. darktable has a "},{"text":"LUT 3D","i":true},{"text":" module. Krita, Resolve, Premiere, Kdenlive and Shotcut all load "},{"text":".cube","code":true},{"text":" files, which is why a look built for video can be used on stills."}]},{"t":"h2","id":"making-your-own","runs":[{"text":"Making your own"}]},{"t":"p","runs":[{"text":"The useful workflow, and it takes ten minutes."}]},{"t":"ol","start":1,"items":[[{"text":"Grade one representative image until you like it, using adjustment layers only."}],[{"text":"In Photoshop, "},{"text":"File > Export > Colour Lookup Tables","i":true},{"text":". It renders your whole adjustment stack into a "},{"text":".cube","code":true},{"text":"."}],[{"text":"That file now applies the same look to anything, in any application that reads LUTs, including free video editors."}]]},{"t":"p","runs":[{"text":"Without Photoshop, the route is a "},{"text":"HALD image","b":true},{"text":": a small PNG containing every colour in the space laid out in a grid. Apply your edits to the HALD image in GIMP, and the modified HALD "},{"text":"is","i":true},{"text":" a LUT. GIMP’s G’MIC plugin and ImageMagick both convert between HALD PNGs and "},{"text":".cube","code":true},{"text":" files. This is how most free film-emulation LUT packs were built."}]},{"t":"h2","id":"the-limit-that-makes-luts-go-wrong","runs":[{"text":"The limit that makes LUTs go wrong"}],"role":"limit"},{"t":"p","runs":[{"text":"A LUT is a fixed mapping from input value to output value. It knows nothing about the photograph."}]},{"t":"p","runs":[{"text":"That means "},{"text":"two images at different exposures get different-looking results from the same LUT","b":true},{"text":", because their pixel values are different and the mapping is by value. A look built on a correctly exposed frame applied to one that is a stop darker will land on the wrong part of the curve and come out muddy or contrastless. This is the single commonest complaint about LUT packs and the answer is always the same: normalise exposure, contrast and white balance "},{"text":"first","i":true},{"text":", then apply the look."}]},{"t":"p","runs":[{"text":"The second limit is "},{"text":"clipping inside the LUT","b":true},{"text":". A strongly contrasty LUT can map several input values to the same output, destroying detail exactly as a hard curve does, and unlike a curve you cannot see the shape to know. Apply LUTs on an adjustment layer with opacity control, at 40 to 70 per cent, and check the histogram."}]},{"t":"p","runs":[{"text":"The third is "},{"text":"the input space","b":true},{"text":". A LUT built for log-encoded video footage applied to an ordinary sRGB photograph produces a wildly wrong result, because the mapping assumes an input distribution that is not there. Free LUT packs are often video LUTs; check what they were made for."}]},{"t":"h2","id":"film-emulation","runs":[{"text":"Film emulation"}]},{"t":"p","runs":[{"text":"A lot of free and paid LUTs claim to be Portra, Tri-X, Velvia or Kodachrome. What a LUT can reproduce is the colour mapping: the hue shifts, the contrast curve, the way a film rendered greens or skin."}]},{"t":"p","runs":[{"text":"What it cannot reproduce: grain structure (which is spatial, not per-pixel), halation (light spreading inside the film base around highlights), the response to overexposure (film rolls off gently, digital clips hard), and the tonal response varying with exposure. Those are the parts that actually make film look like film."}]},{"t":"p","runs":[{"text":"The better free tools do model some of this. "},{"text":"RawTherapee’s","b":true},{"text":" film simulation uses HaldCLUTs; darktable has a "},{"text":"sigmoid","i":true},{"text":" and "},{"text":"filmic rgb","i":true},{"text":" module that models the highlight roll-off properly, which is the single most film-like thing you can do to a digital file, and it is not a LUT at all: it is a tone mapping curve with shoulder and toe controls."}]},{"t":"p","runs":[{"text":"A look built from your own decisions on your own photographs will serve you better than a pack of 300 named presets. Build three: one neutral, one warm, one cool. Use them for a year. That is a style, and a pack is not."}]}],"check":{"question":[{"text":"A photographer applies the same purchased LUT to two frames from one shoot. On the correctly exposed frame it looks good; on a frame a stop darker it comes out muddy and flat. Why?"}],"options":[{"text":[{"text":"The LUT is a fixed mapping by pixel value, so a darker frame’s values land on a different part of the table than the look was designed around."}],"correct":true,"tempting":null},{"text":[{"text":"LUTs are applied before the exposure adjustment in the processing pipeline, so the exposure correction is being undone."}],"correct":false,"tempting":[{"text":"Invents a fixed pipeline position: the application order is under the editor’s control, and the mismatch persists however the two operations are sequenced if exposure is not normalised first."}]},{"text":[{"text":"The LUT’s interpolation between table entries is less accurate at low values, so dark frames receive a cruder approximation."}],"correct":false,"tempting":[{"text":"Cites a real property of interpolation whose error is far too small to explain a visible difference in look between two frames."}]},{"text":[{"text":"The darker frame has more noise, and the LUT amplifies noise, which reads as muddiness."}],"correct":false,"tempting":[{"text":"Identifies a genuine secondary effect of grading an underexposed file while missing the primary cause, which would produce the same flat result on a clean, noise-free dark frame."}]}],"order":[2,0,3,1],"why":null},"prev":{"slug":"black-and-white-properly","title":"Monochrome is a decision about which colours become which greys","minutes":9},"next":{"slug":"skin-tones-honestly","title":"There is no correct number for skin","minutes":10}}}