False Color
False color and zebras in ComfyUI
- image
- mask
- image
- mask
- false_color_info
On a real film set, the camera monitor can show you false color - the image recolored so that every exposure level has a hue, and you can tell at a glance whether skin is clipping or shadows are crushed. Cameras do it, Nuke does it, and now x1FalseColor does it in ComfyUI, which is oddly rare for an ecosystem that's otherwise drowning in color nodes. If you're grading output and guessing whether your highlights are blown, stop guessing.
It's part of MKRShift Nodes by Cris K B, under MKRShift Nodes/Color/Analyze - the pack's small but genuinely useful inspection branch.
How it works
The node recolors your image according to one of three modes:
luma_ramp(default) - a smooth gradient where dark shadows map to one hue, midtones another, and highlights a third, so the whole exposure range is visible at once.exposure_zones- the proper broadcast/Ansel Adams zone-style breakdown: distinct color bands for each stop, like the ARRI false-color display.clipping- a stricter look that isolates the extremes.
On top of that there's zebra, the striped highlight warning you see on camera viewfinders: with show_zebra on, anything above zebra_threshold (default 0.95) gets overlaid with diagonal stripes, so blown-out regions scream at you instead of quietly turning to white mush. low_clip and high_clip (defaults 0.02 / 0.98) set what the node treats as "clipped" for the analysis, and overlay_opacity blends the false color over the real image - full opacity for analysis, low opacity to check while keeping context.
The output image is the recolored overlay. The mask output is the useful bit for actual grading: it isolates the clipped regions, so you can wire it straight into a mask on a brightness/contrast node and pull your blown highlights back automatically.
The inputs that matter
Inside the settings_json:
mode-luma_ramp,exposure_zones, orclipping.zebra_threshold/show_zebra- the highlight stripe overlay.low_clip/high_clip- what counts as clipped (defaults 0.02 / 0.98).overlay_opacity- how transparent the analysis is over your image.
Optional mask input with mask_feather / invert_mask, plus the false_color_info string output.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart ComfyUI, or install via ComfyUI Manager (search MKRShift_Nodes). No requirements, no models.
The take
This is an analysis node, not a look node - you run it, read the result, then turn it off or drop overlay_opacity low. The workflow that makes it earn its place: false-color your image, spot the clipped highlights via zebra, wire the mask output into an exposure/gamma correction, and re-check. In a finishing chain where the KB's advice is "grade like a colorist, not like a filter stack," this is the colorist's measurement tool. It's niche, but it's the kind of node that's genuinely missing elsewhere.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| settings_json | STRING | {"mode":"luma_ramp","overlay_opacity":1.0,"zebra_threshold":0.95,"low_clip":0.02,"high_clip":0.98,"show_zebra":true,"mask_feather":12.0,"invert_mask":false} | — |
| maskopt | MASK | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| false_color_info | STRING | — |