OCIO ColorSpace
Convert between colorspaces like you're in Nuke, not stuck in sRGB
- image
- video
- image/sequence/video
- ComfyUI Video
Here's the thing about ComfyUI: it has no color management. Every image is a plain gamma-encoded sRGB tensor in 0..1, and that's the ceiling of the whole ecosystem. That's fine for finished pictures and quietly wrong the moment you're handing a plate to a real pipeline - a VFX comp works in scene-linear float with a wide gamut, and gamma-encoded values treated as linear light blow out every blend. OCIO ColorSpace is the node that moves you between those worlds: it's Nuke's OCIOColorSpace rebuilt, converting in_colorspace to out_colorspace through the OpenColorIO engine.
Which colorspaces? The active OCIO config ships with the pack - the built-in ACES studio config, around 55 spaces including ACEScg, ACES2065-1, ACEScct, and the camera set: ARRI LogC3/LogC4, RED Log3G10, Sony S-Log3, Canon Log, Panasonic V-Log, the Rec.2100 PQ/HLG display spaces. It's ACES 2.0, so a couple of names differ from the ACES 1.x you might remember from Nuke: Linear Rec.709 (sRGB) is the old Utility - Linear - sRGB.
The inputs that matter
- in_colorspace / out_colorspace - dropdowns from the active config, not free text. Pick the space the image is in, then the space you want out.
- mix (default 1) - blend with the original. 1.0 is the full conversion, 0.0 is a bypass. Useful for easing a conversion in.
- config_path - defaults to the built-in ACES config; drop your own
.ocioin the ComfyUI input folder and it appears in the list. - image / video - mutually exclusive. A VIDEO in gives you a VIDEO out, so this slots straight into ComfyUI's native video graph (
Load Video → OCIO ColorSpace → Save Video).
Outputs are image/sequence/video and ComfyUI Video, both converted.
When you actually reach for it
Two honest use cases. First, the professional handoff: an EXR plate comes in through OCIO Read as ACEScg, you want it in the working space for a model, then back to ACEScg (or ACES2065-1) for the master - this is the node between. Second, the LTX HDR corner, where it's half of the standard recipe. LTX-2.3's HDR IC-LoRA gives you linear Rec.709 after its own decode; you run this node Linear Rec.709 (sRGB) → ACEScg and the plate lands in a space that can actually hold it. Same story after OCIO LogConvert undoes a log curve - the LogConvert output is linear in the camera's own primaries, and this node finishes the gamut conversion. The swap button on the node face flips in/out in one press.
Accuracy is a published number here, not a claim: the pack's regression suite checks against an independent PyOpenColorIO reference and reports 0.000e+00 max abs error for ColorSpace - bit-identical to what OCIO computes. And nothing clamps: negatives and values above 1.0 survive the conversion, which is the whole point of a scene-linear path.
Install it via ComfyUI Manager (pick Nightly in the version dialog - the numbered registry entries are stale and flagged) or git clone https://github.com/SlavaSexton/ComfyUI-OCIO into custom_nodes plus pip install -r requirements.txt, then restart. One thing that confuses people: the config dropdown only shows the built-in ACES config until you drop a .ocio file into the input folder - there's no file browser for it. And if a conversion comes out looking wrong, check which direction you've got in and out set - that's the overwhelmingly common mistake, not the config.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| in_colorspace | COMBO | ACES2065-1 | Colorspace from the active config. |
| out_colorspace | COMBO | ACEScg | Colorspace from the active config. |
| mix | FLOAT | 1.000–1 | Blend with the original: 1.0 = full effect, 0.0 = bypass. |
| imageopt | IMAGE | — | |
| videoopt | VIDEO | — | |
| config_pathopt | COMBO | (built-in ACES config) | OCIO config: built-in ACES, or a .ocio file dropped in the ComfyUI input folder. Pick from the list. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image/sequence/video | IMAGE | Image converted from in_colorspace to out_colorspace. |
| ComfyUI Video | VIDEO | Same conversion as a ComfyUI VIDEO (carries data only when a VIDEO is fed in). |