Load ControlNet Model (diff)
The variant that wants your base model too
- model
- CONTROL_NET
Load ControlNet Model (diff) is the same node as Load ControlNet Model with one extra input: it wants your base MODEL wired in before it loads. Same dropdown of ControlNet files, same CONTROL_NET output, same apply nodes downstream. The difference is in how the loader treats the file, and it's subtle enough that a lot of people never touch this variant. So when do you actually reach for it?
The mechanism
Look at the two loaders side by side. The plain ControlNetLoader reads the file and calls ComfyUI's ControlNet loader with no context. The diff variant passes your base model into that same load call. That model-aware path matters for ControlNet files that are architecture-sensitive or come as LoRA-style diffs - the "diff" in the name is shorthand for the difference-against-a-base approach, where the control weights are stored as a delta and need the base to be interpreted correctly.
What this doesn't mean: it's not a "modern models only" switch, and it's not a quality boost. For the common case - a self-contained ControlNet checkpoint - both loaders give you the same usable CONTROL_NET, and the plain node is the one in the default templates. The diff variant is the tool for the cases where a file fails to load correctly on its own, or where a workflow's author specifically wired the model in because that particular ControlNet needs it. If a shared workflow uses this node, keep the wiring as-is; don't "simplify" it to the plain loader and wonder why the control stops moving the image.
Wiring it
Two required inputs:
model- the diffusion model the ControlNet will condition.control_net_name- the file, fromComfyUI/models/controlnet.
One output, CONTROL_NET, which feeds the same ControlNet Apply (Advanced) node as the plain loader - positive/negative conditioning, control image, strength, start/end percent. The apply node, not the loader, is where you tune behavior, and every piece of ControlNet advice transfers: match the file's architecture to the base, preprocess the condition image, and start strength low (modern union models publish 0.65–0.80, well under the old 1.0).
Honest guidance
This is a niche sibling of a famous node, and its niche is narrower than you'd think. The control landscape of 2026 is dominated by union ControlNets and, increasingly, by the patch-based techniques that load through Load Model Patch instead - the diff-style ControlNet approach is part of that same family, which is part of why this node still exists. But for the vast majority of ControlNet work, the plain loader is the one you want. Use this one when a workflow tells you to, or when a ControlNet file won't load right through the plain node. It ships with ComfyUI core, nothing to install, and it's one of those nodes that's genuinely useful to know exists - right up until the day you need it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| control_net_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONTROL_NET | CONTROL_NET | — |