Nodes/Prompt Helpers/EZ ControlNet
ComfyUI Node

EZ ControlNet

One ControlNet, neatly wrapped for the EZ pipeline

By Pauan·Created 8 months ago·Updated 5 months ago· 3
EZ ControlNet
  • control_net
  • image
  • CONTROL_NET
strength1.00
start_percent0.00
end_percent1.00

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. DiffControlNetLoader or 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.

Categoryprompt_helpers/controlnet

Inputs (5)

NameTypeDefaultDescription
control_netCONTROL_NET
imageIMAGE
strengthFLOAT1.000–10
start_percentFLOAT0.000–1
end_percentFLOAT1.000–1

Outputs (1)

NameTypeDescription
CONTROL_NETEZ_CONTROL_NET