Nodes/ComfyTV/Video Color
ComfyUI Node

Video Color

A proper colorist's node, not another brightness slider

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Video Color
  • video
  • video
force_run_token0
project_id
parent_output_id0
exposure0.00
black0.000
temperature6500
temp_mix1.00
hue0
saturation0.00
vibrance0.00
blackpoint0.000
whitepoint1.000
shadows_r0.00
shadows_g0.00
shadows_b0.00
midtones_r0.00
midtones_g0.00
midtones_b0.00
highlights_r0.00
highlights_g0.00
highlights_b0.00
preserve_lightnesstrue

Most "color" nodes in ComfyUI are a brightness and contrast slider with a coat of paint. Video Color is not that. It's the node you reach for when an AI render comes out looking like it was graded by a vending machine - too warm, milky shadows, no separation between tones - and you want to fix it the way an actual colorist would.

It's a ComfyTV VideoFX stage with the pack's canvas model: own Run button, snapshot output, and FX-chain participation so you can preview live and render once.

The inputs, grouped the way you'll actually use them

  • Exposure and level: exposure (−3 to 3, default 0), black (−0.1 to 0.1), blackpoint (−0.5 to 0.5), whitepoint (0.5 to 2, default 1). Exposure moves the whole midtone range like an f-stop; blackpoint/whitepoint set where the blacks clip and the whites sit.
  • White balance: temperature (1000–40000 K, default 6500) with temp_mix (0–1) to blend how hard it applies. The classic "too orange, cool it down" fix.
  • Saturation family: hue (−180 to 180), saturation (−1 to 1), vibrance (−2 to 2). Vibrance is the one that protects skin tones while boosting everything else - reach for it before plain saturation, which will happily push faces toward the sun.
  • The wheel: shadows_r/g/b, midtones_r/g/b, highlights_r/g/b (−1 to 1 each). This is the lift-gamma-gain structure: tint the shadows one way, the highlights another, independently.
  • preserve_lightness (default on) - when you tint with the wheel, keep the luminance steady so you're shifting color without shifting brightness.

The project_id / parent_output_id / force_run_token inputs are internal frontend plumbing - ignore them.

How it works

This is a real color-grade node in the "color wheels" tradition: nine zone-per-channel controls arranged as shadow/midtone/highlight wheels, plus exposure, temperature, and point controls on top. The pack's own docs call the wheel setup lift-gamma-gain, which is the pro vocabulary for "dark, middle, and bright tones get independent color." That separation is the whole point - a warm highlight and a cool shadow can coexist, which is exactly the look flat sliders can't produce.

Install

ComfyTV ships ~190 stages in one pack; installing the pack gives you this node.

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI fully and find it under ComfyTV → VideoFX. ComfyUI Manager also finds it by searching "ComfyTV". No model downloads, no extra Python deps - it's deterministic color math on the clip. On ComfyUI Desktop or macOS, clone into the running instance's absolute path from the startup log rather than trusting the relative cd.

Troubleshooting

  • Colors shift but the image gets darker. Toggling preserve_lightness off lets wheel tints drag luminance with them; keep it on unless you want that.
  • "Saturation" makes faces glow. Switch to vibrance - that's literally the knob designed to not do that.
  • The grade looks flat. You're probably using exposure alone. Add a blackpoint/whitepoint pass to set contrast first, then wheel the shadows and highlights separately.

It's more knobs than a beginner wants, but that's the point: this is the one color node in the pack you'd actually use to finish a clip.

CategoryComfyTV/VideoFX

Inputs (23)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
exposureFLOAT0.00-3–3
blackFLOAT0.000-0.1–0.1
temperatureINT65001000–40000
temp_mixFLOAT1.000–1
hueFLOAT0-180–180
saturationFLOAT0.00-1–1
vibranceFLOAT0.00-2–2
blackpointFLOAT0.000-0.5–0.5
whitepointFLOAT1.0000.5–2
shadows_rFLOAT0.00-1–1
shadows_gFLOAT0.00-1–1
shadows_bFLOAT0.00-1–1
midtones_rFLOAT0.00-1–1
midtones_gFLOAT0.00-1–1
midtones_bFLOAT0.00-1–1
highlights_rFLOAT0.00-1–1
highlights_gFLOAT0.00-1–1
highlights_bFLOAT0.00-1–1
preserve_lightnessBOOLEANtrue
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO