Denoise
Stop re-typing 0.45 into six different nodes
- denoise
Denoising strength is the single most consequential number in img2img and inpainting, and it's also the one people copy into five different nodes and then forget in four of them. This is a dedicated node for that number.
What it's for
In a straightforward txt2img graph, denoise is 1.0 and you never think about it. The moment you have a second pass - a refiner, a hires-fix upscale, a detailer pass, an inpaint of a hand, a face restoration crop - you have a denoise field, and each one wants a different value, and they all interact with each other in ways that are annoying to reason about when they're scattered.
So you stage them. A Denoise node holding 0.45 on the inpaint branch, another holding 0.25 on the cleanup pass, each wired to every consumer on that branch. Now when the result is too crunchy at 0.45 you drag one slider to 0.38 and everything downstream moves together. The reference ranges worth keeping in your head, because they're the ones that actually hold up: 0.0–0.3 for subtle fixes like colour and minor cleanup, 0.3–0.6 for swapping clothing or changing an expression, 0.6–0.8 for putting something new in the mask, and 0.8–1.0 for straight regeneration of the masked region. The classic beginner injury is using 0.75 for "just fix the eyes" and getting entirely new eyes, and a new nose to match.
How it works
A float widget, a FLOAT output, nothing else. The input is denoise: default 0.5, range 0–1, step 0.01. The code rounds it to two decimals on the way out, so what you see on the widget is what the sampler gets - no 0.4499999 in your metadata.
The single output is also named denoise and typed FLOAT. Wire it into any sampler's denoise input after converting that widget to a socket (right-click → Convert widget to input). It works on KSampler/KSamplerAdvanced, on Impact Pack detailers, on hires-fix upscale stages, on anything that declares denoise as a float - because it's just a float, and ComfyUI doesn't care which node it lands on.
Two things it deliberately isn't: it isn't a scheduler, and it isn't start_at_step/end_at_step on KSamplerAdvanced. Those are separate controls that people conflate. A denoise of 0.5 skips half the schedule; steps 10–20 on a 20-step schedule does something related but not identical, and mixing the two models of "how much of the image to rebuild" is how second passes end up undercooked.
Installing it
It's part of ComfyUI-MDSNodes by MarwanDSAI. Via ComfyUI Manager, search ComfyUI-MDSNodes or MDSNodes and install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/MarwanDSAI/comfyui-mdsnodes
# restart ComfyUI
Nothing else to install - the repo's requirements.txt is empty by design and the README says no extra packages are needed. There's no model to download; this node is a number in a box.
Search the canvas for Denoise. Because the display name is generic, you'll also see core and other packs' denoise-ish nodes in the results; the category MDSNodes/Constants is how you tell this one apart.
Common issues
Missing from the node search. The constant nodes arrived in pack version 1.8.0. An install from before that has the pack's bigger hub and selector nodes but not these - update in Manager and restart.
The wire is rejected. Some older sampler nodes declare denoise in a way the frontend won't let you convert, and a few custom samplers take denoise as an INT. Denoise outputs FLOAT; if the target really is an INT input, run it through Round from the same pack and expect a whole number.
The value changes but nothing else does. ComfyUI caches hard. If you edited the constant and the output looks identical, confirm the node is actually on the dependency path to your output node - a denoise constant wired to a bypassed sampler group does nothing at all, silently.
Everything looks over-baked at 0.5. Denoise interacts with step count and with how much of the mask is feathered. Before you blame the number, drop Feather Radius a notch and check the mask isn't larger than the thing you meant to fix.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| denoise | FLOAT | 0.500–1 | Denoising strength factor. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| denoise | FLOAT | The denoise float value. |