Nodes/ComfyUI-JNodes/Scheduler Selector + String
ComfyUI Node

Scheduler Selector + String

Pick a scheduler, get it back as text too

By JaredTherriault·Created 3 years ago·Updated about a month ago· 91
Scheduler Selector + String
    • scheduler
    • STRING
    scheduler
    mode
    seed0

    Same pattern as JNodes' other "selector with string" nodes, applied to the scheduler dropdown: pick one of simple, sgm_uniform, karras, exponential, ddim_uniform, beta, normal, linear_quadratic, or kl_optimal, and the node hands you back both the typed value for your KSampler and the same name as plain text. The text half exists for the same reason it does on the sampler and checkpoint versions: bake the scheduler you actually used into a filename or a metadata field so a batch of comparison renders doesn't turn into an unlabeled pile.

    Worth knowing before you reach for this: scheduler choice isn't a matter of taste, it's tied to what kind of model you're running, and getting it wrong is a genuine trap.

    How it works

    mode decides how the pick happens - select uses exactly the scheduler you chose (the one you want for anything you're actually shipping), seed derives a pick from the seed value, index steps through the list positionally. Two typed pins come out: the scheduler itself, ready to plug into a KSampler or SamplerCustom, and a STRING copy for anywhere text is more useful than a typed enum.

    The part actually worth understanding is what the nine choices mean. karras - from NVIDIA's EDM paper - concentrates denoising effort in the middle steps and was the safe universal default for years, which is why so many sampler names carry "Karras" as a suffix. But that default assumption inverted for newer models: it applies to DDPM-style checkpoints - SD 1.5, SDXL, and every SDXL finetune including Illustrious, NoobAI, and Pony - where a reshaped noise curve genuinely corrects a curved denoising trajectory. Flow-matching models - Flux, Z-Image, Klein, Anima - train on a near-straight trajectory instead, and a large sweep across 62 samplers and 16 schedulers on Z-Image Turbo found karras and exponential failing across the board on that architecture, not just underperforming. beta and simple are the schedulers that took over as the flow-matching workhorses, because they redistribute the denoising effort least. sgm_uniform/ddim_uniform exist mainly for models distilled specifically on those schedules. The honest rule: check the model card first, and know whether you're on a DDPM-style or flow-matching model before carrying a habit across from one to the other.

    The inputs and outputs

    • scheduler (enum, 9 choices) - the scheduler to use in select mode.
    • mode (select / seed / index) - fixed, seed-derived, or stepped selection.
    • seed (INT) - drives the pick in seed/index modes.
    • scheduler output - the typed scheduler, for a KSampler.
    • STRING output - the same value as text.

    How to install it

    Via ComfyUI Manager: Install Custom Nodes, search "JNodes", install, restart. Or by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/JaredTherriault/ComfyUI-JNodes
    pip install -r ComfyUI-JNodes/requirements.txt
    

    then restart ComfyUI. No model downloads - the list is whatever schedulers your ComfyUI core ships.

    Common issues & troubleshooting

    Karras on a flow-matching model is a real failure mode, not a subtle underperformance. If you're getting flat, oddly repetitive results on Flux, Z-Image, or a similar model and you've got karras or exponential selected, that's very likely the cause, not your prompt or your sampler. Switch to beta, simple, sgm_uniform, or linear_quadratic.

    seed/index mode silently changing your look between runs. Same trap as the other selector nodes in this family - these modes exist for sweeps and exploration, and they'll hand you a different scheduler each time the seed changes. If a "locked" workflow keeps producing inconsistent results, check that mode is actually set to select.

    A distilled checkpoint ignoring your scheduler choice entirely. Distilled models are trained against one specific noise schedule (Euler with sgm_uniform is the confirmed pairing for SDXL Lightning, for example), and running a mismatched schedule on one tends to produce oversaturated, broken-looking output regardless of which of the nine options you pick. If a checkpoint's card specifies a schedule, that instruction overrides general advice.

    Categorysd

    Inputs (3)

    NameTypeDefaultDescription
    schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
    modeCOMBO3 options: select, seed, index
    seedINT0

    Outputs (2)

    NameTypeDescription
    schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal
    STRINGSTRING