HSL Selective
Lightroom's HSL panel, node form, with all 8 color bands
- image
- image
Anyone who's edited a photo in Lightroom has used the HSL panel: eight color bands, three sliders each - hue, saturation, luminance - and you can fix the sky or the foliage without touching the model's skin. HSL Selective is that exact panel as a ComfyUI node, minus the interface cruft and plus a feathering model that keeps adjustments from hard-clipping at band boundaries.
It lives in ComfyUI-Darkroom's Camera Raw group, and it's the node I'd grab first for "this image is 90% right, fix the color of one thing." If the sky is too cyan or the grass is too yellow-green, you don't need masks or qualifiers - you need the band slider that says "blue" or "green."
How it works
The wheel is split into eight bands (red, orange, yellow, green, aqua, blue, purple, magenta), and each band has a hue shift (±30°), a saturation adjustment, and a luminance adjustment. Unlike a hard clamp, adjacent bands feather into each other, so a green adjustment gently rolls off into yellow and aqua instead of ending in a seam. Everything stacks with the pack's usual linear-light processing, and there's a strength blend on the whole node.
The inputs that matter
- red_hue … magenta_luminance - 24 sliders total: hue/sat/lum for each of the eight bands. In practice you'll touch two or three sliders per edit.
- preset - "Custom (manual)" plus AI Mitigation presets (Subtle / Standard / Strong) that pair with the pack's Clarity/Texture/Dehaze node of the same tier. Manual sliders add on top of whichever preset you pick.
- strength - the global blend between original and adjusted.
Output is a single image - wire it onward or to a Preview.
Install and gotchas
cd ComfyUI/custom_nodes
git clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom
pip install -r ComfyUI-Darkroom/requirements.txt
Or search "Darkroom" in ComfyUI Manager and restart. It's under AKURATE/Darkroom/Raw.
The trap is overcorrection with the hue sliders. ±30° on a band is a lot - most real edits live in the 3–10° range. Watch skin: "orange" and "red" bands both bleed into skin tones, so when you warm the reds, check the model didn't turn into a mannequin. If you only need saturation and not hue, the sibling Hue vs Sat node is a lighter-weight option for exactly that.
One power move: HSL Selective is a per-pixel color transform, so it's fully legal inside a LUT bake chain. Fix the foliage and the sky, put it between LUT Bake Inject and Extract, and your "selective" grade exports as a .cube that DaVinci, Premiere, and Photoshop will all happily apply.
Inputs (27)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| red_hueopt | FLOAT | 0-30–30 | Shift Red hues (degrees) |
| red_saturationopt | FLOAT | 0-100–100 | Red saturation adjustment |
| red_luminanceopt | FLOAT | 0-100–100 | Red luminance adjustment |
| orange_hueopt | FLOAT | 0-30–30 | Shift Orange hues (degrees) |
| orange_saturationopt | FLOAT | 0-100–100 | Orange saturation adjustment |
| orange_luminanceopt | FLOAT | 0-100–100 | Orange luminance adjustment |
| yellow_hueopt | FLOAT | 0-30–30 | Shift Yellow hues (degrees) |
| yellow_saturationopt | FLOAT | 0-100–100 | Yellow saturation adjustment |
| yellow_luminanceopt | FLOAT | 0-100–100 | Yellow luminance adjustment |
| green_hueopt | FLOAT | 0-30–30 | Shift Green hues (degrees) |
| green_saturationopt | FLOAT | 0-100–100 | Green saturation adjustment |
| green_luminanceopt | FLOAT | 0-100–100 | Green luminance adjustment |
| aqua_hueopt | FLOAT | 0-30–30 | Shift Aqua hues (degrees) |
| aqua_saturationopt | FLOAT | 0-100–100 | Aqua saturation adjustment |
| aqua_luminanceopt | FLOAT | 0-100–100 | Aqua luminance adjustment |
| blue_hueopt | FLOAT | 0-30–30 | Shift Blue hues (degrees) |
| blue_saturationopt | FLOAT | 0-100–100 | Blue saturation adjustment |
| blue_luminanceopt | FLOAT | 0-100–100 | Blue luminance adjustment |
| purple_hueopt | FLOAT | 0-30–30 | Shift Purple hues (degrees) |
| purple_saturationopt | FLOAT | 0-100–100 | Purple saturation adjustment |
| purple_luminanceopt | FLOAT | 0-100–100 | Purple luminance adjustment |
| magenta_hueopt | FLOAT | 0-30–30 | Shift Magenta hues (degrees) |
| magenta_saturationopt | FLOAT | 0-100–100 | Magenta saturation adjustment |
| magenta_luminanceopt | FLOAT | 0-100–100 | Magenta luminance adjustment |
| strengthopt | FLOAT | 1.000–1 | Blend between original (0) and adjusted (1) |
| presetopt | COMBO | Custom (manual) | AI Mitigation presets pair with Clarity/Texture/Dehaze preset of the same tier. Manual sliders add on top |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |