Save LUT (.cube)
Export a ComfyUI-built color grade to a standard .cube file
- lut
- lut
Once you've built or blended a look with WAS Load LUT or WAS LUT Blender, this is how you get it out of the ComfyUI graph and into a file you can actually reuse - a standard .cube LUT that opens in DaVinci Resolve, Premiere, or gets loaded straight back into a future ComfyUI run.
How it works
It takes a lut, resamples it to output_size before writing (17/33/65-point sizes are the norm most grading tools already expect, and match what WAS Load LUT's builtin_size uses), and writes it out as filename.cube - appending the extension automatically if you leave it off. overwrite (on by default) controls whether re-running the node with the same filename replaces the existing file or not. It also passes the same lut straight through as an output, so you can save a checkpoint of your grade mid-graph and keep working with it further downstream without a separate branch.
The inputs and outputs that matter
lut(LUT, required) - "the LUT to save as a.cubefile," per its own tooltip. This has to come from something upstream that produces aLUT, like WAS Load LUT.filename(defaultCustomLUT) - the base name;.cubegets appended if missing.output_size(default 33, range 17–65) - the dimension it resamples the LUT to before saving. Lower is a smaller file with coarser gradations; higher is closer to what you built it at.overwrite(defaulttrue) - allow clobbering an existing file with the same name.
Output: lut - a passthrough of the same LUT you fed in, so saving doesn't dead-end the graph.
How to install it
Via ComfyUI Manager: search WAS_Extras, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/WAS_Extras
Restart ComfyUI. No extra dependencies, no model downloads.
Common issues & troubleshooting
Can't find the exported file. The pack's README doesn't spell out an exact save directory for this specific node. Since WAS Load LUT reads custom .cube files back from ComfyUI/models/LUT, that's the first place to check. Failing that, look at the console output from the ComfyUI run that saved it - file-writing nodes generally print the full path they wrote to.
Re-ran the node and the file didn't update. If overwrite is off, that's expected - it's refusing to clobber an existing file with the same name. Flip it on, or change filename, if you actually want the new version to land.
Grade looks coarser after a round trip. If you exported at a low output_size (say 17) and then reloaded it expecting the same fidelity as the 33-point LUT you built, you threw away resolution on purpose at export time. Bump output_size up before saving if you plan to reuse it.
Nothing visibly changed in your image. This node only writes a file - it doesn't apply the LUT to anything. You still need WAS Apply LUT somewhere in the graph if you want to actually see the grade on pixels, not just have it saved to disk.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| lut | LUT | The table to write, from Load LUT or LUT Blender. A table stored as curves is converted to a cube first, since .cube files hold cubes. | |
| filename | STRING | CustomLUT | Name of the file to write, such as 'WarmFilm'. The .cube extension is added when it is missing. This is a name, not a path: it may name a subfolder, but it cannot step outside the luts directory. |
| output_size | INT | 3317–65 | Edge length of the cube written to the file, in samples. 33 is the industry-standard size and is what most grading tools expect; 65 is finer and produces a file eight times the size. |
| overwrite | BOOLEAN | true | Whether an existing file of the same name may be replaced. Turn it off to have the node stop rather than overwrite a look already saved under that name. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| lut | LUT | The table as it was written, resampled to output_size, so the downstream grade matches the file exactly. |