Gaussian Blur Mask
Feather a hard mask so the seam disappears
- mask
- MASK
Gaussian Blur Mask does one small, useful thing: it softens the edges of a mask. Hard mask in, feathered mask out. That fuzzy border is what lets an inpaint or composite blend into the surrounding image instead of leaving a visible cut line, and this is the Impact Pack's dedicated node for producing it.
It's not glamorous and it's not clever, but mask feathering is one of those steps that separates a clean result from an obviously-pasted one. A lot of masks arrive with hard binary edges - a ToBinaryMask output, a SAM silhouette, a shape you drew. Drop that straight into an inpaint and the transition between generated and original pixels can show as a sharp seam. Blur the mask first and the two sides fade into each other. In inpainting terms this is your feathering control, and 4–12 pixels of softening is the typical range people reach for.
How it works
A Gaussian blur is a weighted average that smears each pixel into its neighbors, with pixels closer to the center weighted more heavily. Applied to a mask, it turns a crisp 0-or-1 edge into a smooth ramp from 0 to 1 over a few pixels. Downstream, wherever the mask value is partway between, the composite blends the two images proportionally - which is exactly the soft transition you want at a seam. Two controls shape the blur: how wide the effect reaches, and how strong the falloff is.
The inputs and outputs that matter
Three inputs, and only two of them are dials:
mask(required) - the mask to soften.kernel_size(default 10) - how many pixels the blur reaches across. Bigger means a wider, softer feather; smaller keeps the edge tighter. This is the main "how much feather" knob.sigma(default 10) - the strength of the Gaussian falloff within that kernel. Higher spreads the blur more evenly; lower keeps more weight near the original edge. In practice you nudgekernel_sizefirst and only touchsigmaif the falloff shape isn't right.
Single output: MASK - the same mask with soft edges, ready to feed an inpaint node's mask input, ImageCompositeMasked, or a Set Latent Noise Mask.
How to install it
Install the pack via ComfyUI Manager (search ComfyUI Impact Pack, install, restart), or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack comfyui-impact-pack
cd comfyui-impact-pack
python -m pip install -r requirements.txt # ComfyUI's python; python_embeded on portable
then restart. No models, no Subpack - this is a pure mask utility. On Linux you may still need libgl1-mesa-glx and libglib2.0-0 for OpenCV, which the pack pulls in.
Common issues & troubleshooting
The edges still look hard. Your kernel_size is too small for the resolution - a 10px blur on a 4K mask is barely visible. Scale the feather to the image; big canvases need bigger kernels.
The blur ate my mask / the fill got weak. Overdo the feather and a small mask blurs into near-nothing - the whole thing becomes a faint ramp with no solid center, so the inpaint has little to bite on. Shrink kernel_size, or dilate the mask before blurring so there's a solid core left after the edges soften.
When to use this vs. a detailer's built-in feather. The detailer nodes already have a feather input, so if you're masking inside a detailer you often don't need this. Reach for Gaussian Blur Mask when you're building a mask by hand for a plain inpaint or composite, or when you want to feather a mask before it goes anywhere near the sampler. Note there's also a Gaussian Blur Mask (SEGS) variant if you need to blur the masks living inside a SEGS bundle rather than a standalone mask.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| mask | MASK | — | |
| kernel_size | INT | 100–100 | — |
| sigma | FLOAT | 10.00.1–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MASK | MASK | — |