Temperature (Tanner Helland's algorithm)
Dial white balance in Kelvin, not by eyeballing the RGB sliders
- image
- IMAGE
There's a huge difference between "make it warmer" by nudging red and "this was shot at 4800K" - and if you care about color, you want the second one. Temperature (Tanner Helland's algorithm) from WtlNodes shifts your image's white balance using real color-temperature math, in Kelvin, the way a camera's white-balance setting works. It's one of the pack's best color nodes precisely because it does one thing properly.
The algorithm is the well-known Tanner Helland approximation that converts a temperature in Kelvin to an RGB white point. The node normalizes that against a 6500K reference (the standard daylight white point) and applies the ratio. Then - and this is the part that makes it better than a raw RGB multiply - it rescales the result to preserve the original luminance, so warming an image doesn't also brighten it. That luminance preservation is the difference between a color grade and a color mess.
The inputs
image- anything, batch included.temperature- 1000 to 40000 K, default 6500 (neutral). The scale is intuitive once you know it: 1000 K is warm orange (candlelight), 6500 K is neutral daylight, 40000 K is cold blue (shade). Lower than 6500 warms, higher cools. The range is huge on purpose - 1000 K is really, seriously orange, which you'll only ever want for a dramatic sunset grade.apply_type- the pack-wide live-preview dropdown.
One IMAGE out.
Why Kelvin beats sliders
First, it's reproducible - "4500K" means the same thing next week and in someone else's workflow, where "warmth +37" means nothing. Second, the math is physically grounded: a real color-temperature shift changes the color of the whites, which is what makes it read as a white-balance correction rather than a tint. And because luminance is preserved, you can stack a temperature shift with exposure or highlight/shadow adjustment without fighting yourself - the brightness stays put while the color moves.
The natural workflow: generate, then Temperature to correct or stylize (8500K for a crisp daylight scene, 3000K for a warm interior), then a touch of contrast and you're done. Photorealism lives in these small, physically-motivated corrections.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Scorpiosis0/ComfyUI-WtlNodes.git
Restart ComfyUI, or install via ComfyUI Manager (search "WtlNodes"). No models, no heavy deps.
Gotchas
- 6500 is neutral, not "default effect." If you load the node and nothing happens, that's correct - you're at the neutral white point. Move the slider.
- Extremes clip. 1000 K pushes red so hard that highlights will hit pure red regardless of the luminance preservation. Treat the far ends of the range as creative tools, not corrections.
- It shifts everything, including skin. White-balance nodes are global by design. If you want a warm scene with neutral skin tones, do the temperature shift and then selectively correct - or accept the moody cast.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| temperature | FLOAT | 65001000–40000 | — |
| apply_type | COMBO | 3 options: none, auto_apply, apply_all |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |