🅱🅱空白图片|Empty Image
A blank canvas that also hands you a mask — the boring node that saves you a dozen others
- Image RGB
- Alpha as Mask
- Image RGBA
It makes a blank image in whatever size, color, and transparency you ask for. That's the whole node, and before you scroll past thinking you already have ComfyUI's built-in EmptyImage, check the outputs: this one also gives you a MASK filled with your alpha value. The stock node doesn't. That single socket is why you'd pick this over core, and it shows up more than you'd expect in real workflows.
Why you'd reach for it
Blank images are plumbing, not glamour, but they're everywhere once you look. You need a solid base to composite a generated subject onto. You need a uniform mask to force an inpainting region or to blank out part of a frame before a detail pass. You need batch frames of the same canvas to line up frame counts in an AnimateDiff or Wan video workflow. The KB's masking doc talks a lot about detecting regions - this is the opposite: a node that hands you a flat, predictable mask on purpose, the way core's empty latent starts a generation. Every workflow has a spot where you just want "an image, any image, that is exactly this color," and this is the low-drama way to get one.
How it works
Under the hood it's embarrassingly simple, in the good way. It fills four torch tensors on CPU - red, green, blue each scaled to 0–1, plus your alpha as a fourth value - and concatenates them. No model, no GPU memory drama, no dependencies beyond what ComfyUI already ships. It's the same trick core's EmptyImage uses, with per-channel color and an alpha output bolted on. Because nothing is generated, it runs in a millisecond and never changes seed to seed.
The inputs that matter
Only a handful are worth touching:
- width / height - 512 default, stepped in multiples of 8, min 8. Match the rest of your workflow's resolution or the downstream node will resize anyway.
- batch - how many identical copies. Set it to your video's frame count when you're feeding a video pipeline.
- red / green / blue - 0–255. The canvas color. Black (0,0,0) is the default.
- alpha - 0 to 1, and here's the trap: the default is 0. That means the
Alpha as Maskoutput is all black and theImage RGBAoutput is fully transparent out of the box. If you just want a colored canvas, that's fine - wireImage RGB. If you want a white mask or an opaque RGBA, you have to raise alpha yourself. Forgetting this is the "why is my mask black" post.
The outputs
- Image RGB - the normal 3-channel IMAGE. Wire this where any image is expected.
- Alpha as Mask - a MASK of your alpha value. This is the differentiator; it feeds mask inputs on samplers, inpainting, and compositing nodes directly, no Image-to-Mask conversion in between.
- Image RGBA - 4-channel. Few ComfyUI nodes actually consume RGBA, so this mostly sits there until something needs it.
Install and the gotchas
No models, no extra pip packages - the pack declares zero dependencies and the code only uses torch, PIL, and numpy, all already inside ComfyUI. Install via ComfyUI Manager (search ComfyUI-BBTools or "BBTools") or:
cd ComfyUI/custom_nodes
git clone https://github.com/bbaudio-2025/ComfyUI-BBTools
then restart ComfyUI. That's it. Two real things to remember: raise alpha if you want a usable mask, and keep width/height on the 8-step grid the widget enforces (it won't accept 500x500 without snapping). The author - bbaudio-2025, better known for the VACE long-video tools - keeps this pack as a grab-bag of small utilities, so expect the node to be minimal rather than fancy. Minimal is fine when "blank image" is the whole job.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 5128–16384 | — |
| height | INT | 5128–16384 | — |
| batch | INT | 11–10000 | — |
| red | INT | 00–255 | — |
| green | INT | 00–255 | — |
| blue | INT | 00–255 | — |
| alpha | FLOAT | 0.000–1 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| Image RGB | IMAGE | — |
| Alpha as Mask | MASK | — |
| Image RGBA | IMAGE | — |