Sampler Selector
Stop typing 'dpmpp_2m' into every KSampler
- sampler_name
The Sampler Selector is the fix for the most annoying small habit in ComfyUI: changing the sampler in a big workflow means clicking into every single KSampler on the canvas. This node gives you one dropdown that feeds the same sampler name to as many KSamplers as you want. Change it in one place, the whole graph follows.
The pattern matters more than the node. Once your workflow has two KSamplers - a hires-fix second pass, a regional reroll, a batch of checkpoints you're comparing with identical inputs - the last thing you want is a sampler mismatch between passes. Someone on r/comfyui hit exactly this in 2023: they wanted one sampler input driving eight outputs and couldn't find a node that would connect. The community answer back then was "use a Primitive." The Sampler Selector is that primitive, done properly.
How it works
Under the hood it's almost boring, and that's a compliment. The node pulls its options directly from ComfyUI's own comfy.samplers.KSampler.SAMPLERS list, so the dropdown isn't a frozen snapshot - when ComfyUI adds samplers (it has, repeatedly: seeds_2, seeds_3, sa_solver, gradient_estimation and the whole _cfg_pp family all landed after this pack shipped), they show up here after you update ComfyUI. It returns the string you picked, and you wire that string into the sampler_name input on any KSampler. It does no math, calls no API, needs no key.
The one input is sampler_name, defaulting to euler, with 44 choices covering every sampler ComfyUI currently ships: euler, euler_ancestral, dpmpp_2m, dpmpp_2m_sde, dpmpp_sde, ddim, uni_pc, and the rest. The single output is also called sampler_name.
Wiring it
Here's the gotcha that trips everyone the first time: you can't just drag onto a KSampler's widget. Right-click the KSampler's sampler_name and choose Convert sampler_name to input, which turns the widget into a connection port - then drag the Selector's output there. The output type is the COMBO list itself, so once the port exists the connection just works. Do the same for a second KSampler and both now follow the one dropdown. The moment you connect the first one you'll understand why every large workflow shares these.
What to actually pick
The node won't choose for you. For SD 1.5 and SDXL, dpmpp_2m with a Karras scheduler is the safe all-rounder; euler_ancestral or dpmpp_sde for creative variation. For Flux, you want euler - and whatever you do, don't pair it with the Karras scheduler. Distilled models (Turbo, Lightning) generally want euler too. If your model card names a sampler, trust it over any table.
Install
The easy way: ComfyUI Manager → Install Custom Nodes → search "ComfyUI_Selectors". The manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/ComfyAssets/ComfyUI_Selectors.git
Then restart ComfyUI. There are no model downloads and no runtime pip dependencies - the requirements-dev.txt in the repo is only for the developers' test tooling. Nodes land under the comfyassets/ menu, in the Sampling submenu.
If the node doesn't appear after install, you didn't restart ComfyUI - it's a hard restart, not a refresh. If the output won't connect, check that you actually converted the destination widget to an input first; the most common failure is dragging onto a widget that's still a widget. And note this selector handles the sampler half only - for the scheduler you need the sibling Scheduler Selector, and the two together are what actually replaces a hand-typed "DPM++ 2M Karras".
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| sampler_name | COMBO | euler | The sampling algorithm to use for generation |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sampler_name | euler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2 | — |