Scheduler Selector
The other half of the sampler choice, wired once
- scheduler
Scheduler Selector is the sampler's other half. Where the sampler decides how noise gets removed at each step, the scheduler decides how much - and ComfyUI treats them as two separate widgets, which is why this pack ships a selector for each. This node is a dropdown of scheduler names whose output can feed both your KSampler and the Save Image w/Metadata node, so the scheduler you actually ran is the scheduler that gets recorded. Same single-source-of-truth idea as the rest of the pack; different field.
How it works
Pick a scheduler from the dropdown; the node outputs that choice as a combo value. Wire it into your KSampler's scheduler (convert the widget to an input if there's no port yet) and split the same wire into the save node's scheduler. Done - one place to change it, two places kept in sync.
The list holds ComfyUI's core schedulers: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, normal, linear_quadratic, and kl_optimal. Nine of them.
Which scheduler to pick
This choice is glued to your sampler and your model, so the honest advice mirrors the sampler one. On DDPM-style models - SD 1.5, SDXL and every SDXL finetune - karras is a genuine correction: it concentrates denoising in the middle steps and gives better results at low step counts, which is exactly why so many old sampler names end in "Karras". That's where the schedule earns its reputation.
On flow-matching models (Flux, Z-Image and the rest of the 2026 crop) the reputation inverts. Those models train on a near-straight trajectory, so aggressively reshaping the noise curve distorts rather than corrects - karras and exponential are close to universal failures there, not just weaker options. Use beta, simple, sgm_uniform or linear_quadratic instead; they redistribute the least. Distilled checkpoints (Turbo, Lightning) are trained against a specific schedule and generally want sgm_uniform. As always, the model card's pair beats guessing.
The input and output
- scheduler (enum) - the dropdown, and the only field.
The single output is scheduler, carrying your pick to the sampler and the metadata node.
Installing it
Bundled with the pack. ComfyUI Manager: search Save Image with Generation Metadata, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/giriss/comfy-image-saver
cd comfy-image-saver
pip install -r requirements.txt
Restart ComfyUI. Nothing to download.
Where people get tripped up
The wiring gotcha applies here too - the KSampler scheduler is a widget by default, so convert it to an input before you can plug this in. Beyond that, the trap is treating the scheduler as a free knob. It isn't independent of the sampler or the model; a "better" scheduler on the wrong architecture makes things worse, not better. If you're chasing the last few percent on a flow-matching model, that tuning has largely moved to the model's timestep shift and to third-party packs like RES4LYF anyway - the stock nine here cover the defaults, and the defaults are usually right. This selector's real value isn't picking an exotic schedule; it's making sure the plain one you used is the one your metadata reports.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | — |