RGB Histogram Renderer
Every color grader's first move, as a node
- image
- image
Every image editor you've ever opened has a histogram, and every color grader reads it before touching a single slider. The RGB histogram is the fastest way to see whether your blacks are crushed, your highlights are blown, or one channel is running hot. RGB Histogram Renderer puts that tool inside ComfyUI - one image in, one clean matplotlib plot out, nothing else.
It's part of ThatGlennD's ComfyUI-Image-Analysis-Tools pack, and it's the simplest node in the suite by design. No knobs, no mode combos, no block sizes. You wire an image in and get a labeled chart out: three overlapping semi-transparent bars - red, green, blue - across 256 intensity bins, with the classic histogram axes and a legend. The output is a normal IMAGE tensor, so you can preview it like any other image or save it alongside your renders.
What the histogram actually tells you
- Clipped blacks and whites - pixel counts piling up against the far edges of the chart mean the tonal curve hit the wall. This is the "before" half of the pairing with the pack's Clipping Analysis node, which quantifies exactly those clipped pixels.
- Channel imbalance - if the green curve sits visibly to the right of red and blue, your whites are green-tinted. The Color Cast Detector in the same pack will confirm it with a score.
- Flat, compressed tones - a histogram bunched in the middle with empty ends is a low-contrast image. Contrast Analysis quantifies the spread.
So the renderer is best treated as the visual member of a three-node team: it shows you the shape of the problem, and Contrast, Clipping, and Cast detection give you the numbers to filter or compare.
The honest caveats
The overlapping bars make this a fast read, not a precise one. Because red, green, and blue are semi-transparent and stacked, the per-channel shape is a little muddier than the outlined curves you'd get in Photoshop - fine for "is something wrong here," less ideal for pixel-precise grading. And there's exactly one output: the plot. Don't expect per-channel stats; this node renders a picture of the data, it doesn't return the data itself. If you want numbers out of a histogram, that's a job for a different tool.
It's also worth saying this is the node people stop using first. Once you've seen a few hundred histograms, you can spot a clipped render from the thumbnail. But when you're comparing a grid of candidate images for color consistency, or double-checking whether a LUT shifted a channel, having the histogram right there in the graph beats tabbing to another program.
Install
Standard for this pack - ComfyUI Manager (search "Image Analysis") or:
cd ComfyUI/custom_nodes
git clone https://github.com/ThatGlennD/ComfyUI-Image-Analysis-Tools
cd ComfyUI-Image-Analysis-Tools
pip install -r requirements.txt
Restart ComfyUI. The pack's requirements - numpy, opencv-python, matplotlib, scikit-learn, Pillow, torch - are all standard ComfyUI venv fare; matplotlib does the actual chart drawing. No models, no downloads.
Common gotchas
- Pack won't load: scikit-learn is imported at module load by the Color Harmony Analyzer, so a missing scikit-learn disables the whole pack - this node included. Windows portable:
python_embeded\python.exe -m pip install scikit-learn. comfy_apiimport error: update ComfyUI; the pack targets the newer node API.- First frame only: batches are charted on frame 0; feed video frames individually.
Wire it into a workflow next to your Save Image, and you get the whole tonal story of every render in your output folder without opening anything. It's a tiny habit that catches a lot of bad generations before they become "I'll fix it in post."
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |