# Lightroom preset to LUT: convert one with a HALD image

> How to convert a Lightroom preset to a LUT: grade a HALD identity image with the preset, export it, and turn it into a .cube that works on photos and video.

Canonical: https://batchtone.com/blog/lightroom-preset-to-lut

15 October 2026 · 6 min read

Lightroom cannot export a LUT, but you can capture a preset as one. Generate a HALD identity image, apply the preset to it in Lightroom, export it as a 16-bit TIFF, then convert that image into a .cube file. The LUT reproduces the preset's global colour and tone, and works in video editors. Local and texture settings do not carry over.

A preset is a list of slider values that only Lightroom understands. A LUT is a colour transform any app can read. To turn one into the other, you let Lightroom apply the preset to an image that contains every colour, then read the result back as a table.

## Why can't Lightroom export a LUT directly?

Because a preset is not a transform. It stores settings such as Exposure +0.3 or Clarity +20, and Lightroom recalculates the picture from them every time. Some of those settings depend on the photo itself, so the same preset does slightly different things to different images. A LUT can only describe the part of a preset that maps one colour to another colour, the same way on every pixel.

That part is usually most of a look: tone curve, white balance shift, HSL, colour grading wheels, calibration and the base profile's colour. [How to create a LUT](https://batchtone.com/blog/how-to-make-a-lut) covers the general idea, and its short Lightroom section mentions an approximate route through Photoshop. The HALD method below is more exact.

## What is a HALD image?

