Sampler & Scheduler Crawler (CRT)
Sweep every sampler and scheduler combo by bumping one number
- sampler_name
- scheduler
- sampler_str
- scheduler_str
- selection_label
- list_info
"Which sampler should I use?" is one of the oldest questions in the hobby, and the honest answer is: it depends on the model, and you should test it. Sampler & Scheduler Crawler (CRT) is built for exactly that - it turns sampler and scheduler selection into a seed-indexed sweep, so you can test every combination by bumping one integer between runs instead of hand-editing two dropdowns each time.
It's a logic/values node from CRT-Nodes, and it's the kind of thing that looks unassuming until you're three hours into a sampler A/B and realize you've already tested euler, dpmpp_2m, and nothing else because editing dropdowns got tedious. This node walks the whole grid for you.
How it works
Two seeds, two lists:
sampler_seed % len(all samplers)picks the sampler from ComfyUI's built-in sampler list.scheduler_seedpicks the scheduler, with a twist: turn on sweep_schedulers and the scheduler index only advances after the sampler list has completed a full cycle. So with sweep ON, incrementingsampler_seedby one each run walks every sampler/scheduler combination in order - a proper nested loop, no math on your part.
That tooltip on the node says it all: "test every possible Sampler/Scheduler combination sequentially by simply incrementing the sampler_seed."
Inputs and outputs
- sampler_seed / scheduler_seed - these are indexes, not random seeds. In normal use you set
scheduler_seedto 0 and drive everything fromsampler_seed. - sweep_schedulers - the switch that turns on the full-grid walk.
The outputs are designed to plug straight into a KSampler:
- sampler_name and scheduler - typed to match KSampler's own ports, so wire these directly into the sampler node.
- sampler_str / scheduler_str - the same values as plain strings, for logging or text display.
- selection_label -
"euler - normal"-style readout, handy for a note node. - list_info - the full sampler and scheduler lists with the current picks marked, so you can see where you are in the sweep.
How to actually run a sweep
Drive sampler_seed from a counter that increments per run - a seed node you bump, or a batch-loop node - set scheduler_seed to 0, turn on sweep_schedulers, and queue repeatedly. Each run tests the next combo. Come back later, read list_info on the last run, and you've got your answer with a log instead of a guessing game.
Gotchas
- The lists come from your ComfyUI build, so the count and the names depend on your version -
list_inforeflects whatever's installed. - Seeds wrap: once
sampler_seedpasses the total number of combos, it loops back to the start. Fine for continuous runs, worth knowing if a "new" result looks oddly familiar. - It's a selection helper, not a sampler itself - it can't run anything on its own. Wire its outputs into a real KSampler.
Install: ComfyUI Manager → search CRT-Nodes → install and restart, or clone the repo into custom_nodes. The full suite carries a heavy dependency list, but the pack keeps loading when optional imports fail - it skips only the affected nodes.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| sampler_seed | INT | 00–18446744073709550000 | — |
| scheduler_seed | INT | 00–18446744073709550000 | — |
| sweep_schedulers | BOOLEAN | false | When ENABLED: Automatically increments the Scheduler index only after the Sampler list has completed a full cycle (looped). This allows you to test every possible Sampler/Scheduler combination sequentially by simply incrementing the 'sampler_seed'. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| sampler_name | * | — |
| scheduler | * | — |
| sampler_str | STRING | — |
| scheduler_str | STRING | — |
| selection_label | STRING | — |
| list_info | STRING | — |