EasyControlnet++
Load, condition, and apply a ControlNet in one node
- pipe
- image
- control_net
- pipe
- positive
- negative
Stock ComfyUI splits ControlNet into a load step and an apply step, and you thread positive/negative conditioning through both by hand. This node collapses that into one box: give it a checkpoint name and a conditioning image, and it hands back conditioning with the ControlNet already applied - ready for your sampler.
The union_type field, and why it's here
This is the "++"-flagged loader specifically because it exposes union_type - a dropdown that only matters if the ControlNet you loaded is a union model, the kind that bundles multiple condition types (canny, depth, pose, and so on) into one checkpoint and needs to be told which one you're actually feeding it. The choices here - auto, openpose, depth, a combined hed/pidi/scribble/ted group, a combined canny/lineart/anime_lineart/mlsd group, normal, segment, tile, repaint - map directly onto how these union models group their supported conditions. auto lets the model try to detect which condition your image represents; explicit selection is more reliable when you know exactly what you're feeding it. If you're loading a single-purpose ControlNet (not a union model), this field is mostly irrelevant and auto is fine to leave alone.
Worth knowing going in: union ControlNets are genuinely the state of the art right now - they land within days to weeks of a new base model these days, versus the roughly year-long wait SDXL had to endure for its own union. The tradeoff is coverage - the newest unions typically cover five to seven conditions where SDXL's union covers twelve, so segmentation, normal maps, and a few other legacy conditions are only reliably available on older architectures.
The inputs that matter
pipe, image, and control_net_name are required. control_net is optional and lets you feed an already-loaded CONTROL_NET object instead of loading by name - useful when you're sharing one loaded model across multiple apply points in a graph rather than reloading it repeatedly. strength, start_percent, and end_percent are the standard ControlNet dials: how strongly it influences generation, and over what portion of the denoising schedule. Community guidance on modern union models has shifted meaningfully lower than the old SD-era default of 1.0 - most 2025-26 unions publish recommended strengths in the 0.65–0.9 range, so start there rather than maxing it out. scale_soft_weights is a refinement on top of plain strength that scales influence more gently across the ControlNet's internal layers rather than applying a flat multiplier - worth trying if a strong ControlNet is fighting your prompt more than you'd like.
Outputs are pipe, positive, and negative - conditioning ready to hand straight to your sampler.
Installing it
ComfyUI Manager: search ComfyUI Easy Use, install, restart. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Use
Windows: double-click install.bat. Linux/Mac: run pip install -r requirements.txt yourself. Restart ComfyUI. The ControlNet checkpoint itself is a separate download into models/controlnet - this node loads it, it doesn't fetch it.
Where people get stuck
The most common issue is a union model producing weak or wrong-looking guidance because union_type doesn't match the actual conditioning image - if auto guesses wrong, set it explicitly to match what you fed in. Second: running at the old 1.0 default strength on a modern union model tends to overcook the result compared to what that checkpoint's card actually recommends - check the model card for its suggested range before assuming your prompt is the problem. And if you're chasing a condition type that flat-out doesn't exist on your target architecture - segmentation or normal maps on anything post-Flux, for instance - that's not a setup mistake, those conditions genuinely never got rebuilt past SDXL; you'd need to fall back to an SDXL union for that specific condition and carry the result forward.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | PIPE_LINE | — | |
| image | IMAGE | — | |
| control_net_name | COMBO | 0 options: | |
| control_netopt | CONTROL_NET | — | |
| strengthopt | FLOAT | 1.000–10 | — |
| start_percentopt | FLOAT | 0.0000–1 | — |
| end_percentopt | FLOAT | 1.0000–1 | — |
| scale_soft_weightsopt | FLOAT | 1.0000–1 | — |
| union_typeopt | COMBO | 9 options: auto, openpose, depth, hed/pidi/scribble/ted, canny/lineart/anime_lineart/mlsd, normal, +3 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE_LINE | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |