Colorspace Convert (OIIO)
Your ComfyUI Frames Aren't Wrong — They're in the Wrong Colorspace
- image
- IMAGE
If you've ever dropped a ComfyUI render into Nuke or DaVinci Resolve and it came out washed out, doubled-up, or just "off" next to your plate, this is the node that was missing. It's not a filter - it's the bridge between the colorspace ComfyUI works in and the one your compositing pipeline expects. Think of it as the color-management translator that stock ComfyUI never shipped.
Colorspace Convert (OIIO) takes a normal IMAGE tensor, converts it from one named colorspace to another, and hands you back a normal IMAGE tensor. The heavy lifting happens in OpenImageIO's ImageBufAlgo.colorconvert, which uses OpenColorIO under the hood - the same color-management library the film/VFX industry builds its pipelines on. The dropdown's 36+ options come from your OCIO config at startup: scene_linear, lin_srgb, lin_rec709, Rec709, sRGB, linear, ACEScg, AdobeRGB, KodakLog, and a set of gamma flavors like g22_rec709 and Gamma2.4.
Why you actually care
ComfyUI does all its math on sRGB-encoded values in the 0–1 range. That's fine for generating and for PNG delivery, but it's a lie from a compositing standpoint: sRGB is a display-encoded space, not a linear one. If you feed sRGB values straight into a Nuke comp that expects scene-linear, you get double-gamma artifacts - the technical term for "why does my AI render look radioactive next to the footage." This node fixes that handoff: convert sRGB → scene_linear before you save your frames for comp, and scene_linear → sRGB when you load linear EXR plates back in. One node in the path, and the mismatch disappears.
The author, Mel Massadian (melMass), is the same person behind the MTB node pack (comfy_mtb) and built this suite as a companion to his ComfyUI-for-Nuke work. It shows - the colorspace list and the OIIO machinery are straight out of a compositing workstation, not a hobbyist's toolbox.
The inputs that matter
Only three, and only two of them are for you:
image- theIMAGEtensor to convert.input_colorspace- what the image is, right now. Defaults tosRGB, which is correct for anything straight out of a sampler's VAE decode.output_colorspace- what you want it to be. Defaults tosRGB.
If input and output match, the node short-circuits and passes the image straight through - so it's safe to leave in a graph as a labeling step. The auto option is also a no-op pass-through. Set both explicitly and the conversion happens in float, so you don't lose precision. The output wires into anything that takes an IMAGE: a save node, a VAE encode, an upscaler, wherever.
Installing it
Install the pack once and all three OIIO nodes appear (Colorspace Convert, Load, Save). Either way:
- ComfyUI Manager: search "comfy-oiio" (or "OpenImageIO") and hit install - Manager pulls in the pip dependencies for you.
- Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/melMass/comfy_oiio, thenpip install -r requirements.txt(it needsopenimageio>=3.0.3.1andclique==2.0.0), then restart.
Gotchas
- Set
OCIObefore ComfyUI starts. The colorspace list is read from your OCIO config when the node loads. Want a studio ACES config or a custom one?export OCIO=/path/to/config.ociobefore launching ComfyUI, then restart. Setting it mid-session does nothing. - Mislabeling the input silently shifts your color. There's no error when you tell it an sRGB image is actually
Rec709- you just get subtly wrong output. Double-check theinput_colorspacewhen something looks "close but not right." - The output is still a 0–1 tensor, so it previews fine in ComfyUI - the conversion only becomes visible when you save to a color-managed format or comp it against other footage.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| input_colorspace | COMBO | sRGB | 36 options: auto, scene_linear, lin_srgb, lin_rec709, Rec709, sRGB, +30 |
| output_colorspace | COMBO | sRGB | 36 options: auto, scene_linear, lin_srgb, lin_rec709, Rec709, sRGB, +30 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |