ColorSpace Info
The node that writes down what your pixels are
- image
- image
- colorspace_json
ComfyUI has no concept of a colour space. A tensor is a tensor; whether those numbers are scene-linear ACEScg or gamma-encoded sRGB lives entirely in your head, and in someone else's head three weeks from now when they open your graph. ColorSpace Info is the node that writes it down.
What it is
A pure metadata node. It sits on a wire, reads the image's dimensions, channel count and batch size, and emits a JSON string describing the colour space you declare the image to be in. The image itself comes out of the other output untouched - literally the same tensor, unchanged.
The declaration is two dropdowns. encoding is the transfer curve (default sRGB, ten options covering the usual display curves and logs), and primaries is the gamut (default Rec.709 (sRGB), five options including the wide-gamut ones). Neither of them does anything to the pixels. That's the point: this is documentation, not conversion.
Around the edges you get scene_referred, which records whether values above 1.0 are legitimate, peak_nits for a mastering display peak, and a free-text notes field for "this is the LogC3 plate from the Tuesday shoot, don't grade before the CDL".
Outputs are image (passthrough) and colorspace_json (the STRING).
What it's actually for
Three things, in order of usefulness.
It chains. Wire colorspace_json into a diagnostics node or a ShowText and you get a structured report of what the graph believes it's carrying, right there in the node graph instead of in a README nobody reads.
It documents delivery. If you're handing EXRs to a compositor, "what colour space is this?" stops being a Slack message and becomes a string in the graph next to the write node.
It survives review. The notes field is the cheapest version control you'll ever use - version numbers, shot codes, which model and which seed.
Now the honest part
The node's own release notes flag scene_referred and peak_nits as label-only controls. They record a value in the JSON; they do not clamp, scale or convert anything. peak_nits at 1000 does not make your image a 1000-nit master, and switching scene_referred on does not stop anything downstream from clipping your highlights. The author says so in the tooltip and lists it under "controls that only label a report" in the known issues. Believe him.
The second thing: a JSON string is not an ICC profile. It's a note taped to the file. If a downstream tool can't read that string, nothing about the pixels has changed - which is exactly why Radiance's write nodes ask you what the image holds rather than sniffing it.
Install
Part of Radiance. ComfyUI Manager, search Radiance, install, restart, hard-refresh the browser. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtd-studios/radiance.git
cd radiance
python -m pip install -r requirements.txt
No models, no downloads, nothing to configure for this node.
Where people get burned
The usual one: ComfyUI's browser tab caches the node list, so after installing you can see the pack in Manager and still not find it in the right-click menu. Restart ComfyUI and refresh the browser - that fixes it nine times out of ten.
The subtler one is treating this node as a converter. People drop it in expecting the image to come out ACEScg because the dropdown says ACEScg. It won't. If you need the pixels actually converted, that's RadianceColorSpaceConvert; this node just labels the box.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Image passed through unchanged; only its size, channels and batch are read. | |
| encoding | COMBO | sRGB | Transfer curve to record in the JSON. Metadata only; the image is not decoded. |
| primaries | COMBO | Rec.709 (sRGB) | Primaries to record in the JSON. Metadata only; no conversion is done. |
| scene_referredopt | BOOLEAN | false | Records in the JSON that the image is scene-referred (values above 1.0 are valid). Metadata only; nothing is clamped either way. |
| peak_nitsopt | FLOAT | 10080–10000 | Mastering display peak in nits to record in the JSON. Metadata only; pixel values are not scaled. |
| notesopt | STRING | Optional free-text notes stored alongside the colorspace metadata JSON output. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| colorspace_json | STRING | — |