Feathered Mask ♾️Mixlab
Soften a mask's hard edge before you composite
- mask
- MASK
A hard-edged mask is the thing that gives away a composite - the sharp cutout line that screams "this was pasted in." The README groups this node with "SmoothMask" under one purpose: "add edges to an image," which really means softening the mask's boundary so the composite blends instead of announcing itself. If you're using CompositeImages_, an inpaint node, or anything else in this pack's Layer group that takes a mask, this is the node you run first.
How it works
Two controls do two separate jobs, applied in sequence. start_offset grows or shrinks the mask boundary first - positive values push it outward, negative values pull it inward, across a -150 to 150 pixel range. Then feathering_weight blurs that boundary into a gradient rather than a hard line, the standard grow-then-blur feathering approach. The default feathering_weight is a fairly light 0.1, so if a composite still shows a visible seam after running this, the fix is usually to push that value higher, not to assume the node isn't working.
The inputs and outputs that matter
mask(MASK, required) - the mask you're softening.start_offset(INT, default1, range-150–150, required) - grow (positive) or shrink (negative) the mask boundary before feathering.feathering_weight(FLOAT, default0.1, range0–1, step0.1, required) - how soft the resulting edge is. Higher means a wider, more gradual fade.
The output is MASK, and it comes out as a list - wire it accordingly, or convert if the next node expects a single mask rather than a list.
How to install it
Ships with the Mixlab pack.
- ComfyUI Manager: search
comfyui-mixlab-nodes, install, restart. - Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/shadowcz007/comfyui-mixlab-nodes.git, install requirements (install.baton Windows, or../../../python_embeded/python.exe -s -m pip install -r requirements.txt), restart.
No model download needed - this is pure mask processing.
Common issues & troubleshooting
Seam is still visible after adding this node. The default feathering_weight of 0.1 is deliberately subtle. Push it up - toward 0.4–0.6 - for a strongly soft edge before concluding anything's broken.
Mask shrank or grew more than expected. That's start_offset, not feathering_weight - remember the two are separate steps. If the region itself is the wrong size, adjust the offset; if the region's the right size but the edge is too hard or too soft, that's the feathering value.
Downstream node complains about the mask type. The output is a mask list, not a single mask - the same list/batch distinction that trips people up elsewhere in this pack. Check what the next node actually expects before assuming the mask itself is malformed.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| mask | MASK | — | |
| start_offset | INT | 1-150–150 | — |
| feathering_weight | FLOAT | 0.10–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MASK | MASK | — |