Apply Glow to Mask
Apply Glow to Mask (MaskGlow) – ComfyUI Node Guide
- mask
- MASK
What it is
Feathering a mask - softening its edge so a pasted-in element blends rather than looking cut out with scissors - is one of the oldest tricks in compositing, and the standard way to do it is a Gaussian blur on the mask. But a plain blur softens both directions: it eats a little into the masked region and bleeds a little outward past it. That's fine most of the time (the standard advice for inpainting is 4–12px of blur for exactly this reason), but sometimes you specifically don't want the inner edge touched - you want the subject to stay crisp and just add a soft glow radiating outward from it, like a vignette or a halo. That's what MaskGlow does. The author's own framing nails it: "like blurring the binary mask but without having the blur extend into both sides, only to one side."
You'd reach for this anywhere you need a soft falloff around a masked subject without softening the subject itself - building a vignette mask, feeding a soft-edged region into a compositing node (this pack's own ImageLinearGammaCompositeMasked is a natural downstream partner), or generally any masking step where "shrink" is the one thing you don't want happening.
How it works
It takes a binary-ish mask and grows a soft, blurred region outward from the shape's edge, leaving the original shape intact if you ask it to (overlay_original). Internally that's glow generation plus blur plus an intensity falloff - conceptually similar to how a drop-shadow or outer-glow layer style works in an image editor, just operating on a ComfyUI MASK tensor.
Inputs that matter
- mask – the MASK to glow.
- threshold (0–255, default 0) – how strict the node is about what counts as "masked" before it starts growing the glow from it.
- glow_size (1–256, default 100) – how far outward the glow reaches. This is a much bigger range than a typical feather value (the standard inpainting feather is single digits to low teens), so don't crank it to 256 expecting "a bit more blur" - you'll get a glow radius bigger than most subjects.
- blur_radius (0–10, default 5.5) – how soft the glow's own edge is, separate from how far it reaches.
- subsample (1–5, default 3) – a quality/speed tradeoff on the glow computation; lower is more precise and slower, higher is faster and coarser.
- overlay_original (BOOLEAN, default true) – keeps the original masked shape fully intact and adds the glow around it, rather than letting the glow effect replace the source shape. This is the setting that actually delivers the "only one side" behavior from the README.
- fadeout (0–100, default 7) and fadeout_minimum_glow (1–256, default 5) – control how the glow tapers off at its outer edge, so it fades to a minimum rather than cutting off hard.
Output
A single MASK - the glowed result, ready to plug into whatever compositing or conditioning step needs a softened region.
Installing it
Comes with the rest of the pack - search "Eagleshadow Custom Nodes" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Shadetail/ComfyUI_Eagleshadow
No model downloads, no extra dependencies - pure mask math.
Common issues
glow_size set too high swallows your composition. Because the range goes up to 256 and the default is already 100, it's easy to end up with a glow that dominates the frame rather than gently softening an edge. Start low - think in the same ballpark as a normal feather value - and increase gradually.
Forgetting overlay_original is off (rare, since it defaults to true) will change the whole character of the effect from "soft halo around a crisp subject" to something closer to a plain blur. If your output looks like the subject itself got softer instead of just the edges glowing, check this toggle first.
This is a mask operation, not an image operation. It won't touch your actual pixels - you still need something downstream (a composite node, a ControlNet weight, whatever) to do something with the glowed mask. If nothing changed in your final image, check that the glowed mask actually got wired to where it needs to go.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| mask | MASK | — | |
| threshold | INT | 00–255 | — |
| glow_size | INT | 1001–256 | — |
| subsample | INT | 31–5 | — |
| blur_radius | FLOAT | 5.500–10 | — |
| overlay_original | BOOLEAN | true | — |
| fadeout | FLOAT | 7.000–100 | — |
| fadeout_minimum_glow | INT | 51–256 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MASK | MASK | — |