Nodes/ComfyUI_Fill-Nodes/FL Sampler String XYZ
ComfyUI Node

FL Sampler String XYZ

A checkbox list of every sampler, for building sweep strings

By filliptm·Created 3 years ago·Updated about 17 hours ago· 628
FL Sampler String XYZ
    • STRING
    eulerfalse
    euler_cfg_ppfalse
    euler_ancestralfalse
    euler_ancestral_cfg_ppfalse
    heunfalse
    heunpp2false
    exp_heun_2_x0false
    exp_heun_2_x0_sdefalse
    dpm_2false
    dpm_2_ancestralfalse
    lmsfalse
    dpm_fastfalse
    dpm_adaptivefalse
    dpmpp_2s_ancestralfalse
    dpmpp_2s_ancestral_cfg_ppfalse
    dpmpp_sdefalse
    dpmpp_sde_gpufalse
    dpmpp_2mfalse
    dpmpp_2m_cfg_ppfalse
    dpmpp_2m_sdefalse
    dpmpp_2m_sde_gpufalse
    dpmpp_2m_sde_heunfalse
    dpmpp_2m_sde_heun_gpufalse
    dpmpp_3m_sdefalse
    dpmpp_3m_sde_gpufalse
    ddpmfalse
    lcmfalse
    ipndmfalse
    ipndm_vfalse
    deisfalse
    res_multistepfalse
    res_multistep_cfg_ppfalse
    res_multistep_ancestralfalse
    res_multistep_ancestral_cfg_ppfalse
    gradient_estimationfalse
    gradient_estimation_cfg_ppfalse
    er_sdefalse
    seeds_2false
    seeds_3false
    sa_solverfalse
    sa_solver_pecefalse
    ddimfalse
    uni_pcfalse
    uni_pc_bh2false

    Anyone who's set up a sampler-comparison grid knows the annoying part isn't the sampling, it's typing out "euler,euler_ancestral,dpmpp_2m,dpmpp_2m_sde,..." by hand and hoping you didn't typo a name. FL_SamplerStrings, from the Fill-Nodes pack (filliptm), turns that into a checkbox list: one boolean toggle per sampler ComfyUI actually knows about, and it outputs whichever ones you ticked as a clean comma-separated string.

    A sampler is the algorithm deciding how noise gets removed at each denoising step - Euler and its ancestral variant, the DPM++ family, UniPC, DDIM, and a long tail of research variants ComfyUI has accumulated. Which one you pick trades off speed, determinism, and how "settled" the final image looks; some (Euler, DPM++ 2M) converge to a stable result as you add steps, others (the ancestral/SDE ones) keep injecting noise and never fully settle, which reads as more creative variation but less reproducibility.

    How it works

    The list of toggles is dynamically populated from comfy.samplers.KSampler.SAMPLERS - the same list your regular KSampler node's dropdown pulls from. That means when a new ComfyUI release adds a sampler, it just shows up here automatically; the node isn't hardcoding a stale list. Every toggle defaults to off. Whichever ones you switch on get joined into a single comma-separated string.

    The inputs and outputs that matter

    There's nothing to "explain" per input in the usual sense - it's ~44 identical booleans, one per sampler name (euler, dpmpp_2m, dpmpp_sde_gpu, res_multistep, uni_pc, and so on), all defaulting to false. You just tick the ones you want included. The single output is a STRING: your selections joined by commas, in the order the sampler list defines them.

    That string is built to feed batch/sweep tooling elsewhere in the pack - most obviously FL_KSamplerXYZPlot, which takes exactly this kind of comma-separated sampler list as one axis of a parameter-sweep grid.

    How to install it

    ComfyUI Manager: search "Fill-Nodes" and install, restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
    pip install -r ComfyUI_Fill-Nodes/requirements.txt
    

    This node has no dependency of its own beyond ComfyUI itself - it just reads the sampler registry that's already there - but restarting is still required for the node to appear.

    Common issues & troubleshooting

    A sampler you expect isn't listed. It's reading straight from your ComfyUI installation's own sampler registry, so if a sampler is missing here, it's genuinely missing from your ComfyUI version too - not this node's fault. Update ComfyUI core if you need something newer.

    Nothing selected produces an empty string. If every toggle is off, the output is just "". Downstream nodes expecting a non-empty sampler list (like an XYZ plot axis) will error or produce a degenerate one-item sweep - tick at least one box.

    Order confusion. The output order follows the sampler registry's own order, not the order you clicked them. If a downstream node cares about sequence (some sweep visualizations label axes in the order given), don't assume it matches your click order - check the actual string via FL_ShowText before trusting it.

    Category🏵️Fill Nodes/Ksamplers

    Inputs (44)

    NameTypeDefaultDescription
    eulerBOOLEANfalse
    euler_cfg_ppBOOLEANfalse
    euler_ancestralBOOLEANfalse
    euler_ancestral_cfg_ppBOOLEANfalse
    heunBOOLEANfalse
    heunpp2BOOLEANfalse
    exp_heun_2_x0BOOLEANfalse
    exp_heun_2_x0_sdeBOOLEANfalse
    dpm_2BOOLEANfalse
    dpm_2_ancestralBOOLEANfalse
    lmsBOOLEANfalse
    dpm_fastBOOLEANfalse
    dpm_adaptiveBOOLEANfalse
    dpmpp_2s_ancestralBOOLEANfalse
    dpmpp_2s_ancestral_cfg_ppBOOLEANfalse
    dpmpp_sdeBOOLEANfalse
    dpmpp_sde_gpuBOOLEANfalse
    dpmpp_2mBOOLEANfalse
    dpmpp_2m_cfg_ppBOOLEANfalse
    dpmpp_2m_sdeBOOLEANfalse
    dpmpp_2m_sde_gpuBOOLEANfalse
    dpmpp_2m_sde_heunBOOLEANfalse
    dpmpp_2m_sde_heun_gpuBOOLEANfalse
    dpmpp_3m_sdeBOOLEANfalse
    dpmpp_3m_sde_gpuBOOLEANfalse
    ddpmBOOLEANfalse
    lcmBOOLEANfalse
    ipndmBOOLEANfalse
    ipndm_vBOOLEANfalse
    deisBOOLEANfalse
    res_multistepBOOLEANfalse
    res_multistep_cfg_ppBOOLEANfalse
    res_multistep_ancestralBOOLEANfalse
    res_multistep_ancestral_cfg_ppBOOLEANfalse
    gradient_estimationBOOLEANfalse
    gradient_estimation_cfg_ppBOOLEANfalse
    er_sdeBOOLEANfalse
    seeds_2BOOLEANfalse
    seeds_3BOOLEANfalse
    sa_solverBOOLEANfalse
    sa_solver_peceBOOLEANfalse
    ddimBOOLEANfalse
    uni_pcBOOLEANfalse
    uni_pc_bh2BOOLEANfalse

    Outputs (1)

    NameTypeDescription
    STRINGSTRING