ComfyUI Node

Element HueSat

Boost, kill, or remap saturation by exact hue — with a curve you can see

By supElement·Created 9 months ago·Updated about 11 hours ago· 10
Element HueSat
  • image
  • image
curve_data{}
preview_size512
frame_index0
output_modefalse

Element HueSat is a "hue vs saturation" curve: the horizontal axis is the hue of each pixel, the vertical axis is how much saturation you give it. Draw a curve that dips at the reds and the reds in your image desaturate while everything else stays put. That one sentence covers about 80% of the color-correction jobs people actually want - punch up the greens in a forest shot, mute an oversaturated orange sky, unify skin tones without touching the background.

It's one of four curve nodes in the ComfyUI_Element_easy pack (alongside HueBright, HueHue, and the plain ImageCurve), and they all share the same DNA: interactive curves with a live preview, no sliders to fiddle blind.

How it works

Feed it an image, and you get a curve editor where you click to add points, drag them around, and right-click to remove. The curve maps input hue (the full 0–360° ring) to an output saturation multiplier - above 1.0 boosts, below 1.0 drains, and you can drag a point down to zero for a full grayscale on that hue range. The preview updates in real time, and it handles both single images and frame sequences, so you can grade a video's look before you commit to a full render.

The curve_data input is a JSON string that holds the points - you'll almost never edit it by hand because the curve editor writes it for you, but it means the curve is portable: copy the string into another instance of the node and you've duplicated the exact grade. preview_size (256–4096) controls the resolution of the live preview, frame_index picks which frame of a sequence you're looking at, and output_mode toggles between preview and the final full-quality output. The single image output is your graded image, ready for the next node in the chain.

The one gotcha the author calls out

The README has a specific warning for this node: don't add points at both ends of the curve at the same time. The hue axis is a closed loop - the ends wrap around to meet each other - so a point at 0° and another at 360° is really two points on the same spot, and one of them quietly wins. It won't error out, it'll just make the other point ineffective. One point at either end is enough to do the job, because the loop closes the curve for you.

Installing it

It's part of supElement/ComfyUI_Element_easy:

cd ComfyUI/custom_nodes
git clone https://github.com/supElement/ComfyUI_Element_easy.git

Restart ComfyUI, or install via ComfyUI Manager by searching ComfyUI_Element_easy.

What's worth knowing

This is the node to reach for when a color cast lives on one hue and you want surgical control - the classic is killing an ugly orange/teal push on the shadows or rescuing oversaturated reds in skin. If your problem is "everything looks washed out," you want the brightness curve (HueBright) or the general ImageCurve instead. And because the preview handles frame sequences, it's genuinely usable on animation and video passes, not just single frames. The trade-off: it's a curve editor, which means it rewards a minute of fiddling - if you wanted a one-knob saturation slider, this is more machine than you need.

CategoryElement_easy/image

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
curve_dataSTRING{}
preview_sizeINT512256–4096
frame_indexINT00–9999
output_modeBOOLEANfalse

Outputs (1)

NameTypeDescription
imageIMAGE