Sampler & Scheduler Selector (CRT)
Turn sampler and scheduler names into wireable strings
- sampler_name
- scheduler
Here's a ComfyUI quirk that trips up workflow-builders: the sampler and scheduler dropdowns on a KSampler are baked into the node, so you can't drive them from a variable. SamplerSchedulerSelector (CRT) is the workaround - a tiny values node that lists every sampler and scheduler ComfyUI knows about, and outputs each selection as a STRING. It exists to make those choices external, scriptable, and shareable instead of buried in a node.
Why you'd bother
Two genuinely useful patterns:
- A/B testing without touching the sampler. Put this node in a subgraph, change one dropdown, and re-queue - instead of digging into a KSampler buried mid-graph. Wire the outputs into a KSampler whose
sampler_nameandschedulerinputs accept strings (CRT's own batch samplers do, and plenty of community samplers take string inputs too). - Workflow hygiene. When you share a workflow, having sampler/scheduler decisions at the top as labeled nodes instead of nested dropdowns makes it readable. It's also how you centralize "this project always uses
euler+karras" in one place.
The mechanism
It's almost insultingly simple - it's a pass-through. The dropdown lists come straight from ComfyUI's own comfy.samplers registry (KSampler.SAMPLERS and KSampler.SCHEDULERS), so it always shows exactly what your ComfyUI build supports, no hardcoded stale lists. Select euler and karras, and you get "euler" and "karras" out as strings. That's the whole node.
The sampler list is the full 44-entry roster (euler, euler_ancestral, heun, dpm_2, lms, dpm_fast, and the rest), and the scheduler list covers the nine standard ones: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, normal, linear_quadratic, and kl_optimal.
The two outputs
sampler_name-STRING, the selected sampler.scheduler-STRING, the selected scheduler.
Both feed any input that takes a sampler/scheduler name as text. No transforms, no magic.
Gotchas
- It only outputs strings. The core
KSamplernode still has its own dropdown - you can't override it with this node's output unless the sampler node accepts string inputs (check the input socket type; CRT's batch samplers do). - Names must match exactly. If you pass a string into a node that expects a validated name, a typo or an unavailable sampler fails at execution, not at selection. The dropdown prevents that; hand-typing doesn't.
- It's a selector, not a config. There's no "remember my last choice" - the selection lives in the node, which is exactly what you want for reproducible workflows.
Install CRT-Nodes via ComfyUI Manager (CRT-Nodes) or git clone https://github.com/plugcrypt/CRT-Nodes.git into custom_nodes, install requirements.txt, restart.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| sampler_name | STRING | — |
| scheduler | STRING | — |