Nodes/ComfyUI-J/πŸ€— Diffusers Controlnet Unit
ComfyUI Node

πŸ€— Diffusers Controlnet Unit

Where a loaded model actually becomes a live condition

By JannchieΒ·Created 2 years agoΒ·Updated about a year agoΒ· 98
πŸ€— Diffusers Controlnet Unit
  • controlnet
  • image
  • controlnet unit
β—„scale1.0β–Ί
β—„start0.0β–Ί
β—„end1.0β–Ί

The Controlnet Loader gets you a model. This node is where that model turns into an actual condition - image attached, strength dialed in, timing decided. Everything the Generator node needs to actually apply ControlNet during sampling comes from here.

What it is and how it works

This is the classic ControlNet trio wrapped into one node: a conditioning image, how strongly it should push (scale), and when during denoising it's active (start/end). That's the whole mechanism ControlNet has run on since it launched - a trainable copy of parts of the network reads your condition image and nudges generation toward matching its spatial structure, while the strength and step-range values control how hard and how long that nudge lasts. Ending control partway through denoising (say, at end: 0.5) is the standard trick for locking composition early and letting the model add its own detail in the later steps, rather than fighting the condition the whole way through.

The inputs and outputs that matter

  • controlnet (required) - the DIFFUSERS_CONTROLNET from a Controlnet Loader node. This is which condition type you're applying (canny, depth, pose, whatever you picked upstream).
  • image (required) - the conditioning image itself. This has to already be preprocessed - a canny edge map, a depth map, an OpenPose skeleton - not a raw photo. This node doesn't generate that map for you.
  • scale (default 1, range 0–1, step 0.1) - how strongly the condition pulls. Worth flagging directly: this caps out at 1, unlike the 0–2 range you'll see quoted as the general ControlNet convention elsewhere. You can't push past full strength here even if a workflow you're copying calls for it.
  • start / end (defaults 0 and 1, range 0–1, step 0.1) - the denoising window where the condition is active. start: 0, end: 1 means it's on for the whole generation, which is the safe default; pulling end down to around 0.5 is the move if you want composition locked but later detail left to the model.

Output is a single controlnet unit (CONTROLNET_UNIT) - wire it straight into the Generator's controlnet_units input for a single condition, or feed it into a Controlnet Unit Stack node first if you're combining more than one.

Installing it

Part of ComfyUI-J. ComfyUI Manager: search ComfyUI-J, install, restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/Jannchie/ComfyUI-J
cd ComfyUI-J
pip install -r requirements.txt

No separate download for this specific node - the model download happens one step upstream, on the Loader.

Where people get burned

Feeding this node a raw, unprocessed photo is the single most common mistake with ControlNet in general, and this node won't stop you - it'll just produce garbage output that doesn't obviously say "wrong input type" the way a type-mismatch error would. If your ControlNet-guided generation looks nothing like your source image's structure, check that the image input is actually a preprocessed condition map and not the source photo itself.

The scale ceiling of 1 is the other real trap if you're porting a workflow from elsewhere: a recipe that says "set ControlNet weight to 1.3 for strict adherence" simply isn't reproducible through this node as written - the closest you can get is 1.0. And because this pack is a somewhat under-the-radar corner of the ecosystem rather than one of the big-name node packs, don't expect to find a large library of shared example workflows using it if you get stuck - the README's own example images (a base ControlNet pass, and the more elaborate "Change Clothes" demo combining ControlNet with reference-only and inpainting) are close to the best documentation available for how these pieces click together in practice.

CategoryJannchie

Inputs (5)

NameTypeDefaultDescription
controlnetDIFFUSERS_CONTROLNETβ€”
imageIMAGEβ€”
scaleFLOAT1.00–1β€”
startFLOAT0.00–1β€”
endFLOAT1.00–1β€”

Outputs (1)

NameTypeDescription
controlnet unitCONTROLNET_UNITβ€”