Easy Apply Inpaint
Five inpainting engines behind one dropdown
- pipe
- image
- mask
- pipe
This node is Easy-Use's answer to a question that used to require five different node graphs: which inpainting technique do you actually want? easy applyInpaint folds normal masked img2img, Fooocus's inpaint patch, two BrushNet modes, and PowerPaint into one node with an inpaint_mode dropdown, then wires up the correct conditioning for whichever one you picked.
Why the menu exists
"Inpainting" isn't one technique - it's a family, and each entry handles the mask differently. normal is the baseline: any checkpoint, mask the region, run img2img on it, no special training required. fooocus_inpaint patches in Fooocus's inpaint head, which was built specifically to blend edges better than plain masked img2img. brushnet_random and brushnet_segmentation bring in BrushNet, a dedicated inpainting ControlNet-style model with two training regimes (random masks vs. segmentation-shaped masks) that behave differently depending on whether your mask is a rough scribble or a clean object outline. powerpaint routes through PowerPaint, a multi-task inpainting model that can do text-guided edits, shape-guided edits, object removal, context-aware fill, and outpainting from one checkpoint, selected via the function field.
If you're not sure which to pick: normal for anything your checkpoint already handles fine, fooocus_inpaint as the easy upgrade when edges look seamy, and BrushNet or PowerPaint when you've specifically downloaded those models and want their trained-for-the-task behavior.
The inputs that matter
pipe, image, and mask are the obvious required trio. encode picks how the masked image gets turned into a starting latent - none, vae_encode_inpaint (the classic VAEEncodeForInpaint path), inpaint_model_conditioning (the modern route, feeds the mask as part of conditioning rather than baking it into the latent), or different_diffusion (Differential Diffusion, which lets denoise strength vary smoothly across the mask instead of being uniform). grow_mask_by dilates your mask a few pixels before use - almost always worth a small nonzero value, since a mask drawn exactly to an edge tends to leave a visible seam.
The rest of the fields (dtype, fitting, function, scale, start_at, end_at) only matter when inpaint_mode is powerpaint. function is the task selector described above; fitting and scale tune how strongly PowerPaint's task embedding steers the result; start_at/end_at work exactly like a ControlNet's step range, letting PowerPaint's influence taper off partway through sampling instead of holding the whole way. The optional noise_mask toggle controls whether the mask also constrains noise during sampling, not just the final composite.
Output is a single pipe, ready for your sampler.
Installing it
ComfyUI Manager: search ComfyUI Easy Use, install, restart. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Use
Windows: double-click install.bat. Linux/Mac: run pip install -r requirements.txt yourself after cloning. Restart ComfyUI. BrushNet and PowerPaint both need their own model weights downloaded separately - the node won't fetch them for you, and picking either mode with nothing loaded will just error out.
Where people get stuck
Denoise strength is the number one inpainting mistake regardless of mode: too high and the masked region drifts stylistically from the rest of the image; the fix is almost always to lower it before touching anything else. grow_mask_by left at 0 is the second most common cause of visible seams - a couple pixels of growth plus normal feathering downstream fixes most of them. And if you pick brushnet_random or brushnet_segmentation and the result looks worse than plain normal, check that your mask style actually matches the mode - a clean, precise object mask fed into the random-trained BrushNet variant, or a rough scribble fed into the segmentation-trained one, is fighting the model's own training distribution.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | PIPE_LINE | — | |
| image | IMAGE | — | |
| mask | MASK | — | |
| inpaint_mode | COMBO | 5 options: normal, fooocus_inpaint, brushnet_random, brushnet_segmentation, powerpaint | |
| encode | COMBO | none | 4 options: none, vae_encode_inpaint, inpaint_model_conditioning, different_diffusion |
| grow_mask_by | INT | 60–64 | — |
| dtype | COMBO | 4 options: float16, bfloat16, float32, float64 | |
| fitting | FLOAT | 1.000.3–1 | — |
| function | COMBO | 5 options: text guided, shape guided, object removal, context aware, image outpainting | |
| scale | FLOAT | 1.000–10 | — |
| start_at | INT | 00–10000 | — |
| end_at | INT | 100000–10000 | — |
| noise_maskopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE_LINE | — |