Nodes/ComfyUI_Anytext/Diffusers Apply ControlNet
ComfyUI Node

Diffusers Apply ControlNet

Strength and step-range control for the diffusers path

By zmwv823·Created 2 years ago·Updated about a year ago· 103
Diffusers Apply ControlNet
  • diffusers_control_net
  • image
  • diffusers_control
strength1.00
start_percent0.000
end_percent1.000

This is the second half of a two-node handshake. The pack's Diffusers Load ControlNet node loads the model; this node applies it - takes your hint image, wires it to the loaded ControlNet, and produces the conditioning that the pack's diffusers sampler actually uses. If you've ever used Comfy's native Apply ControlNet (Advanced), you already understand this node, because it's the same three dials in a diffusers wrapper. It exists so the ComfyUI_Anytext pipelines (JoyType especially) can run their ControlNet conditioning through the HuggingFace diffusers library instead of Comfy's native path.

The three knobs, and what they actually do

Everything here maps onto the ControlNet parameters that matter, so this is worth getting right once:

  • strength (default 1.0, range 0–10) - how hard the ControlNet pushes the generation toward your hint. The KB's rule of thumb from the SD era holds: roughly 0.3–0.7 for loose guidance, 0.8–1.2 for strict adherence, 1.0 as the anchor. The 0–10 ceiling is theoretical headroom; nobody sane runs a canny map at 8. For text work you usually want the high end, because the whole point is putting letters exactly where the glyph map says - a weak ControlNet gives you mushy, drifting characters.
  • start_percent (default 0.0) and end_percent (default 1.0) - when during denoising the condition applies, as a fraction of the sampling run. Default is the full 0→1, i.e. the ControlNet guides every step. The classic trick, and the one the community treats as the parameter that matters most, is to release the condition early: start at 0.0, end around 0.5, so the ControlNet locks composition in the first half and the model fills in its own detail after. For precise text you'll generally hold it longer than you would for a loose pose, since letting go too early lets the letters melt.

The inputs feeding it are diffusers_control_net (straight from the loader node) and image - your conditioning map. In the JoyType flow that image is a canny edge map of your rendered glyphs, so pair this with the pack's Common Cv2 Canny node upstream. The single output, diffusers_control, carries the applied conditioning onward into the pack's generation nodes.

Installing it

It ships inside the pack, so there's nothing separate to grab. ComfyUI Manager, search ComfyUI_Anytext, install, restart - or clone it:

cd ComfyUI/custom_nodes
git clone https://github.com/zmwv823/ComfyUI_Anytext

Restart, and the node lives under the UL Group / Diffusers Common category. You won't use it alone; it's always downstream of the Diffusers Load ControlNet node and upstream of the sampler.

Where people get burned

Two things. First, mismatched hint size - a canny map that isn't the same resolution as your generation latent gives you stretched or offset structure, and for text that reads as slightly wrong letter placement. Keep the hint map and your target size aligned. Second, over-cranking strength. Because the slider goes to 10, people assume "more is better" when the letters look weak, and instead they bake in a hard-edged, posterized mess. If your text is drifting, the fix is usually a cleaner glyph render and a longer end_percent, not a strength of 5.

And the honest frame: this is a competent Advanced-Apply clone for the pack's diffusers pipeline. It's not a reason to switch away from Comfy's native ControlNet stack for ordinary work - reach for it when you're already committed to the JoyType/diffusers path and need real strength and step-range control rather than the pack's simpler nodes.

CategoryUL Group/Diffusers Common

Inputs (5)

NameTypeDefaultDescription
diffusers_control_netDiffuers_CONTROL_NET
imageIMAGE
strengthFLOAT1.000–10
start_percentFLOAT0.0000–1
end_percentFLOAT1.0000–1

Outputs (1)

NameTypeDescription
diffusers_controlDiffusers_Control