Sampler Selector (Image Saver)
Pick a sampler once, get both the value and its name
- sampler
- sampler_name
Small node, specific job: you pick a sampler from the dropdown and it hands you two things - the sampler value your KSampler wants, and the sampler name as a plain string your Image Saver wants. That dual output is the whole trick. Stock ComfyUI keeps the sampler locked inside the KSampler widget, where the metadata nodes can't read it. Sampler Selector pulls it out so one choice drives both the actual sampling and the recorded metadata, and they can't drift apart.
It's part of the pack's "define a value once, feed it to the sampler and the saver" pattern. Niche on its own, useful when you care about your metadata being honest.
How it works
You choose from the full list of 44 ComfyUI samplers - euler, euler_ancestral, dpmpp_2m, dpmpp_2m_sde, dpmpp_3m_sde, res_multistep, uni_pc, ddim, and the rest. The node emits that choice twice: once as the typed sampler value that plugs into a KSampler's sampler input, and once as sampler_name, a string, that plugs into an Image Saver / Image Saver Metadata sampler_name field. Same selection, two shapes, so the image records exactly the sampler that made it.
Why two outputs instead of one? Because a KSampler and a metadata field speak different languages. The sampler input wants a real, validated sampler token that ComfyUI can actually run; the saver just wants the human-readable name to write into the A1111 string. Selecting in one place and emitting both forms is the only clean way to keep the run and its record in sync.
The inputs and outputs that matter
- sampler_name (the input widget) - the dropdown, all 44 samplers.
Outputs:
- sampler - the real sampler value → your KSampler.
- sampler_name - the string → your saver's metadata.
Installing it
ComfyUI Manager: search ComfyUI Image Saver, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/alexopus/ComfyUI-Image-Saver
cd ComfyUI-Image-Saver
pip install -r requirements.txt
Restart and hard-refresh. No downloads.
Where people get tripped up
Honestly, most people don't need this as a separate node - if you're already using Input Parameters, the sampler is bundled in there and this is redundant. Sampler Selector earns its place when you want to route the sampler independently, or feed several samplers around a graph without dragging the other parameters along.
One real point of confusion: the two outputs aren't interchangeable. The sampler output is a value ComfyUI understands as a sampler; the sampler_name output is just text. Wire the value to the KSampler and the string to the saver - swap them and you'll get a type-mismatch error or garbage metadata. And which sampler you should pick is model-dependent: dpmpp_2m with a Karras schedule is the classic SD 1.5 / SDXL default, but on flow-matching models (Flux, Z-Image) people lean on euler, euler_ancestral or dpmpp_sde instead. The selector doesn't judge - it just records faithfully whatever you chose.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| sampler_name | COMBO | sampler (Comfy's standard) |
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 | sampler (SAMPLERS) |
| sampler_name | STRING | sampler name (STRING) |