Nodes/Virtuoso Nodes for ComfyUI/Color Balance Advanced
ComfyUI Node

Color Balance Advanced

Color balance pinned to any brightness level

By chrisfreilich·Created 2 years ago·Updated about a year ago· 93
Color Balance Advanced
  • image
  • IMAGE
brightness_target0.500
cyan_red0.00
magenta_green0.00
yellow_blue0.00
preserve_luminositytrue

The regular Color Balance node splits an image into three fixed buckets - shadows, midtones, highlights - and lets you push color in each. This one throws that structure out and asks you to pick the exact brightness level the correction should center on, then applies unrestricted color-axis pushes around that point. It's the tool for when you know precisely which tonal range is off - say, the mid-gray skin tones are a touch too green - and you want to correct that range specifically instead of "midtones" broadly.

How it works

You set a brightness_target between 0 (black) and 1 (white); the correction is strongest exactly at that brightness and tapers off for pixels that are brighter or darker than it. Then the three color-axis sliders - cyan/red, magenta/green, yellow/blue - push color along each axis at that target level. Unlike the standard Color Balance node, these axis values aren't clamped to a gentle range: the author's own README warns "unlike the standard Color Balance Mode, these adjustments are unrestricted, so less is more!" - it's genuinely easy to blow out a correction here if you push too hard.

The inputs and outputs that matter

  • image - the image to correct.
  • brightness_target (0.001–0.999, default 0.5) - the brightness level the correction centers on. 0.5 sits at mid-gray by default.
  • cyan_red, magenta_green, yellow_blue (-1 to 1 each, default 0) - the three Photoshop-style color axes. Negative pushes toward cyan/magenta/yellow, positive toward red/green/blue.
  • preserve_luminosity (boolean, default true) - keeps the overall brightness of the image steady while the color values shift underneath, which also makes the effect look subtler and prevents blown highlights from the correction itself.

Output is a single IMAGE.

How to install it

ComfyUI Manager: search Virtuoso Nodes for ComfyUI, install, restart. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/chrisfreilich/virtuoso-nodes
pip install -r virtuoso-nodes/requirements.txt

Restart, and you'll find it under Virtuoso/Adjustment. No model downloads - this is straight pixel math, cheap to run.

Common issues & troubleshooting

The image looks distorted or posterized. This is the failure mode the README explicitly warns about. Because the axis sliders here aren't restricted the way they are on the plain Color Balance node, values much past ±0.2 or so can start clipping color badly, especially with preserve_luminosity off. Back the sliders down before assuming something's broken - start small and build up.

Correction isn't hitting the tones you expect. Double-check brightness_target - it's a 0–1 fraction of the brightness, not a percentage of the image or a specific object. If your subject's skin sits around 0.6–0.7 brightness and you set the target to 0.5, you're centering the correction on something darker than your subject and only catching the edge of the falloff.

When to use this over plain Color Balance: if "shadows/midtones/highlights" genuinely covers your correction, use the simpler node - it's harder to break. Reach for this one specifically when the problem tone doesn't sit neatly in one of those three buckets.

CategoryVirtuoso/Adjustment

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
brightness_targetFLOAT0.5000.001–0.999
cyan_redFLOAT0.00-1–1
magenta_greenFLOAT0.00-1–1
yellow_blueFLOAT0.00-1–1
preserve_luminosityBOOLEANtrue

Outputs (1)

NameTypeDescription
IMAGEIMAGE