ComfyUI Node

Color Balance

Photoshop's shadows/midtones/highlights color wheel

By chrisfreilich·Created 2 years ago·Updated about a year ago· 93
Color Balance
  • image
  • IMAGE
lows_cyan_red0.00
lows_magenta_green0.00
lows_yellow_blue0.00
mids_cyan_red0.00
mids_magenta_green0.00
mids_yellow_blue0.00
highs_cyan_red0.00
highs_magenta_green0.00
highs_yellow_blue0.00
preserve_luminositytrue

This is the classic Photoshop color-grading tool, node-ified: nine sliders split across shadows, midtones, and highlights, each pushing color along one of three axes. It's the one you reach for when an image is close but has a subtle cast - shadows a bit too blue, skin tones a bit too magenta - and you want to correct just that tonal range without touching the rest of the image's brightness or the other tonal ranges.

How it works

The image is analyzed into three overlapping brightness ranges - lows, mids, highs - and each range gets its own independent push along three color axes: cyan↔red, magenta↔green, yellow↔blue. Because the ranges are separate, you can, say, warm up the highlights while cooling the shadows in the same pass, which is a common film-grading move. preserve_luminosity keeps the overall brightness steady while these color shifts happen, which both prevents the correction from also changing exposure and tends to make the effect read as more subtle and controlled.

The inputs and outputs that matter

There are nine correction sliders, all -1 to 1 with a default of 0, named by range and axis:

  • lows_cyan_red, lows_magenta_green, lows_yellow_blue - shadows.
  • mids_cyan_red, mids_magenta_green, mids_yellow_blue - midtones.
  • highs_cyan_red, highs_magenta_green, highs_yellow_blue - highlights.

For each axis, negative pushes toward cyan/magenta/yellow, positive pushes toward red/green/blue - matching Photoshop's own convention. Plus:

  • preserve_luminosity (boolean, default true) - hold overall brightness steady through the correction.

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 it's under Virtuoso/Adjustment. No models to fetch - plain image math.

Common issues & troubleshooting

Nine sliders and no idea where to start. Work one range at a time. If your issue is "the whole image looks slightly wrong," start with mids_* since midtones dominate most of a typical image's visible area - then check shadows and highlights separately once mids look right.

The correction shifted overall brightness too. Confirm preserve_luminosity is on - it's the default, but if it's been turned off, color pushes (especially on the yellow/blue and magenta/green axes) can visibly darken or lighten the image as a side effect.

Need a more precise or unrestricted correction. If your problem tone doesn't fall neatly into shadows/mids/highlights - say, a cast specific to mid-gray skin values - Color Balance Advanced lets you target an exact brightness level instead of one of these three fixed bands, at the cost of the corrections being unclamped and easier to overdo.

CategoryVirtuoso/Adjustment

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
lows_cyan_redFLOAT0.00-1–1
lows_magenta_greenFLOAT0.00-1–1
lows_yellow_blueFLOAT0.00-1–1
mids_cyan_redFLOAT0.00-1–1
mids_magenta_greenFLOAT0.00-1–1
mids_yellow_blueFLOAT0.00-1–1
highs_cyan_redFLOAT0.00-1–1
highs_magenta_greenFLOAT0.00-1–1
highs_yellow_blueFLOAT0.00-1–1
preserve_luminosityBOOLEANtrue

Outputs (1)

NameTypeDescription
IMAGEIMAGE