ComfyUI Node

Vibrance

Vibrance — the saturation slider that won't ruin skin tones

By jeremieLouvaert·Created 5 months ago·Updated 3 days ago· 101
Vibrance
  • image
  • image
vibrance0
saturation0
protect_skintrue
strength1.00

Vibrance is the "safe" saturation control, and the safety is the whole point. A plain saturation slider multiplies every pixel's color equally, which is why cranking it makes skin go orange and neon - the pixels that were already saturated get pushed even harder. Vibrance works the other way: it boosts muted colors more and already-saturated colors less, and with skin protection on, it actively holds back the orange/warm-yellow hues where faces live. It's the difference between "more color" and "more color without breaking the image."

For AI work this is genuinely the first saturation tool to reach for. Diffusion images tend to come out oversaturated and high-contrast; the standard photorealism fix is to pull saturation down 5–10%, and vibrance is how you do that without draining the whole frame. Set vibrance negative to gently de-saturate the loud colors while keeping the subtle ones - that single move fixes a lot of "generated" tells.

How it works

It works in linear light. For each pixel, saturation-aware weights decide how much the boost applies - a nearly-neutral pixel gets a big boost, an already-saturated one gets almost none. If protect_skin is on (it is by default), a fast hue extraction identifies orange/warm-yellow tones and further reduces the effect there. The separate saturation input is the old-fashioned uniform multiply, included for when you specifically want the blunt instrument.

The inputs

  • vibrance (±100, default 0) - the intelligent saturation control. Positive boosts muted colors, negative tames saturated ones. This is the knob you'll actually use.
  • saturation (±100, default 0) - uniform saturation, no protection. The tooltip says it best: use vibrance for natural results.
  • protect_skin (bool, default true) - reduce the vibrance effect on skin-tone hues (oranges/warm yellows). Leave it on; turning it off is a deliberate choice for product shots or foliage-heavy work.
  • strength (0–1, default 1) - blend between original and adjusted, like every Darkroom node.

Output is image. It's color-only, so it's welcome in the LUT bake chain - a vibrance move bakes into a .cube with no neighbors required.

Install & notes

Pack install as always: Manager → search "Darkroom", or git clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom + pip install -r requirements.txt + restart. Pure numpy, no GPU.

The habit worth building: use negative vibrance on portraits before reaching for any saturation preset, and let strength do the blending rather than stacking multiple positive vibrance nodes. Positive vibrance on top of an already-saturated render is how you get the "candy" look that kills realism. If the image still feels flat after a gentle negative vibrance, the answer is contrast or tone, not more color.

CategoryAKURATE/Darkroom/Raw

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
vibranceFLOAT0-100–100Intelligent saturation. Protects skin tones and already-saturated colors
saturationoptFLOAT0-100–100Uniform saturation boost (no protection). Use vibrance for natural results
protect_skinoptBOOLEANtrueReduce vibrance effect on skin-tone hues (oranges/warm yellows)
strengthoptFLOAT1.000–1Blend between original (0) and adjusted (1)

Outputs (1)

NameTypeDescription
imageIMAGE