Nodes/ComfyUI-Advanced-ControlNet/Load Advanced ControlNet Model (diff) πŸ›‚πŸ…πŸ…’πŸ…
ComfyUI Node Runs on cloud

Load Advanced ControlNet Model (diff) πŸ›‚πŸ…πŸ…’πŸ…

For ControlNets that need the base model

By KosinkadinkΒ·Created 3 years agoΒ·Updated 8 days agoΒ· 993
Load Advanced ControlNet Model (diff) πŸ›‚πŸ…πŸ…’πŸ…
  • model
  • tk_optional
  • CONTROL_NET
β—„control_net_nameβ–Ύβ–Ί

This is the "diff" variant of the Advanced ControlNet loader, and the honest first thing to say is: most people never need it. It exists for a specific class of ControlNet - "difference" models that don't store the full network, only the delta from a base UNet, and therefore have to be handed your model to reconstruct themselves at load time. That's why this node has a model input the regular loader doesn't. If you don't know whether your ControlNet is a diff model, it almost certainly isn't, and you want the plain Load Advanced ControlNet Model node instead.

The author's own guidance in the README is blunt about this: if you don't know what the diff version does, you probably don't want to use it.

How it works

A normal ControlNet ships as a complete, standalone network. A diff-style ControlNet ships as the difference between the trained control network and the base model it was trained on, which makes the file smaller but means it can't stand alone - it needs the matching base model plugged in to rebuild the full ControlNet in memory. This loader does that reconstruction and then returns the result as an Advanced ControlNet, so it still gets all the pack's scheduling, masking, and per-frame features.

The inputs and outputs that matter

Two required inputs:

  • model - your base model (a MODEL from the checkpoint loader). This is the piece the diff ControlNet needs to reconstitute itself. It has to be the architecture the diff model was built against.
  • control_net_name - the dropdown of ControlNet files in ComfyUI/models/controlnet. Choose the diff model here.

Optional tk_optional attaches a Timestep Keyframe when this loader isn't feeding an Advanced apply node (or to carry a TK_SHORTCUT from a soft-weight node); with an apply node present it's redundant.

Output is CONTROL_NET, into your apply node's control_net input.

How to install it

ComfyUI Manager: search ComfyUI-Advanced-ControlNet, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet

then restart. No heavy dependencies. ControlNet files live in ComfyUI/models/controlnet - the diff models you'd use here were mostly an SD 1.5 / ControlNet 1.1-era format.

Common issues & troubleshooting

You loaded a normal ControlNet and it errored or produced garbage. That's the classic misuse - this node expects a diff model. Feed a standard ControlNet through the regular Load Advanced ControlNet Model node, which takes no model input.

The model doesn't match. The base you plug in has to be the architecture the diff ControlNet was trained on. A mismatch produces a shape error at load or nonsense at sampling.

You're on a modern base (Flux, Qwen, Z-Image, Anima). Diff ControlNets are an older SD-era thing; the current unions are all standalone. If your workflow is on a 2025-26 model, you want the plain loader, not this one.

Inputs (3)

NameTypeDefaultDescription
modelMODELβ€”
control_net_nameCOMBO0 options:
tk_optionaloptTIMESTEP_KEYFRAMEβ€”

Outputs (1)

NameTypeDescription
CONTROL_NETCONTROL_NETβ€”