Scheduler selector
A scheduler dropdown with history, filtering, and randomization bolted on
- ui_widget
- combo
- string
Scheduler choice isn't a minor detail - it decides how noise gets removed at each sampling step, and on newer flow-matching models the wrong pick genuinely tanks output quality rather than just nudging it slightly. LF_SchedulerSelector wraps ComfyUI's stock scheduler dropdown with a few things a plain widget doesn't give you: history logging, wildcard filtering, and seeded randomization - useful if you're sweeping schedulers to see which one your model actually likes, rather than committing to one and hoping.
The dropdown itself covers ComfyUI's nine built-in schedulers - normal, karras, exponential, sgm_uniform, simple, ddim_uniform, beta, linear_quadratic, kl_optimal - plus a None state. That's worth being precise about: this selects among ComfyUI's native schedulers, not the much larger set some third-party sampler packs add on top. randomize (off by default) picks one at random each run instead of using your dropdown selection; filter narrows that random pool with a wildcard pattern (*) if you want randomization limited to a subset rather than all nine; seed controls that randomness so a run is reproducible if you need it to be. enable_history logs each execution's picked value and timestamp into the node's history widget, so you can look back at what you already tried in a sweep instead of losing track.
Two outputs: combo, the scheduler as ComfyUI's native enum type - wire this straight into a KSampler (Advanced) or anywhere else a scheduler input lives - and string, the same value as plain text, handy for logging or feeding into a metadata node.
Installing it. ComfyUI Manager: search "LF Nodes," install, restart. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/lucafoscili/lf-nodes, restart. Use that repo - comfyui-lf, what comfy.icu links, is the pack's archived original home; the author's active work lives at lf-nodes now. No models, no heavy dependencies.
Where people get tripped up. If you're testing schedulers on a flow-matching model (Z-Image, Flux, and similar), don't assume the SDXL-era "Karras is usually a safe default" habit carries over - on several of these newer models Karras and Exponential specifically perform worse than gentler schedules like simple or beta, so a randomized sweep with this node is a genuinely good way to find out what your specific model actually wants rather than trusting old defaults. Second, filter only matters when randomize is on - if you've left randomization off, the filter field does nothing, since you're just using the dropdown directly. And remember this node's scheduler list is the ComfyUI-native nine; if a workflow you're following references something like bong_tangent or other exotic scheduler names, those come from a different sampler pack entirely and won't show up in this dropdown.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| enable_history | BOOLEAN | true | Enables history, saving the execution value and date of the widget. |
| randomize | BOOLEAN | false | Selects a scheduler randomly. |
| filter | STRING | When randomization is active, this field can be used to filter scheduler names. Supports wildcards (*). | |
| seed | INT | 420–18446744073709550000 | Seed value for when randomization is active. |
| ui_widgetopt | KUL_HISTORY | [object Object] | — |
| scheduleropt | COMBO | None | Scheduler used to generate the image. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| combo | normal,karras,exponential,sgm_uniform,simple,ddim_uniform,beta,linear_quadratic,kl_optimal | — |
| string | STRING | — |