Random Noise Seed
The core node again, with a better random button
- SEED
Let's be honest about what this is: the pack's own docstring says it's "functionally identical to ComfyUI's official RandomNoise." The backend literally calls comfy_extras.nodes_custom_sampler.Noise_RandomNoise and returns that object. So if you're here looking for magic, there isn't any - and if you already have ComfyUI's RandomNoise node, you don't need this.
What you'd actually install it for is the front-end. The node pairs with a JS extension that replaces the stock seed widget behaviour with a single 🎲 Random / ♻️ Last button - the same pattern the Efficient Loaders pack uses. Click it on a valid seed and the value becomes -1 ("random"); click again and it restores the seed you were just using. On queue, a -1 is rolled into a real random number, recorded as "last", and the box goes back to showing -1.
The JS also deletes the stock control_after_generate dropdown (fixed / increment / decrement / randomize) so the two mechanisms don't fight. That's the whole feature, and if you've ever been bitten by that dropdown, it's a small good one - the KB's node-plumbing doc records the injury precisely: the control fires after the run by default, so the seed you see is the one that will be used next, and the good seed you were trying to keep is already gone.
The node itself
One input: noise_seed (INT, 0 to 2⁶⁴−1, default 0). The author's tooltip notes -1 means random when you're using the button.
One output: noise (NOISE) - wire it into anything that takes a NOISE object: the custom-sampler family (SamplerCustom, SamplerCustomAdvanced via a guider, DisableNoise chains), and any other node built on that type. It is not an INT seed, so don't try to plug it into a KSampler's seed socket; the types don't match.
Mechanically, the NOISE object carries the seed, and the sampler draws its own noise from it. Same seed, same noise tensor - which is why "same seed" reproduces a generation on the same model, and why changing one thing at a time is the only sane way to debug (the KB's troubleshooting advice, and it hasn't improved since).
Install
It's one node in a much larger pack. If you only want a random-noise node, ComfyUI already ships one and you should just use it.
cd ComfyUI/custom_nodes
git clone https://github.com/uiiiaiii/UIIIAIII_Toolkit.git
# restart ComfyUI
Or UIIIAIII Toolkit via ComfyUI Manager. No API key needed, no model files, one dependency (requests>=2.28.0) that this node doesn't even use. The pack also bundles a node-category manager and a UI translation layer, which is most of its size - harmless, but you'll notice new right-click behaviour and a settings panel you didn't ask for.
ComfyUI 0.29+ isn't required here, but note the button is a front-end extension: if your install is running the Nodes 2.0 frontend and an extension doesn't load, you'll be left with a plain integer widget and a -1 you can't reach. You can still type any valid seed from 0 up by hand.
Practical notes
-1 is not a seed. It's a marker the JS resolves at queue time. If you bypass the front-end - API calls, a script, -1 serialized into a workflow loaded on a headless box - you can send a value below the widget's stated minimum. Set a real seed in those cases.
Random by default is a debugging trap. The button makes randomizing one click, but the KB's advice stands: lock the seed, change a single variable, compare. If a workflow feels unstable, look here first.
It doesn't retry or cache-break anything else. Unlike the pack's API nodes, where seed exists mainly to defeat ComfyUI's execution cache, this node's seed genuinely determines the noise. Different job, same-looking widget - worth keeping straight if you're hopping between them in one graph.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| noise_seed | INT | 00–18446744073709550000 | Seed value passed to the connected node's seed input (e.g. KSampler). -1 means random; used together with the Random/Last button |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SEED | INT | — |