Nodes/ComfyUI-CitronNodes/Scheduler Selector (Citron Image Saver)
ComfyUI Node

Scheduler Selector (Citron Image Saver)

Pick the noise schedule once, and get its name for free

By citronlegacy·Created about a year ago·Updated 22 days ago· 0
Scheduler Selector (Citron Image Saver)
    • scheduler
    • scheduler_name
    ◄scheduler▾►

    Scheduler is the setting people change most and record least. Ask anyone what sampler they used and they'll tell you; ask which scheduler and you'll get a shrug, even though karras versus sgm_uniform can change a Flux image more than the sampler choice does. This node gives the scheduler one authoritative home and a string output, so the save node stamps the truth instead of a default.

    How it works

    One input, scheduler, with ComfyUI's nine standard KSampler schedulers: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, normal, linear_quadratic, kl_optimal.

    Two outputs carrying the same selection: scheduler (typed as the SCHEDULERS combo, plugs into a KSampler's scheduler input) and scheduler_name (a STRING for the saver's scheduler_name). Nothing else - it returns the chosen value twice.

    That's the whole mechanism, and the value is entirely in the duplication. A scheduler's name is a string in one place and a typed combo in another, and ComfyUI won't convert between them; this node is the adapter. It also means the scheduler feeding the sampler and the scheduler recorded in the file are the same object, which is the only way to be sure the metadata isn't lying after you've tried four schedules in one evening.

    Worth internalising the actual behaviour, since the dropdown doesn't explain itself. The scheduler decides how much noise is removed at each step. karras concentrates denoising in the middle steps, which is a genuine improvement on the curved trajectory of DDPM-style SD 1.5/SDXL models and a distortion on the straighter trajectory of flow-matching models - the source of the endless "why does Karras look worse on Flux" threads. simple and sgm_uniform are the safe picks on Flux, Z-Image and friends. beta reshapes the curve around a beta distribution and does interesting things at low step counts. If a model card names a scheduler, use that one; if it doesn't and you're on anything released after 2024, start with simple.

    One thing this node won't do: it lists core schedulers only. The pack ships two sibling selectors for the extras - the (inspire) and (Eff.) variants - because those names come from third-party packs.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/citronlegacy/ComfyUI-CitronNodes
    # restart ComfyUI
    

    Manager support isn't reliable yet - the README says "coming soon" and the repo's package metadata is still placeholder - so clone it manually. piexif is the only pip dependency, and it's required for the pack to import at all:

    pip install piexif
    

    No models. It lives under Citron_ImageSaver/utils.

    Common issues

    • KSampler won't accept the wire. You're connecting scheduler_name (a string) instead of scheduler. Use the combo-typed output.
    • The scheduler I want isn't listed. AYS SD1, AYS SDXL, GITS and friends come from other packs - use the (inspire) or (Eff.) selector in this same pack, and install the matching megapack or the sampler downstream won't accept the value.
    • Saved metadata says normal for everything. That's the saver's default when scheduler_name is unconnected. Wire this node's string output into it.
    • Scheduler changes seem to do nothing. Some third-party schedulers apply their own sigma shift and ignore the workflow's - check which scheduler you're actually running before hunting a bug in ModelSampling.
    CategoryCitron_ImageSaver/utils

    Inputs (1)

    NameTypeDefaultDescription
    schedulerCOMBOscheduler

    Outputs (2)

    NameTypeDescription
    schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimalscheduler (SCHEDULERS)
    scheduler_nameSTRINGscheduler name (STRING)