Nodes/ComfyUI/Load ControlNet Model
ComfyUI Node Runs on cloud

Load ControlNet Model

Where structure enters your generation

By Comfy-Org·Created 4 years ago·Updated about 6 hours ago· 128,055
Load ControlNet Model
    • CONTROL_NET
    control_net_name

    Load ControlNet Model is the node that lets a drawing, a photo, or a pose skeleton tell the model where things go. It loads a ControlNet checkpoint from ComfyUI/models/controlnet and hands you a CONTROL_NET wire. That wire is then fused into your conditioning with a control image, a strength, and a step range - and that fusion is where the actual magic lives, which is why this loader is only half the story. The other half is the apply node it feeds.

    How it works

    One input, control_net_name, listing files from models/controlnet (and models/t2i_adapter, which shares the folder). The node reads the checkpoint through ComfyUI's ControlNet loader and returns a CONTROL_NET object. From there the standard path is ControlNet Apply (Advanced): it takes your positive and negative conditioning, the CONTROL_NET, a conditioning image, strength, and start_percent / end_percent. The output is new conditioning that carries the structure hint into the sampler.

    Mechanically, a classic ControlNet is a trained copy of the model's encoder blocks. The copy ingests your edge map, depth map, or pose skeleton, and its outputs are added to the frozen model's skip connections - guiding where things go without overwriting what the prompt says. On the DiT architectures that replaced UNets (Flux, Qwen-Image, Z-Image), the same idea is reimplemented against attention and MLP layers. The consequence you'll feel: no ControlNet file crosses architectures. An SD-era ControlNet does nothing on a modern base, and every architecture needs its own.

    The inputs that actually matter

    You don't tune the loader; you tune the apply node, and three settings do the work:

    • strength - the control weight. The old SD-era default of 1.0 is too hot for modern union models; their cards publish 0.65–0.80. Start low and add.
    • start_percent / end_percent - when the condition applies during denoising. Releasing the condition after composition forms (say, end at 0.5) lets the model add its own detail in later steps. This is the parameter that matters most for structure-heavy work.
    • The condition image - must be preprocessed (canny edges, depth map, pose, etc.). The preprocessors ship in the ControlNet Auxiliary Preprocessors pack, not in this loader.

    Gotchas

    • Wrong architecture = silent failure. A Flux ControlNet loaded under an SDXL model won't error; it just won't move the image. Match the file to the base.
    • Modern unions shrank the menu. The 2024 SDXL union covers twelve conditions; the 2026 unions stop around seven. If your workflow depends on QR/brightness, segmentation, or Reference conditioning, those never got a post-Flux home - plan for an SDXL pass instead.
    • "Why is my ControlNet weak?" Usually strength too low, start/end covering too little of the denoise, or a condition image at the wrong resolution. Raise strength first, then widen the step window.
    • Distilled few-step checkpoints fight control. Conditioned renders want more steps than 4–8; run the full model for controlled work.

    The modern alternative

    One honest 2026 note: for a single, describable structure edit, an edit model handed the map directly ("make this pose but in daylight") now competes with ControlNet. The case for still loading a ControlNet is when you need partial strength, two conditions at once, or a repeatable pipeline. One-off structural tweak → edit model. Real control → this node.

    It ships with ComfyUI core - no install. Load the right architecture's file, feed it a preprocessed image, and start at a strength lower than you think you need.

    Categorymodel/loaders

    Inputs (1)

    NameTypeDefaultDescription
    control_net_nameCOMBO0 options:

    Outputs (1)

    NameTypeDescription
    CONTROL_NETCONTROL_NET