
CLF (Common LUT Format) is a file format that allows color transformations using LUTs and mathematical operations to be described along with their processing order. Unlike traditional 3D LUTs, CLF can combine multiple processing steps into a single file, including preprocessing before applying a LUT and postprocessing afterward.
This article introduces CLF through four practical examples.
What can CLF describe?
LUT stands for Look-Up Table: a table that maps input values to output values. Despite its name, CLF supports more than 1D and 3D LUTs. It also supports matrix operations, ASC CDL, and operations such as Log and gamma functions. These processing elements are arranged in sequence in an XML text file to describe a color transform. [1]
CLF v3 was introduced with ACES 1.2 in 2020. Although it originated within ACES, its use is not limited to ACES pipelines. Before using CLF, it is important to verify that the software supports CLF v3. However, DaVinci Resolve 20, Baselight 6, and OCIO 2.0 and later already support it, indicating that CLF is entering a phase of widespread adoption.[2]
Example 1: Applying a show LUT to linear ACES images
Some show LUTs used to share a production’s look are designed for ACEScct input and output. Here, we apply such a LUT to ACES2065-1 images (AP0, scene-linear). In the diagrams, ACES2065-1 is abbreviated to “ACES AP0.”
The sequence is to convert ACES AP0 to ACEScct, apply the show LUT, and convert back to ACES AP0. CLF can package this preprocessing, LUT, and postprocessing in a single file.

Figure 1. Applying an ACEScct-to-ACEScct show LUT to ACES AP0 images. Cream rectangles indicate color spaces; blue-gray hexagons indicate processing steps.
ACEScct combines AP1 primaries with a Log-like encoding that includes a linear segment in the shadows. The conversions on either side of the LUT therefore include both encoding changes and the conversion between AP0 and AP1 primaries. [3]
Applying LUTs to linear images was possible before CLF but it’s not so easy and not so popular. The advantage of CLF is that the file can explicitly include the processing that prepares the input for the LUT. Values outside the LUT’s input range and any clipping still require separate consideration.
This example ends with a return to ACES AP0. An appropriate output transform is still needed for display.
Example 2: Describing an IDT without LUTs
An ACES IDT (Input Device Transform) converts camera Log signals into the common scene-linear color space ACES2065-1 (AP0). ACES-compatible software includes input transforms for many cameras, but a new or unsupported camera may require a custom transform.
A 3D LUT is one option. However, baking a transform into a LUT increases file size as the grid resolution grows and introduces interpolation error. An inverse transform from ACES AP0 back to camera Log cannot always be derived easily from the original LUT alone.
CLF can describe camera Log curves such as LogC4 using parameters for supported mathematical functions. For LogC4 / ARRI Wide Gamut 4 (AWG4), a Log operation decodes the signal to linear values, followed by a Matrix operation from AWG4 to ACES AP0. This avoids LUT interpolation error and keeps the file compact. [1] [7]

Figure 2. Decode LogC4 / AWG4 with a Log operation, then convert to ACES AP0 with a Matrix operation. Linear AWG4 denotes scene-linear values using AWG4 primaries.
The reverse transform can be described by applying the inverse matrix followed by linear-to-LogC4 encoding.
Open the Figure 2 example in CLF Builder
By clicking the Expand button in the upper-right corner, you can see that the IDT consists of two transformation steps: Log and Matrix.
Example 3: Using an ARRI Rec.709 LUT with Sony footage
This example applies an ARRI Rec.709 LUT designed for LogC4 / ARRI Wide Gamut 4 (AWG4) input to Sony S-Log3 / S-Gamut3.Cine footage.
First convert the footage to ACES AP0 by a forward IDT, then to LogC4 / AWG4 by an inverse IDT, before feeding it into the ARRI LUT. It is important to convert the input to the color space for which the LUT was originally designed before applying the LUT. [4]

Figure 3. Converting S-Log3 / S-Gamut3.Cine through ACES AP0 to LogC4 / AWG4 before applying an ARRI LUT. In the diagram, S-Log3 is paired with S-Gamut3.Cine, and LogC4 with AWG4. The sample LUT outputs Rec.709 / D65 / Gamma 2.4.
This allows the existing 3D LUT to be stored in a CLF together with the preceding transforms, without resampling and baking the pipeline into a new 3D LUT. You can apply ARRI LUT Look to your SONY Camera.
Example 4: Keeping camera-matching operations separate
A CMT (Camera Matching Transform) brings the color and tone of a secondary camera closer to those of the main camera. This example performs matrix correction, exposure adjustment, and white-balance adjustment in sequence on scene-linear ACES AP0 values.

Figure 4. Describing camera matching as separate matrix, exposure, and white-balance (WB) adjustments. Each operation works on scene-linear ACES AP0 values.
In this example, exposure and white balance are adjusted using ASC CDL Slope. Exposure uses the same multiplier for R, G, and B; white balance uses different multipliers for each channel. Both adjustments use Offset values of 0, Power and Saturation values of 1, and the FwdNoClamp style.
Keeping the operations separate makes their roles easier to inspect and allows them to be edited for a particular use. For example, you can easily keep only the Exposure parameter and apply only the exposure correction.
How CLF differs from .cube: preserving individual operations
A conventional 3D LUT records the result of a transform at grid points. CLF can instead retain matrix and Log transforms as mathematical operations, with LUTs placed between them. It can share multiple processing steps in one file while making their order and roles explicit. [1]
3D LUTs are generally designed to accept input values normalized to the 0–1 range. Although it is possible to design a .cube LUT that handles pixel values greater than 1, doing so can significantly reduce precision, so this approach is rarely used in practice. By using mathematical operations instead of LUTs, CLF can overcome these limitations, maintain precision, and explicitly describe the individual processing steps. [2]
The roles of AMF and CLF
AMF (ACES Metadata File) records the information needed to reproduce an ACES pipeline, including input, look, and output transforms. It can reference a CLF file containing the look’s color transform. AMF communicates the pipeline configuration, while CLF communicates the transform itself. [6]
When exporting an AMF from DaVinci Resolve, if color corrections are present, a corresponding CLF file is also exported alongside the AMF file. AMF supports only CLF for representing color corrections.
Try CLF Builder
PixCal Solutions provides CLF Builder, a free tool for assembling CLF files. Drag and drop transform components into a sequence to build a pipeline.
Experiment with presets or your own .cube files, then download the completed CLF. Start with the examples linked under each diagram and explore their input and output color spaces and processing order.
References
[1] ACES Documentation — CLF Specification
[2] ACES Documentation — CLF Implementation Guide
[3] ACES Documentation — ACEScct
[4] ARRI — LUT Generator / LogC4 LUT Package
[5] ARRI — How to create an ARRI Look File 4
