Nodes/ComfyUI Easy Use/XY Inputs: Sampler/Scheduler //EasyUse
ComfyUI Node Runs on cloud

XY Inputs: Sampler/Scheduler //EasyUse

Sampler/Scheduler (ComfyUI Easy Use) — build a sampler comparison grid

By yolain·Created 3 years ago·Updated 8 days ago· 2,633
XY Inputs: Sampler/Scheduler //EasyUse
    • X or Y
    target_parameter
    input_count1
    sampler_1
    scheduler_1
    sampler_2
    scheduler_2
    sampler_3
    scheduler_3
    sampler_4
    scheduler_4
    sampler_5
    scheduler_5
    sampler_6
    scheduler_6
    sampler_7
    scheduler_7
    sampler_8
    scheduler_8
    sampler_9
    scheduler_9
    sampler_10
    scheduler_10
    sampler_11
    scheduler_11
    sampler_12
    scheduler_12
    sampler_13
    scheduler_13
    sampler_14
    scheduler_14
    sampler_15
    scheduler_15
    sampler_16
    scheduler_16
    sampler_17
    scheduler_17
    sampler_18
    scheduler_18
    sampler_19
    scheduler_19
    sampler_20
    scheduler_20
    sampler_21
    scheduler_21
    sampler_22
    scheduler_22
    sampler_23
    scheduler_23
    sampler_24
    scheduler_24
    sampler_25
    scheduler_25
    sampler_26
    scheduler_26
    sampler_27
    scheduler_27
    sampler_28
    scheduler_28
    sampler_29
    scheduler_29
    sampler_30
    scheduler_30

    This is the node that answers "which sampler and scheduler should I actually use for this model?" - by generating the grid and looking, instead of guessing. You hand it a list of samplers and schedulers, plug it into Easy Use's XY Plot, and it renders the same seed and prompt once per combination into a labeled sheet. The systematic sampler sweep, packaged as one node.

    It's part of ComfyUI Easy Use by yolain, an efficiency pack built on the older TinyTerra nodes that extends ComfyUI's XY-plotting well past stock. This node is a feeder - it doesn't plot anything itself. It builds one axis of a grid.

    Why you'd reach for it

    ComfyUI's dropdown has grown past 60 samplers and 16 schedulers, and "which one" has no single answer anymore. The honest guidance is to take the pair off your model card first. But when the card is silent, or you're chasing the last few percent, a sweep is how the community decides - grid every reasonable option on a fixed seed and read the winners off. That's the format this node produces.

    One caveat before you burn the compute: a sweep is a shortlist, not a verdict. The "best" pair shifts with subject matter - a favorite euler + beta57 for photoreal loses to res_2m + simple for anime, same run. Read a grid as "the five that don't fall apart," not "cell 14 is correct."

    How it works

    Three things drive it:

    • target_parameter - pick sampler, scheduler, or sampler & scheduler; this decides what varies along the axis. "sampler & scheduler" pairs them, so each cell is a specific sampler with a specific scheduler rather than a full cross.
    • input_count - how many entries to compare, 1 to 30. This reveals that many sampler_N / scheduler_N slots.
    • sampler_1…30 and scheduler_1…30 - the actual choices. Samplers offer the full ComfyUI list (euler, euler_ancestral, dpm_2, heun, lms, and dozens more); schedulers offer simple, sgm_uniform, karras, exponential, beta, normal, linear_quadratic, kl_optimal and more, plus None. None is your "leave this slot empty," handy when you set input_count high.

    The single output is X or Y (type X_Y). It plugs into the X or the Y input of the Easy Use XY Plot node. Feed one into X and another XY-Inputs node into Y for a full 2D grid; feed just one for a single row or column.

    The part the grid won't tell you

    The node renders images; it doesn't know diffusion theory. Here's what makes a grid actually readable:

    Lock your seed. The whole point is changing one variable while everything else holds. If the seed drifts, you're comparing noise, not settings - the single most important habit in all of ComfyUI debugging.

    Mind converging vs ancestral samplers. Converging ones (euler, dpm++ 2M, ddim, unipc) settle on a stable image, so their cells are honest comparisons. Ancestral ones (euler_ancestral, dpm++ sde) inject fresh noise every step and never settle - their cells differ partly because of the sampler and partly because they're just a different image. Fine to include, just know what you're looking at.

    Don't waste cells on Karras or exponential on a flow-matching model. On Flux, Z-Image, Klein, Anima and other rectified-flow models, karras and exponential don't merely underperform - they fail across the board, because those models train on a near-straight trajectory that an aggressively reshaped noise schedule distorts rather than corrects. On SD 1.5 / SDXL and their finetunes (Illustrious, Pony, NoobAI) it's the opposite - karras is the classic default and belongs in the sweep. Know your checkpoint's architecture family before you fill the slots.

    Watch the combinatorics

    input_count goes to 30. A 30-by-30 grid is 900 generations of the same prompt - a long coffee break, most of it wasted on combinations you could rule out on paper. Start narrow, five or six candidates that suit your model, and widen only if the winners are close. Confirm a shortlist; don't brute-force the dropdown.

    Installing it

    It ships with the whole pack:

    • ComfyUI Manager - search ComfyUI Easy Use (or ComfyUI-Easy-Use), install, restart.
    • Manual - cd ComfyUI/custom_nodes && git clone https://github.com/yolain/ComfyUI-Easy-Use, install requirements (install.bat on Windows, or pip install -r requirements.txt), restart.

    No model downloads. It isn't standalone: you need the Easy Use XY Plot node to plug into, and a real generation pipeline (an easy pre-sampling / kSampler setup) behind that. Drop it on the canvas alone and nothing happens - it's an input, not a workflow.

    If nothing renders

    The usual culprits: the X or Y output isn't connected to the XY Plot node, or the pipeline downstream of XY Plot isn't wired to a sampler at all. Leftover slots default to None, which is fine, but a grid of all-None produces nothing. And if a whole column comes out fried garbage, you probably swept karras/exponential onto a flow-matching model - the theory biting, not a bug.

    CategoryEasyUse/XY Inputs

    Inputs (62)

    NameTypeDefaultDescription
    target_parameterCOMBO3 options: sampler, scheduler, sampler & scheduler
    input_countINT11–30
    sampler_1COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_1COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_2COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_2COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_3COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_3COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_4COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_4COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_5COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_5COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_6COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_6COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_7COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_7COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_8COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_8COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_9COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_9COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_10COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_10COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_11COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_11COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_12COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_12COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_13COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_13COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_14COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_14COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_15COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_15COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_16COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_16COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_17COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_17COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_18COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_18COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_19COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_19COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_20COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_20COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_21COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_21COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_22COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_22COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_23COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_23COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_24COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_24COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_25COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_25COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_26COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_26COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_27COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_27COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_28COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_28COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_29COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_29COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4
    sampler_30COMBO45 options: None, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    scheduler_30COMBO10 options: None, simple, sgm_uniform, karras, exponential, ddim_uniform, +4

    Outputs (1)

    NameTypeDescription
    X or YX_Y