LUT Batch Photo

Apply a .cube or .3dl LUT color preset to multiple photos at once — free, runs entirely in your browser, nothing uploaded.

🎞
Click to browse or drag & drop a .cube or .3dl file
🖼
Click or drag photos here
JPEG & PNG supported · Max 40 files · Processed locally
100%

0% = original image, 100% = full LUT applied. Values in between blend proportionally.

Processing…

How it works

  1. Parse the LUT. Your .cube or .3dl file is read in the browser. The tool extracts the 3D LUT size and all RGB triplets into a typed array — nothing leaves your device.
  2. Decode each photo. Each JPEG or PNG is drawn onto an off-screen HTML5 Canvas so pixel data is accessible via getImageData().
  3. Apply trilinear interpolation. For every pixel, its normalised (r,g,b) values are looked up in the 3D LUT using trilinear interpolation — the same algorithm used by professional grading software. This maps input colours accurately through the LUT's colour transform.
  4. Blend with intensity. The graded colour is linearly mixed with the original at your chosen intensity percentage: out = orig × (1 − t) + lut × t, where t = intensity / 100.
  5. Pack & download. All processed images are encoded as JPEG (quality 0.93) and bundled into a ZIP file using JSZip, preserving your original file names. One click downloads everything.

Frequently asked questions

What is a LUT and why would I use one?
A LUT (Look-Up Table) is a colour transform stored as a 3D grid of RGB values. Photographers and filmmakers use them to apply consistent colour grades — cinematic looks, film emulation, mood correction — across many images at once. Instead of tweaking each photo individually, you create or download a single .cube file and apply it to your entire shoot in seconds.
What is trilinear interpolation and why does it matter?
A typical .cube LUT stores a grid of, say, 33×33×33 colour entries. Most pixel colours fall between grid points. Trilinear interpolation blends the eight surrounding grid corners to estimate the exact colour at any in-between point, giving smooth, accurate results that match what professional software (DaVinci Resolve, Premiere, Lightroom) would produce.
What .cube sizes are supported?
Any standard 3D .cube file (LUT_3D_SIZE 2–64 is typical; 17, 33, and 65 are most common). 1D LUTs (LUT_1D_SIZE) are not supported. Both .cube and .3dl (integer input/output format with MESH keyword) are accepted. If your .3dl file uses a non-standard layout, try converting it to .cube first with a free tool like Resolve's LUT editor.
Is my data private? Are photos sent to a server?
Yes, fully private. The entire pipeline — LUT parsing, image decoding, colour transform, ZIP creation — runs locally in your browser using standard Web APIs (Canvas, FileReader, JSZip). No pixel is ever uploaded or transmitted over the network.
Can I use a partial strength LUT for a subtle look?
Yes. The intensity slider lets you blend from 0% (untouched original) to 100% (full LUT). At 50% each output pixel is the average of the original and the fully-graded colour. This is equivalent to the "opacity" parameter in Lightroom's LUT profiles or the "Key Output Gain" in DaVinci Resolve.