Diffusers Apply ControlNet
Strength and step-range control for the diffusers path
- diffusers_control_net
- image
- diffusers_control
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) andend_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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| diffusers_control_net | Diffuers_CONTROL_NET | — | |
| image | IMAGE | — | |
| strength | FLOAT | 1.000–10 | — |
| start_percent | FLOAT | 0.0000–1 | — |
| end_percent | FLOAT | 1.0000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| diffusers_control | Diffusers_Control | — |