Feather Radius
The number that decides whether your inpaint inpaints or stamps
- feather
If you have ever looked at an inpainted face and seen a faint rectangle of slightly different skin around it, you've met a feather radius that was too small. This node is a shared value for that radius.
What it's for
Feathering softens the mask edge so the generated region blends into the original instead of butting against it. It's the cheapest fix in the whole inpainting toolbox and the most commonly skipped, because the default is often 0 and a hard edge looks fine at 100% on a small preview and appalling at full size.
The usual numbers, and they hold up across detailers and inpainting nodes: 4–12 pixels is the working range, with 0 giving a seam and anything past ~20 starting to bleed the change into areas you didn't mask. Which means the number that matters isn't a per-node aesthetic decision - it's a property of your image resolution and of how big the masked region is. Bump the feather when you go from 1024 to 2048, and if you have three detailers in a graph they should all probably agree.
That's the reason to pull this out of every node's widget and into one: one source, many consumers, and no silent drift where the face pass gets 8 and the hand pass still has 2.
How it works
A single INT widget called feather, default 10, minimum 0, maximum 100, step 1. The tooltip says it plainly: "Feather radius in pixels for blending." The class casts to int and returns the value on an INT output also named feather.
That's it. No blur is applied here - this node never touches a mask. It's a typed constant. The blurring happens in whatever node actually consumes the mask: an Impact Pack detailer's feather field, GrowMask's taper, a mask-blur node, an inpaint node's blur setting. Convert that widget to an input (right-click → Convert widget to input) and wire feather into it.
The output is INT, which is what radius fields want, so it drops straight in. Feather is measured in whole pixels; nothing downstream of it wants 7.3.
Installing it
ComfyUI-MDSNodes, by MarwanDSAI. ComfyUI Manager: search ComfyUI-MDSNodes (or MDSNodes), install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/MarwanDSAI/comfyui-mdsnodes
# restart ComfyUI
No dependencies to install - requirements.txt is empty in the repo and the README confirms the pack needs nothing beyond stock ComfyUI. No weights, no downloads.
Search the canvas for Feather. The display name is Feather Radius and its category is MDSNodes/Constants.
Common issues
Not in the node list. The constant nodes landed in version 1.8.0. Update the pack in Manager and restart before you conclude it's broken.
The seam got worse, not better. Two usual causes. One: you wired feather into a node that doesn't use it in the way you think - some detailers feather the mask while the paste-back uses its own blend, so raising one does nothing visible. Two: the change you're masking is a colour shift, not a shape one, and no amount of edge blur hides that. Post-processing has a real tool for that case (matching the region back to the source histogram), which is a different fix than feathering.
Everything below 0.3 denoise smears out of the mask. That's feather plus a low denoise: the blended band gets partial regeneration, which reads as a soft halo. Drop the feather to 4–6 for subtle edits, and keep the high feather for structural changes where a soft edge is what you want.
You set 40 and lost the subject's ear. 100 is the ceiling on this node and it's there for very large masked regions, not faces. Feather is in pixels, so it scales badly with small masks - on a 200px face crop, 20 is already most of the face.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| feather | INT | 100–100 | Feather radius in pixels for blending. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| feather | INT | The feather radius integer value. |