Nodes/comfyui-colorfix-v3/Ultimate Multi-ControlNet Stack
ComfyUI Node

Ultimate Multi-ControlNet Stack

Three ControlNets in one node, each with its own mode

By ihorpankin·Created 6 months ago·Updated 6 months ago· 6
Ultimate Multi-ControlNet Stack
  • controlnet_1
  • image_1
  • controlnet_2
  • image_2
  • controlnet_3
  • image_3
  • controlnet_stack
  • controlnet_stack
switch_1Off
strength_11.00
start_percent_10.000
end_percent_11.000
control_mode_1Balanced
switch_2Off
strength_21.00
start_percent_20.000
end_percent_21.000
control_mode_2Balanced
switch_3Off
strength_31.00
start_percent_30.000
end_percent_31.000
control_mode_3Balanced

Multi-ControlNet is one of the most powerful things in the toolkit - canny for edges plus depth for layout, tile plus canny for a detail-preserving upscale. The catch in ComfyUI is the graph: every unit means its own apply node, and pretty soon you're untangling wires instead of tuning weights. This node, "Ultimate Multi-ControlNet Stack" from the colorfix-v3 pack, is the fix: a single node with up to three ControlNet slots, each with its own switch, strength, timing, and control mode. One wire out.

How it works

The node builds a CONTROLNET_STACK - a list of entries, each (controlnet, image, strength, start_percent, end_percent, control_mode). Any slot whose switch is Off (or that has no controlnet/image attached) is skipped. You then feed the stack into the pack's apply node - FluxMultiControlNetApply for Flux, the SD multi-apply node for SD/SDXL - which walks the list and chains every active entry onto your conditioning. Stacks can even be chained: feed one stack's output into the controlnet_stack input of another to go past three.

The clever bit: the stack stores each slot's control mode as a string, and the apply node that consumes it decides what that string means. The Flux apply interprets it as decay/boost layer scaling; the SD apply uses A1111's soft injection + cfg injection. Build the stack once, and it works on either side.

The inputs that matter

  • switch_1 - defaults to Off. Slot 1 is required (you must at least wire it), but you still have to flip the switch On for it to do anything.
  • controlnet_1 and image_1 - the model and its condition. For tile work the image is the reference you're upscaling.
  • strength_1 - 0–10, default 1.0. For tile + tiled diffusion, 0.7–0.9 is the usual starting band.
  • start_percent_1 / end_percent_1 - denoising fractions for when this slot applies.
  • control_mode_1 - Balanced / My prompt is more important / ControlNet is more important.

Slots 2 and 3 are entirely optional - same six fields each. The controlnet_stack input is how you chain stacks. Output is a single controlnet_stack, into the apply node.

Install

Pure Python, no requirements.txt, no models:

cd ComfyUI/custom_nodes
git clone https://github.com/ihorpankin/comfyui-colorfix-v3.git

Restart ComfyUI; it's under colorfix-v3. ComfyUI Manager: search "comfyui-colorfix-v3".

Where people get burned

Two classic traps. First, slots default to Off - you wire up slot 2, connect everything, run, and nothing happens because you never flipped the switch. It's the most common complaint with this node and it's a five-second fix. Second, CONTROLNET_STACK is a pack-specific type: stock ComfyUI apply nodes won't accept it, so the stack is useless until you pair it with one of this pack's apply nodes. And a gentle reminder - control modes only really bite at CFG above 1.0 on the SD side, so if you're tuning modes and seeing no difference, check your CFG first.

Categorycolorfix-v3

Inputs (22)

NameTypeDefaultDescription
switch_1COMBOOff2 options: Off, On
controlnet_1CONTROL_NET
image_1IMAGE
strength_1FLOAT1.000–10ControlNet influence strength for slot 1.
start_percent_1FLOAT0.0000–1Denoising fraction to START applying slot 1.
end_percent_1FLOAT1.0000–1Denoising fraction to STOP applying slot 1.
control_mode_1COMBOBalancedA1111-style control mode for slot 1.
switch_2optCOMBOOff2 options: Off, On
controlnet_2optCONTROL_NET
image_2optIMAGE
strength_2optFLOAT1.000–10ControlNet influence strength for slot 2.
start_percent_2optFLOAT0.0000–1Denoising fraction to START applying slot 2.
end_percent_2optFLOAT1.0000–1Denoising fraction to STOP applying slot 2.
control_mode_2optCOMBOBalancedA1111-style control mode for slot 2.
switch_3optCOMBOOff2 options: Off, On
controlnet_3optCONTROL_NET
image_3optIMAGE
strength_3optFLOAT1.000–10ControlNet influence strength for slot 3.
start_percent_3optFLOAT0.0000–1Denoising fraction to START applying slot 3.
end_percent_3optFLOAT1.0000–1Denoising fraction to STOP applying slot 3.
control_mode_3optCOMBOBalancedA1111-style control mode for slot 3.
controlnet_stackoptCONTROLNET_STACK

Outputs (1)

NameTypeDescription
controlnet_stackCONTROLNET_STACK