Nodes/Comfyroll Studio/πŸ•ΉοΈ CR Multi-ControlNet Stack
ComfyUI Node Runs on cloud

πŸ•ΉοΈ CR Multi-ControlNet Stack

Load up to three ControlNets in one node

By Suzie1Β·Created 3 years agoΒ·Updated 2 years agoΒ· 1,296
πŸ•ΉοΈ CR Multi-ControlNet Stack
  • image_1
  • image_2
  • image_3
  • controlnet_stack
  • CONTROLNET_STACK
  • show_help
β—„switch_1β–Ύβ–Ί
β—„controlnet_1β–Ύβ–Ί
β—„controlnet_strength_11.00β–Ί
β—„start_percent_10.000β–Ί
β—„end_percent_11.000β–Ί
β—„switch_2β–Ύβ–Ί
β—„controlnet_2β–Ύβ–Ί
β—„controlnet_strength_21.00β–Ί
β—„start_percent_20.000β–Ί
β—„end_percent_21.000β–Ί
β—„switch_3β–Ύβ–Ί
β—„controlnet_3β–Ύβ–Ί
β—„controlnet_strength_31.00β–Ί
β—„start_percent_30.000β–Ί
β—„end_percent_31.000β–Ί

If you've ever built a graph with three separate "Apply ControlNet" nodes chained one after another, each with its own strength and start/end sliders eating up canvas space, this is the node that tidies that up. CR Multi-ControlNet Stack lets you configure up to three ControlNets - model, image, strength, and the step range each one is active for - inside a single box, then hand the whole bundle off to be applied in one shot.

What it's for

Multi-ControlNet is a real, well-worn technique: canny + depth for edge structure plus spatial layout, openpose + depth for a posed figure that respects scene depth, lineart + reference for structure plus style. Each unit runs independently with its own weight and its own window of the denoising process, and the model blends all the active conditions together. This node is Comfyroll's way of building that stack without a wall of individual ControlNet loaders cluttering your workflow.

How it works

It doesn't apply anything by itself - it's a builder. You configure up to three "slots," each with its own on/off switch, ControlNet model, strength, start percent, end percent, and the preprocessed condition image for that slot. The node packages all of that into a single CONTROLNET_STACK value, which gets consumed downstream by an apply node (Comfyroll ships "CR Apply Multi-ControlNet Stack" for exactly this) that walks the list and applies each active unit to your conditioning in turn.

Inputs and outputs that matter

Everything is optional and repeated three times (suffix _1, _2, _3):

  • switch_N (Off/On) - toggle a slot without unplugging it. Handy for A/B testing whether the third ControlNet is actually helping.
  • controlnet_N - pick the ControlNet checkpoint for that slot from your installed models.
  • controlnet_strength_N (default 1, range -10 to 10) - how hard that slot pushes. On SD-era ControlNets, 0.3–0.7 is loose guidance, 0.8–1.2 is strict adherence; the old default of 1.0 is a reasonable starting point.
  • start_percent_N / end_percent_N (0–1, default 0/1) - the window of the sampling process where this slot is active. This is the parameter that actually matters most in practice: releasing a condition once composition has formed (say, ending at 0.5) lets the model add its own detail in later steps instead of fighting the condition the whole way through.
  • image_N - the preprocessed condition image for that slot (canny edges, a depth map, an OpenPose skeleton - whatever that ControlNet expects).
  • controlnet_stack (optional, CONTROL_NET_STACK) - feed in an existing stack to extend beyond three slots by chaining another Multi-ControlNet Stack node after this one.

Outputs: CONTROLNET_STACK goes to the apply node, and show_help is a string link to this node's page on Comfyroll's wiki - every node in this pack has one, and given how many nodes the pack ships, it's worth wiring to a Note node the first time you use it.

How to install it

Search "Comfyroll Studio" in ComfyUI Manager and install, or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes.git

Restart ComfyUI. No models ship with the pack and no extra Python dependencies are needed for this node - you still need to have your own ControlNet checkpoints and preprocessors (canny, depth, OpenPose, etc.) installed separately, same as any ControlNet workflow.

Common issues & troubleshooting

The controlnet_N dropdown only shows "None." That's not a bug in this node - it means ComfyUI can't find any ControlNet checkpoints in your models/controlnet folder. Download one and refresh.

One node type failing takes the whole pack down. Comfyroll Studio is one big Python package, and a reported failure mode on Windows installs is the entire pack refusing to load with a NameError on an unrelated node class (people have hit this on CR_HalftoneGrid, nothing to do with ControlNet at all) - usually from an interrupted git clone or a stale ComfyUI Manager cache. If none of the CR nodes show up, delete the ComfyUI_Comfyroll_CustomNodes folder and re-clone clean rather than debugging around it.

This is a classic-ControlNet-checkpoint node. It expects the older per-condition ControlNet files (SD 1.5 / SDXL style), not the newer union ControlNets some Flux/Qwen/Z-Image workflows use - those are usually wired in with different loader nodes. If you're on a modern base model, check what format your ControlNet actually is before assuming this node is broken.

Strength doing nothing visible. Check the switch_N for that slot is actually "On" - it's easy to configure a slot fully and forget to flip the switch, and the node will silently skip it.

Category🧩 Comfyroll Studio/✨ Essential/πŸ•ΉοΈ ControlNet

Inputs (19)

NameTypeDefaultDescription
switch_1optCOMBO2 options: Off, On
controlnet_1optCOMBO1 options: None
controlnet_strength_1optFLOAT1.00-10–10β€”
start_percent_1optFLOAT0.0000–1β€”
end_percent_1optFLOAT1.0000–1β€”
switch_2optCOMBO2 options: Off, On
controlnet_2optCOMBO1 options: None
controlnet_strength_2optFLOAT1.00-10–10β€”
start_percent_2optFLOAT0.0000–1β€”
end_percent_2optFLOAT1.0000–1β€”
switch_3optCOMBO2 options: Off, On
controlnet_3optCOMBO1 options: None
controlnet_strength_3optFLOAT1.00-10–10β€”
start_percent_3optFLOAT0.0000–1β€”
end_percent_3optFLOAT1.0000–1β€”
image_1optIMAGEβ€”
image_2optIMAGEβ€”
image_3optIMAGEβ€”
controlnet_stackoptCONTROL_NET_STACKβ€”

Outputs (2)

NameTypeDescription
CONTROLNET_STACKCONTROL_NET_STACKβ€”
show_helpSTRINGβ€”