WI Parameter (Seed)
Seed sweeps done right — random batches, incrementing runs, and holding it fixed
- param_stack_in
- param_stack
WI Parameter (Seed) is the parameter node in the Workflow Iterator pack that controls the one value that changes everything: the seed. Its three value formats are worth learning because they map to three genuinely different jobs:
# Random count - N fresh random seeds
random:5 -> [1428349213, 80643321, 993201755, ...]
# Sequential - start at X, then X+1, X+2, ...
increment:100:4 -> [100, 101, 102, 103]
# Explicit list
42, 1337, 9999 -> [42, 1337, 9999]
random:5 is the "show me variety" mode - great for picking a keeper from a concept you're happy with, since it samples five different noises and you can see the prompt's full range. increment:... is the "let me step through candidates methodically" mode, and the explicit list is the "reproduce these exact five" mode. As with all the parameter nodes, values is parsed at queue time, random: caps out at 10,000 seeds, and an unparseable string just logs and skips the parameter rather than failing the batch.
The trick nobody tells you: use it to hold the seed fixed
Sweeping seeds is the obvious use, but the more valuable trick is the inverse. In linear mode, a parameter with a single value just cycles that one value forever - so a seed parameter set to 42 in a chain with a steps sweep produces every step count rendered from seed 42, the same noise every time. That's how you make a steps or CFG comparison actually meaningful. Without a fixed seed, every config starts from different noise and you're comparing apples to oranges; with it, differences between cells are attributable to the thing you're actually testing. This is the single most useful habit in the whole pack, and it's invisible in the README.
Wiring and shared pack behavior
Same five inputs as its siblings: parameter_name, values, target_node_title (default KSampler), target_widget_name (default seed), enabled, plus param_stack_in for chaining. Output is the shared param_stack, feeding the WI Workflow Iterator node. Note that KSampler's seed widget is what gets written - if your workflow randomizes seeds upstream of the sampler, that node is the one whose title and widget you're targeting.
Install is the pack standard: ComfyUI Manager → search "Workflow Iterator", or git clone https://github.com/jason-n-tran/comfyui-workflow-iterator into custom_nodes, then restart. One dependency, Pillow>=9.0.0. It's a small young pack (v1.0.0, MIT, on the ComfyUI registry) with a proper pytest suite for its parsing logic, which is honestly more than a lot of utility packs ship.
One warning that's seed-specific: if you chain random:5 with other parameters in matrix mode, you're saying "every combination of everything × five random seeds," which is exactly the batch that runs overnight by accident. If you want a handful of random seeds per config, that's deliberate; if you don't, that's a 5× surprise. Do the multiplication before you queue, and when in doubt, increment: - it's reproducible, which makes it debuggable.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| parameter_name | STRING | seed | — |
| values | STRING | random:5 | — |
| target_node_title | STRING | KSampler | — |
| target_widget_name | STRING | seed | — |
| enabled | BOOLEAN | true | — |
| param_stack_inopt | WI_PARAM_STACK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| param_stack | WI_PARAM_STACK | — |