NoiseImage ♾️Mixlab
Generate a flat color with noise on top, as a starting canvas
- IMAGE
NoiseImage makes a solid-color image and sprinkles random noise over it. Sounds trivial, and mechanically it is - but a controlled noisy canvas is a genuinely useful starting point in a surprising number of workflows, which is why the node earns its keep in shadowcz007's mixlab pack.
Where you'd actually reach for it: as an img2img seed canvas. If you feed a flat color into img2img at high denoise, the model has almost nothing to grab onto and tends to collapse toward the same average composition; a noisy canvas of the right base color gives it texture to hallucinate structure out of, and it biases the palette toward that color. It's also handy as a quick background plate, a placeholder texture, or a controlled noise source for compositing and blending experiments. Think of it as a paint bucket with grain, generated at exactly the resolution you ask for.
Worth saying plainly: this makes a pixel image with visual noise, not the latent noise a sampler uses internally. It's not a replacement for a KSampler's own noise or for a latent-noise injection node. It's an image you can see, that you then push through the rest of your graph.
How it works
You give it a width, a height, a base color, and a noise amount. It fills a canvas of that size with the color, then adds random per-pixel noise scaled by the noise level. Higher noise = grainier, more washed toward random; lower = closer to the flat color. Simple and deterministic in shape, random in the grain.
The inputs and outputs that matter
Four inputs, all required, and the two that actually shape the result are the base color and the noise amount:
color_hex(STRING, default#FFFFFF) - the base color as a hex string. This is what tints the whole thing; set it to the dominant color you want the downstream image to lean toward.noise_level(INT, default 128, range 0–8192) - how much grain. Low values stay near the flat color; crank it and you approach full random noise. 128 is a middle-ish starting point, not a law.width/height(INT, default 512, up to 8192) - the output size. Match your target generation resolution.
The single output is IMAGE - plug it into a VAE Encode for img2img, a compositing node, or a Preview to eyeball the grain.
How to install it
Via ComfyUI Manager: search comfyui-mixlab-nodes, install, restart. Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/shadowcz007/comfyui-mixlab-nodes.git
then pip install -r requirements.txt (or install.bat on the Windows portable build) and restart. No models or extra downloads needed for this node - it's pure pixel generation.
Common issues & troubleshooting
The noise looks blown out / it's basically static. Your noise_level is too high relative to the effect you want. Because the range goes all the way to 8192, it's easy to overshoot - start low (say 20–60) if you want a subtle grain over the color, and only go high if you genuinely want near-random noise.
Downstream img2img ignores the color. The color only nudges the result if your denoise is high enough to keep the canvas influential but not so high it's overwritten, and if the model isn't fighting a strong prompt. If the palette isn't carrying through, lower the denoise a touch so more of the canvas survives.
color_hex isn't taking. It expects a proper hex string with the # (e.g. #3366FF). A malformed value falls back or reads wrong - keep it to standard 6-digit hex.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 5121–8192 | — |
| height | INT | 5121–8192 | — |
| noise_level | INT | 1280–8192 | — |
| color_hex | STRING | #FFFFFF | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |