Sampler Name (obvpm)
Pick euler once, wire it to five samplers
- sampler
- sampler_name
Your sampler choice is a widget on the sampler node. That's a problem the moment you have more than one sampler: comparing euler against dpmpp_2m means editing the same dropdown in two places, and it means the choice can't travel - it can't go in a preset, it can't be switched, it can't be printed into a filename so you remember what made the image.
Sampler Name hoists that dropdown onto a wire. Nothing more, nothing less.
What it does
You pick a sampler from a list, and the node outputs it. Two outputs, and the difference between them matters:
sampler- typed as the sampler list itself, so it plugs straight into anysampler_namecombo (KSampler, KSamplerSelect, and anything else that offers the standard list).sampler_name- the same choice as a plainSTRING, for bundling, for a caption, for a filename prefix, for a note node.
The list you pick from is read live from your install, so whatever samplers you have - the 44 that ship with a modern ComfyUI, plus any a pack registers - show up here.
Why you'd want it
One choice, many consumers. Two samplers in one workflow comparing the same solver, or a base pass and a refine pass that should stay matched. Set it once.
Comparisons you don't fumble. Flip this one widget and every sampler follows. Do the same thing by hand across four nodes and you will eventually run a comparison where one of them didn't get updated, which is how you end up staring at two identical images wondering whether the sampler even matters.
Presets and bundles. Because it's a value on a wire, it can go into a bundle or sit behind a case switch. That's the same reason the pack ships Lora Name, Scheduler Name and Value Presets: a generation's settings become data you can swap as a set instead of twelve widgets to hand-edit.
A word on what to actually pick
Since the node puts the whole list in front of you, it's worth knowing what's in it. DPM++ 2M Karras was the safe default for years - for SD 1.5 and SDXL checkpoints it still is - but it's no longer the general answer. On the flow-matching models that dominate now, euler, euler_a or dpmpp_sde on a beta, simple, linear_quadratic or sgm_uniform schedule is where the sensible settings live, and res_multistep in the list above is one of the flow-model solvers that came in from that shift.
If you're chasing the last few percent on a modern model, the tuning hasn't stopped - it moved into RES4LYF, whose high-order solvers (res_2m, res_2s, res_3s) plug into the same combo. That pack's arrival in your workflow is one sampler substitution; pair it with this node and switching between "stock euler" and "res_2m" is a dropdown on the far side of the canvas from the sampler it feeds.
The other thing worth saying: this node chooses the sampler, and nothing else. Steps, CFG, shift and denoise still live on the sampler node. Routing the name doesn't route the settings, and a preset that carries a sampler without carrying its step count is half a preset.
The compatibility trick
The socket names deliberately mirror the nodes this replaces (the pack credits ComfyUI-Image-Saver's Sampler Selector as the design it's reimplementing). That's not vanity: a widget converted to an input is re-bound by name when a workflow loads, so keeping sampler_name as the socket name means an existing graph can swap the node type and keep its wires.
Install
Manager, search comfyui-obvpm. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/chanon/comfyui-obvpm
Restart ComfyUI. No Python dependencies to install - the pack's pyproject.toml declares none, deliberately, because everything it imports already comes with ComfyUI - and no model files. Every node in the pack has an (obvpm) suffix in the menu, so obvpm in the node search box is the index.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| sampler_name | COMBO | Any sampler this ComfyUI knows about. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| sampler | 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 | The choice, typed to match a sampler_name combo. |
| sampler_name | STRING | The same choice as a plain string. |