EZ ControlNet
One ControlNet, neatly wrapped for the EZ pipeline
- control_net
- image
- CONTROL_NET
EZ ControlNet is how a ControlNet gets into a Prompt Helpers workflow. Stock ComfyUI makes you wire ControlNetApplyAdvanced directly into your conditioning; this pack hides all that behind EZ Generate, and EZ ControlNet is the wrapper that turns a single ControlNet + reference image into the EZ_CONTROL_NET value the generator expects.
It's a thin node, but the four knobs it exposes are the ones that actually matter for ControlNet work:
- control_net (CONTROL_NET) - comes from a ControlNet loader, e.g.
DiffControlNetLoaderor your chosen loader node. Note it's the loaded model, not a file path. - image (IMAGE) - the reference image the ControlNet conditions on (a pose skeleton, a canny edge, a depth map). Usually the output of a preprocessor.
- strength (FLOAT, default 1.0, range 0–10) - how hard the condition pushes. 1.0 is the standard starting point; most real-world work sits between 0.5 and 1.0.
- start_percent / end_percent (0–1) - which part of the denoising timeline the condition is active for. Defaults are 0 → 1 (the whole run).
Output is CONTROL_NET (EZ_CONTROL_NET), which wires into EZ Generate's optional control_net input - or into Concatenate ControlNet if you're stacking more than one.
The parameter that actually matters
If you remember one thing about this node, make it start/end percent. It's the standing advice in the ControlNet community: for structure-heavy work, release the condition once composition has formed rather than holding it through the whole sample. A pose ControlNet that runs at strength 1.0 through all 30 steps will fight the sampler for every detail; cut it off around end_percent 0.5–0.8 and the model gets freedom in the later, detail-setting steps. Composition comes early, texture comes late - that split is what start/end exists for.
How it works
EZ ControlNet just packages its four values into a single-element list of {control_net, image, strength, start_percent, end_percent}. When EZ Generate runs, it replays that list through ControlNetApplyAdvanced, feeding your reference image and applying the strength and timing window. Because it's a list, you can stack EZ ControlNet nodes via Concatenate ControlNet and each keeps its own timing - which is the clean way to do multi-condition work.
Installing it
It ships with the Prompt Helpers pack. In ComfyUI Manager search "Prompt Helpers" (Pauan/comfyui-prompt-helpers), install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Pauan/comfyui-prompt-helpers
Restart ComfyUI. No model downloads here - the ControlNet weights come from your own loader, and the pack itself only depends on PyYAML and desktop-notifier. Requires ComfyUI 0.8.0+.
The classic beginner stumble is socket mismatch: EZ ControlNet takes a loaded CONTROL_NET, not a path string, so make sure the loader node's output is what's plugged in. And if your ControlNet "does nothing," check strength first - at 0 it's a no-op by design, which is also the easiest way to A/B test whether the ControlNet is even helping.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| control_net | CONTROL_NET | — | |
| image | IMAGE | — | |
| strength | FLOAT | 1.000–10 | — |
| start_percent | FLOAT | 0.000–1 | — |
| end_percent | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONTROL_NET | EZ_CONTROL_NET | — |