A test image that contains a grid of every colour a LUT needs to sample, arranged in a fixed order. Run it through any colour change and the output image is, pixel for pixel, a lookup table for that change. A level 8 HALD is 512 by 512 pixels and becomes a 64-point LUT, which is more than precise enough. [What a LUT is](https://batchtone.com/blog/what-is-a-lut) explains what the points in a LUT are.

## What do you need before you start?

- **Lightroom Classic** and the preset.
- **ffmpeg**, to generate the HALD image and read it back. On a Mac, `brew install ffmpeg` installs it. [Applying a LUT with ffmpeg](https://batchtone.com/blog/ffmpeg-lut) has more on what it does.
- **Python 3**, for a ten-line conversion script. It runs in Terminal with no extra packages.

## How do you convert a Lightroom preset to a LUT?

### 1. Generate the identity image

In Terminal, in an empty folder:

```
<code>ffmpeg -f lavfi -i "haldclutsrc=level=8,format=rgb48" -frames:v 1 hald-identity.tif</code>
```

That writes a 16-bit TIFF that changes nothing yet. Keep a copy, since you can reuse it for every preset.

### 2. Apply the preset in Lightroom

Import `hald-identity.tif` into Lightroom Classic and apply the preset in the Develop module. Then switch off everything that is not a pure colour change:

- Texture, Clarity and Dehaze
- Sharpening and Noise Reduction
- Vignette and Grain
- Lens corrections, crop and transform
- Any masks or local adjustments
- Any Auto setting

These either look at neighbouring pixels or depend on the image content, and on a HALD image they scramble the table. Leave the tone curve, HSL, colour grading, white balance and calibration as the preset set them.

### 3. Export as a 16-bit TIFF

Export with these settings: format **TIFF**, compression **None**, colour space **sRGB**, bit depth **16 bits/component**, resizing off, output sharpening off, no watermark. Name it `hald-graded.tif`. The file must still be exactly 512 by 512 pixels.

### 4. Turn the image into a .cube

Save this as `hald_to_cube.py` in the same folder:

```
<code>import struct, sys

src, dst = sys.argv[1], sys.argv[2]
data = open(src, "rb").read()
pixels = len(data) // 6
size = round(pixels ** (1 / 3))
if size ** 3 != pixels:
    sys.exit("Not a HALD image: the pixel count is not a cube.")

with open(dst, "w") as out:
    out.write(f"LUT_3D_SIZE {size}\n")
    for i in range(pixels):
        r, g, b = struct.unpack_from("<3H", data, i * 6)
        out.write(f"{r / 65535:.6f} {g / 65535:.6f} {b / 65535:.6f}\n")</code>
```

Then run:

```
<code>ffmpeg -i hald-graded.tif -f rawvideo -pix_fmt rgb48le hald.rgb
python3 hald_to_cube.py hald.rgb my-preset.cube</code>
```

The first line unpacks the image into raw 16-bit pixels. The script writes them out in the order a `.cube` expects, which is the same order the HALD image stores them in.

### 5. Test it

Apply the new LUT to an ordinary photo and compare it with the same photo and the preset in Lightroom:

```
<code>ffmpeg -i test.jpg -vf "lut3d=file=my-preset.cube" -q:v 2 test-lut.jpg</code>
```

Colour and tone should match closely. Texture and grain will not, because they were switched off on purpose.

## What carries over, and what doesn't?

| Preset setting | In the LUT | Why |
|---|---|---|
| Tone curve, contrast, highlights and shadows sliders | Mostly | Global tone; the sliders adapt slightly to each photo |
| White balance shift | Yes | A global colour change |
| HSL and colour grading | Yes | Global colour changes |
| Calibration and profile colour | Yes, as rendered on the TIFF | Part of the colour pipeline |
| Clarity, Texture, Dehaze | No | They depend on neighbouring pixels |
| Sharpening, noise reduction, grain, vignette | No | Spatial effects, not colour |
| Masks and local adjustments | No | A LUT has no idea where a pixel is |

## What goes wrong most often?

- **The LUT looks different from the preset on raw files.** Lightroom renders a TIFF differently from a raw file, and a preset that sets a raw profile changes nothing on a TIFF. Apply the preset to a JPEG and compare against that, not against a raw.
- **The look is far too strong on video.** The LUT expects footage in normal contrast. Convert log footage to Rec.709 first; [log footage explained](https://batchtone.com/blog/log-footage) covers why.
- **The script says it is not a HALD image.** The export was resized or cropped. Export again with resizing off.
- **Odd colour blotches in the LUT.** Clarity, Dehaze or an Auto setting stayed on. Switch them off and export again.

## What can you do with the LUT?

Use the same look on video, in any editor that reads a `.cube`: Resolve, Premiere, Final Cut, CapCut and the rest. [How to install LUTs](https://batchtone.com/blog/how-to-install-luts) covers each one. You can also bring it back into Lightroom as a profile with its own Amount slider, which [using LUTs in Lightroom](https://batchtone.com/blog/lightroom-luts) walks through, or hand it to a client who does not use Lightroom at all. If your presets came from a free pack, [free Lightroom presets](https://batchtone.com/blog/free-lightroom-presets) covers which ones are worth keeping.

Or apply it to a whole shoot. BatchTone reads the `.cube` as it is and applies it to a folder of photos and video clips together, with a strength slider on every file for the frames the look does not suit. A frame from each file is previewed before export, EXIF from JPEG originals is kept, the audio on clips is copied untouched, and the originals are never touched. It does not develop raw files, so export JPEGs from Lightroom first. It runs on macOS 12 or later on Apple Silicon. [Batch applying a LUT to photos](https://batchtone.com/batch-lut-photos) shows what it reads and writes, and the [seven-day trial](https://batchtone.com/download) has everything unlocked.

## Common questions

### Is there a Lightroom plugin or app that does this?

Third-party converters exist, and most use the same HALD method underneath. The manual route above takes a few minutes, costs nothing and shows you exactly which settings went into the LUT.

### What LUT size does this produce?

A level 8 HALD gives a 64-point LUT, larger than the common 33-point size. If an app refuses it, generate the HALD at a lower level or resample the LUT, though most modern apps read 64-point files.

### Can I convert a Lightroom mobile preset the same way?

Only on a computer. The HALD image has to be graded and exported as an uncompressed 16-bit TIFF at its exact size, so get the preset into Lightroom Classic first and do the conversion there.

### Will the LUT match the preset exactly?

Close, not exact. Settings that adapt to each photo, such as Highlights and Shadows, are captured as they behaved on the HALD image. On most photos the difference is small; on extreme exposures it shows more.

**About this article.** Written by the team that builds BatchTone, a macOS app that applies .cube LUTs to whole folders of photos and video. Spotted something wrong or out of date? Write to [support@batchtone.com](mailto:support@batchtone.com).

## Read next

How-to 9 October 2026 · 6 min read

## [How to use LUTs in Lightroom: turn a .cube into a profile](https://batchtone.com/blog/lightroom-luts)

Lightroom cannot open a .cube file directly. To use a LUT in Lightroom, open a photo in Photoshop's Camera Raw, Option-click the Create Preset button to get Create Profile, load the .cube under Color Lookup Table and save. The LUT then appears as a profile in Lightroom's Profile browser, with an Amount slider for strength.

[Read it](https://batchtone.com/blog/lightroom-luts)

How-to 28 September 2026 · 6 min read

## [How to create a LUT: four ways, and which to use](https://batchtone.com/blog/how-to-make-a-lut)

The reliable way to create a LUT is to grade one representative clip until it looks right, then export that grade as a .cube file. Resolve does this with Generate LUT on a node, Premiere through Export Color Look, and Photoshop through Export Color Lookup Tables. Grade on neutral, correctly exposed footage and put the creative work on its own node, because a LUT bakes in everything upstream of it, including exposure mistakes you did not mean to share.

[Read it](https://batchtone.com/blog/how-to-make-a-lut)

Workflow 20 September 2026 · 4 min read

## [Free Lightroom presets: where the usable ones are](https://batchtone.com/blog/free-lightroom-presets)

Adobe's own bundled profiles and the packs from camera manufacturers are the most reliable free starting points, followed by presets from photographers who show them applied to varied images rather than one hero shot. Almost every free pack is a mailing-list lead magnet, which is fine. The problem is not the price: it is that a preset encodes the light it was built in and yours is different.

[Read it](https://batchtone.com/blog/free-lightroom-presets)

## One look. A whole shoot.

BatchTone applies your .cube LUTs across photos and video at once, with a strength dial on every file. Seven-day trial, everything unlocked.

[Download for macOS](https://apps.apple.com/app/batchtone/id6821727167)
