What it is
A LUT, or lookup table, is a compressed representation of a complex color‑grading transformation that maps every possible input pixel value to an output value. The Custom LUT Generator lets videographers create such files instantly in the browser by specifying high‑level grading parameters—exposure, contrast and gamma—alongside the input domain and desired LUT size.
Internally it normalises each raw pixel value to a [0‑1] range tailored to the chosen domain. Using a simple linear stretch for contrast around the mid‑tone (0.5) it then scales brightness by converting exposure stops into a multiplicative factor of 2^stops. Finally it applies a gamma exponent, allowing subtle non‑linear tone curves without hand‑editing a massive table.
The resulting .cube file can be dropped straight into editing suites such as DaVinci Resolve, Adobe Premiere or the free Blackmagic Fusion, ensuring color consistency across all projects with minimal effort.
How to use it
First pick your desired LUT size – 33 for efficient files, 64 or 128 for more precision. Set domain‑minimum and ‑maximum to match the light range you want affected by the grading (0–1 covers full linear). Then adjust exposure in stop units; a value of +1 doubles brightness, –1 halves it.
Use contrast from –1 (soft) to +1 (harsh); negative pushes tones toward grey while positive drives blacks darker and whites brighter. Gamma <1 slightly lights the mid‑tones, gamma >1 deepens shadows. After entering all fields, the tool instantly shows the centre LUT value; clicking “Download” spawns a .cube blob that can be imported into your editor.
Because the page runs entirely client–side, no data exits your machine and no subscription is required, making it ideal for quick iteration or batch‑grading workflows.
worked_example:{"inputs":{"exposure":0,"contrast":0,"gamma":1,"lut-size":33,"domain-min":0,"domain-max":1},"expected":{"center-value":0.5},"narrative":"We choose a LUT size of 33, so the indices range from 0 to 32. The centre index is floor((32)/2)=16.
Raw value for this index: raw = 16/32 = 0.50000.
Map into domain; with domain‑min = 0 and domain‑max = 1, normalized r stays 0.50000.
Contrast factor cf = 2×0 + 1 = 1. Applying contrast: ((0.5 – 0.5) × 1) + 0.5 = 0.50000. Exposure multiplier expMul = 2^0 = 1, so r remains 0.50000. Gamma exponent of 1 gives the final value r^1 = 0.50000. Hence the centre‑value output is 0.500, matching the test case expectation."} ,"faq":[{"q":"Can I batch generate multiple LUTs with different settings?","a":"While each page load generates one LUT, you can simply copy the URL, modify query parameters for exposure/contrast/gamma, and reload to create a new cube without re‑ingesting files. No server side state is kept."},{"q":"Is the generated file compatible with all editors?","a":"The output follows the standard '.cube' format: a header followed by X^3 RGB triplets. Editors like DaVinci Resolve, Premiere Pro, After Effects and Fusion all accept it without extra conversion steps."},{"q":"Will the tool work on my mobile phone?","a":"Yes; because everything runs client‑side in JavaScript, any modern touch‑enabled browser can generate small LUTs quickly even while editing on the go. Large sizes (128) may be less efficient on low‑power devices."}]} }
Worked example
We choose a LUT size of 33, so the indices range from 0 to 32. The centre index is floor((32)/2)=16.
Raw value for this index: raw = 16/32 = 0.50000.
Map into domain; with domain‑min = 0 and domain‑max = 1, normalized r stays 0.50000.
Contrast factor cf = 2×0 + 1 = 1. Applying contrast: ((0.5 – 0.5) × 1) + 0.5 = 0.50000. Exposure multiplier expMul = 2^0 = 1, so r remains 0.50000. Gamma exponent of 1 gives the final value r^1 = 0.50000. Hence the centre‑value output is 0.500, matching the test case expectation.
Inputs
- Exposure (stops): 0
- Contrast: 0
- Gamma: 1
- LUT size: 33
- Domain minimum: 0
- Domain maximum: 1
Result
- Center value after adjustments: 0.5
Frequently asked questions
Can I batch generate multiple LUTs with different settings?
While each page load generates one LUT, you can simply copy the URL, modify query parameters for exposure/contrast/gamma, and reload to create a new cube without re‑ingesting files. No server side state is kept.
Is the generated file compatible with all editors?
The output follows the standard '.cube' format: a header followed by X^3 RGB triplets. Editors like DaVinci Resolve, Premiere Pro, After Effects and Fusion all accept it without extra conversion steps.
Will the tool work on my mobile phone?
Yes; because everything runs client‑side in JavaScript, any modern touch‑enabled browser can generate small LUTs quickly even while editing on the go. Large sizes (128) may be less efficient on low‑power devices.