Nodes/comfyui-superside-nodes/Superside Grow Mask With Blur
ComfyUI Node

Superside Grow Mask With Blur

Grow it, blur it, get an inverted copy for free

By Superside·Created about a month ago·Updated 3 days ago· 1
Superside Grow Mask With Blur
  • mask
  • mask
  • mask_inverted
expand0
incremental_expandrate0.0
tapered_cornerstrue
flip_inputfalse
blur_radius0.0
lerp_alpha1.00
decay_factor1.00
fill_holesfalse

If you've done any masked inpainting, you already know the ritual: the mask from your detector or selector is never quite right. It hugs the subject too tight, its edge is a hard binary cliff, and if you feed that straight into an inpaint you get a visible seam. This node is the standard fix - grow or shrink the mask, blur its edge so the re-render blends, and hand you the inverted mask as a bonus output. No API, no key, no model call.

It's the in-house equivalent of kj-nodes' GrowMaskWithBlur, and it implements the same contract faithfully, which matters if you're swapping one pack for the other in an existing graph. The core inputs:

  • mask - native MASK type in, MASK out.
  • expand - grow (positive) or shrink (negative) the mask by this many pixels, −16384 to +16384. This is the knob that turns a face-tight mask into a face-and-shoulder mask so the inpaint has context to blend against.
  • blur_radius - the Gaussian blur applied to the mask edge, 0 to 100. This is what kills the hard seam: a blurred mask means the inpaint transitions instead of abutting.
  • tapered_corners - on by default; softens the corners as the mask grows rather than squaring them off.

Then the pack's own additions to the kj-node contract: incremental_expandrate (expand grows more per pixel as it goes, for a tapered overall shape), lerp_alpha (how much to blend the grown mask with the original), decay_factor (0–1, fades mask intensity over distance), and an optional fill_holes toggle that closes gaps inside the mask. You'll rarely touch the first three - they exist because the original node had them and the pack is keeping the contract identical - but fill_holes is genuinely handy when a mask comes back with a hole in the middle of the subject.

Two outputs: mask (the processed mask) and mask_inverted - the same mask flipped, which is exactly what you need for an exclusion composite. That's a nice touch: one node gives you both the "edit here" and the "protect here" masks without a second node.

The workflow it's built for: a region selector or detector produces a rough mask, this grows it by a margin and blurs it, the result feeds an inpaint node (or the pack's Flux Pro Fill / Z-Image inpaint), and the mask_inverted output protects the parts you don't want touched. The pack also notes something subtle: GrowMaskWithBlur is one of the two mask nodes that preserve gray - meaning partial-opacity masks from Superside Portrait Sections survive through it, so a 50% gray region stays 50% gray instead of being thresholded to binary. That gray-preservation is what makes the partial-opacity retouch trick work downstream.

Install - ComfyUI Manager (search "comfyui-superside-nodes") or:

cd ComfyUI/custom_nodes
git clone https://github.com/Superside/comfyui-superside-nodes
pip install -r requirements.txt

Restart ComfyUI, find it under Superside. No key, no downloads. If you already run kj-nodes, this is redundant but harmless; if you can't install kj-nodes on a locked-down box, this is the same node without the extra pack.

CategorySuperside

Inputs (9)

NameTypeDefaultDescription
maskMASK
expandINT0-16384–16384
incremental_expandrateFLOAT0.00–100
tapered_cornersBOOLEANtrue
flip_inputBOOLEANfalse
blur_radiusFLOAT0.00–100
lerp_alphaFLOAT1.000–1
decay_factorFLOAT1.000–1
fill_holesoptBOOLEANfalse

Outputs (2)

NameTypeDescription
maskMASK
mask_invertedMASK