XY Input: Denoise
Denoise
- X or Y
Denoise is one of those settings where the "right" value is entirely situational and the only reliable way to find it is to try a few. This node automates that: it sweeps a range of denoise values and drops them onto an XY Plot grid so you can see, side by side, exactly where a pass stops adding detail and starts rewriting your image. It's part of the Efficiency Nodes XY Plot system.
Denoise matters most in two places: img2img, where it controls how far the model drifts from your input, and hires-fix / second-pass upscaling, where too much denoise repaints the composition and too little does nothing. The community rule of thumb for a hires pass lives around 0.3–0.5 - high enough to add coherent detail, low enough to keep the picture. This node is how you find your number instead of borrowing someone else's.
How it works
It's about as simple as an XY Input gets. You give it three widgets and it hands the KSampler a list of denoise values to run.
batch_count- how many values to test across the range (default 3).first_denoise- the low end of the sweep (default 0).last_denoise- the high end (default 1).
The node evenly spaces batch_count values between first and last and outputs them as a single X or Y connection. "X or Y" is literal - you decide which axis it lands on by wiring it into the corresponding input of the XY Plot node.
One practical note on the defaults: a sweep starting at first_denoise 0 wastes a cell, because denoise 0 changes nothing. For a hires or img2img comparison you'll usually want to set the range to something like 0.2 to 0.7 so every tile in the grid is actually informative.
What you actually wire up
Really just batch_count and the two range values. The output goes to the XY Plot node (X or Y input), and that node feeds the script input on an Efficient KSampler. Pair it on the other axis with something like XY Input: Steps or XY Input: CFG Scale and you get a full denoise-vs-steps matrix in one execution.
Installing it
Easiest path is ComfyUI Manager - search Efficiency Nodes for ComfyUI, install, restart. Manual install:
cd ComfyUI/custom_nodes
git clone https://github.com/jags111/efficiency-nodes-comfyui
Restart ComfyUI afterward. No extra model downloads are needed for this node specifically.
Common issues
The universal XY Input catch: on its own, this node produces nothing visible. Its output has to travel through the XY Plot node and into one of the pack's Efficient KSamplers - a vanilla KSampler won't run the script. If your grid never renders, that broken chain is almost always why.
Beyond that, the usual denoise sanity checks apply and aren't really node bugs: if every cell in your grid looks identical, your range is probably too narrow or too low; if the composition falls apart at the high end, that's denoise doing its job, not the node misbehaving.
Pack-wide, if Efficiency Nodes fails to import at startup (a pip freeze error that flips the whole pack to IMPORT FAILED is the classic one), this node vanishes with the rest. Update ComfyUI and the node together, and confirm your Python env is intact.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| batch_count | INT | 30–50 | — |
| first_denoise | FLOAT | 0.000–1 | — |
| last_denoise | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| X or Y | XY | — |