ControlNet Selector (Yogurt Nodes)
Pick a ControlNet by name without a second loader in sight
- controlnet
- name
- stem
- strength
- start_percent
- end_percent
- absolute_path
The name is a small lie, and it's worth knowing before you wire it in: this node doesn't load a ControlNet. It picks one out of your models/controlnet folder and hands you its name, path, and the strength/timing settings you dialed in, all as plain outputs you feed into whatever actually applies the ControlNet downstream. It's a selector, not a loader - think of it as a single, reusable "which ControlNet + how strong" control surface for workflows that juggle several of them.
Why bother? ControlNet is how you tell a diffusion model where things go instead of just what they are - edges, depth, pose, all steered by a reference image while the prompt decides the content (the KB's ControlNet panel calls it "the biggest control unlock since SD itself"). The catch in ComfyUI is that model files and their settings end up scattered across loader nodes. If you're building a workflow where you swap ControlNets a lot, or drive strength from a scheduler or a batch node, this selector lets you keep the pick and the dials in one place and route them as data.
How it works
On the back end it's almost embarrassingly simple: the dropdown is populated from ComfyUI's own ControlNet file list (folder_paths), and the node resolves the file's absolute path for you. Nothing gets loaded into VRAM, no tensors move - which is exactly why it's fast and why it plays nice inside loops.
Inputs that matter
controlnet- dropdown of every.safetensorsinmodels/controlnet, defaultNone.strength- how hard the condition bites, default 1.0.start_percent/end_percent- the sampling window the ControlNet is active for, both 0–1.
Outputs
controlnet- a filename string, not a loaded model. This is the trap: it won't plug into a ControlNet Apply's model port. Feed it to something that takes a ControlNet by name, or useabsolute_path/stemwith a node that loads from path.name/stem- full filename and filename without extension.strength,start_percent,end_percent- your dialed-in values, echoed through so you can wire them straight into the apply node and keep one source of truth.absolute_path- resolved full path to the file (empty when set toNone).
Install
It ships in ComfyUI-YogurtNodes, so install the pack once and you get all 152 nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/yogurt7771/ComfyUI-YogurtNodes.git
cd ComfyUI-YogurtNodes
pip install -r requirements.txt
Or search "YogurtNodes" in ComfyUI Manager and restart. You'll find this node under the "Yogurt Nodes" → Models category.
Common issues
- Dropdown is empty - you have no ControlNets in
ComfyUI/models/controlnet. Drop the files there and restart; the list is read at node load. - Nothing happens when you run - expected, because the selector doesn't apply anything. Check what's consuming its outputs; the node is just plumbing.
- Strength percent confusion -
start_percent/end_percentare fractions (0–1), not steps. If you want ControlNet on for the first half of sampling, that's 0 to 0.5.
For a beginner's first workflow, honestly, the built-in ControlNetLoader is fine. Reach for this one when you start automating or juggling multiple ControlNets and want the pick + settings in one spot.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| controlnet | COMBO | None | ControlNet to use. |
| strength | FLOAT | 1.0 | — |
| start_percent | FLOAT | 0.00–1 | — |
| end_percent | FLOAT | 1.00–1 | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| controlnet | — | |
| name | STRING | — |
| stem | STRING | — |
| strength | FLOAT | — |
| start_percent | FLOAT | — |
| end_percent | FLOAT | — |
| absolute_path | STRING | — |