Curve Editor
Draw a ramp, not a number — the curve node that comes with a histogram view
- curve
- histogram
- curve
Some things are better expressed as a ramp than a number. A denoise schedule, a sampling strength that eases in and out, a weight that climbs over time - you can express those as a curve you draw, and Curve Editor is the node that holds that curve. It ships with ComfyUI core in 2026, and its party trick is that you can wire a histogram into it and see your curve against the actual tonal distribution of an image.
It's a utility in the truest sense: it doesn't calculate anything clever itself. It gives you an editor for the CURVE type and hands the curve back out. The value is in the shape, not the node.
How it works
A curve here is a set of control points with an interpolation method. The default is a straight line from (0,0) to (1,1) - the identity curve, doing nothing until you change it - with monotone cubic interpolation, which keeps the curve smooth without the overshoot that plain cubic splines can produce. You drag points, the node stores the shape, and whatever consumes the CURVE type downstream applies it.
The optional histogram input is the feature that makes this worth more than a drawing widget: feed it a HISTOGRAM (grab one from Image Histogram) and the node overlays the histogram in its UI, so you can shape your curve with reference to the actual brightness distribution instead of blindly. Think of it as a tone-curve tool with real data behind it.
Inputs and outputs
One required input, curve - the editable curve itself, starting at the default identity. One optional input, histogram, for the overlay. One output, curve, the curve you edited.
That output is what you wire onward - into whatever node consumes curves in your pipeline (denoise ramps, sampling schedules, tone adjustments). The histogram is visualization only; it doesn't come out the other side.
Where people get burned
The main trap is expecting the Curve Editor to do something. It edits and passes through; it has no opinion about what the curve means. If you wire a curve out and nothing happens, the problem isn't the node - it's that the thing you connected it to either doesn't consume curves or you haven't shaped the curve away from the default. The identity curve is a no-op by design.
Second: keep the curve monotonic if you're using it for anything that should never decrease - a denoise strength that dips back down mid-pass will do something weird, and it'll be your fault, not the model's.
Third: the histogram overlay only shows when you feed it a histogram. Most people discover the Curve Editor because they followed the Image Histogram output here - that pairing is the intended flow. Run both, wire histogram to curve, and suddenly you have a proper tone-mapping workspace inside the graph.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| curve | CURVE | [object Object] | — |
| histogramopt | HISTOGRAM | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| curve | CURVE | — |