Load ControlNet Model (Any)
Staging the model behind spatial control
- any
- CONTROL_NET
ControlNet is arguably the biggest control unlock ComfyUI has ever gotten: it conditions generation on spatial structure - edges, depth, pose - pulled from a reference image, so your prompt handles what appears and the ControlNet handles where it goes. ControlNetLoader_Any loads the model file that makes that possible; the actual conditioning happens at an Apply ControlNet node downstream, fed by this loader's output plus your conditioning and a preprocessed control image.
What's in the dropdown these days
Since 2024, ControlNet distribution shifted hard toward "union" checkpoints: one file covering every condition type - canny, depth, pose, and more - with condition fusion learned during training rather than tuned per workflow, instead of the old world of one separate file per condition. That's a real quality-of-life change for this loader specifically: instead of six or seven files cluttering models/controlnet, current architectures typically ship a single union model, and it lands within about a week of a new base release rather than the months SDXL originally waited.
control_net_name is the only field, pulled from that folder. Output is a single CONTROL_NET - the model, not conditioning yet.
Settings worth knowing before you wire the apply node
Not on this loader itself, but useful context for right after it: the SD-era default weight of 1.0 is too strong for the 2025-26 union models. They run better around 0.65-0.9 depending on the condition - canny and soft edge lower, pose and gray higher. Start/end step still does the same job it always has: releasing the ControlNet's influence partway through denoising (commonly around the 40-50% mark) so later steps stay the model's own detail rather than fighting the control map.
The any staging input
Every loader in this pack adds one extra optional input, any, that accepts literally anything and does nothing with the value - it's purely there to force this node to wait for whatever feeds it before it loads. ComfyUI's executor otherwise runs a loader the instant nothing blocks it, typically immediately for a node with no required upstream inputs, which front-loads every model in a graph regardless of when it's actually used. On a workflow already running a big base checkpoint plus a sizeable union ControlNet, deferring this load until right before the apply node needs it is a real VRAM lever, not a cosmetic one.
Installing it
ComfyUI Manager: search ComfyUI-LoaderUtils, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/lrzjason/ComfyUI-LoaderUtils
No extra dependencies - put ControlNet files in models/controlnet as usual.
Where people get burned
Empty dropdown: wrong folder, or no restart since the file landed there.
Overcooked, rigid output that ignores the prompt is almost always weight set too high for a modern union model - drop toward 0.65-0.8 before assuming the ControlNet itself is bad. And the one that trips up people new to ControlNet specifically: loading the model here does nothing on its own. You still need a preprocessor node (canny, depth, pose, whatever your condition is) to turn a plain reference image into the actual map the ControlNet reads - this node just gets the model into memory, it doesn't process anything.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| control_net_name | COMBO | 0 options: | |
| anyopt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONTROL_NET | CONTROL_NET | — |