Fooocus Inpaint
The node that made this pack worth installing
- image
- mask
- fooocus_inpaint
This is the reason the pack exists. When people said "Fooocus inpainting is the best", they meant this - lllyasviel's trick of turning any ordinary SDXL checkpoint into a genuinely good inpainter with a small patch, no dedicated inpaint model required. In ComfyUI that trick usually gets credited to Acly's comfyui-inpaint-nodes, which is fair; this node is the same idea wired into Seedsa's pipe. If you want masked inpainting or outpainting on an SDXL photoreal checkpoint without hunting down an inpaint variant, this is the node you came for.
How it works
A dedicated inpaint model is trained to understand masks as a condition. Fooocus sidesteps that: it downloads a ~1.3GB patch (inpaint_v26.fooocus.patch) and applies it to whatever SDXL checkpoint you loaded, on the fly. The patch is a difference model - it teaches the existing UNet to behave like an inpainter. That's why it works with any SDXL model, and why the community still respects it years after Fooocus froze in 2024.
This node is the front end of that process. It takes your image and (optionally) your mask, packs the context, and hands a fooocus_inpaint bundle to the Fooocus PreKSampler, which applies the patch during sampling.
Inputs that matter
- image - the photo you're fixing. Required.
- mask (optional) - where to regenerate. If you leave it empty you get outpainting instead, which is the second thing this node does.
- top / bottom / left / right - the outpainting switches. Flip one on to extend the image in that direction; the sampler generates new content into the grown canvas.
- inpaint_engine -
None,v1,v2.5,v2.6. Defaultv2.6, the last and best patch version. Only drop this if you're chasing a specific legacy look. - inpaint_respective_field - default
0.618, and that's a Fooocus signature: how much surrounding context the model respects while fixing the masked area. Lower = tighter, more literal fill; leave it alone unless the fix looks disconnected. - inpaint_disable_initial_latent - default off. On means the masked region starts from noise rather than the original pixels; usually you want it off for subtle fixes.
Output: fooocus_inpaint (FOOOCUS_INPAINT) → the PreKSampler's fooocus_inpaint input. From there: KSampler → done.
Installing and the model download
Pack install, as everywhere in this pack - Manager, search "Fooocus Nodes", or clone the repo. The patch itself downloads automatically on first inpaint, which is a 1.3GB surprise if you're on a metered connection. Let it finish; it's cached after that.
Where people get burned
Three failure modes show up again and again. First: don't feed a dedicated inpaint checkpoint into this. If you're already using a model like a Juggernaut XL inpaint variant, the patch is the same idea in another format - stacking them double-applies the inpaint difference and you get the "blurred rainbow mess" that gets posted to r/comfyui. Use a normal SDXL checkpoint. Second: this node is built to feed the PreKSampler's inpaint path - don't bolt it onto a standard KSampler with a VAE Encode for Inpainting node and expect the Fooocus result. Third: drop denoise too low and the masked region renders blank, because the patch expects real denoising work. If your fix looks washed out, raise denoise, don't lower it.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| inpaint_disable_initial_latent | BOOLEAN | false | — |
| inpaint_respective_field | FLOAT | 0.60–1 | — |
| inpaint_engine | COMBO | v2.6 | 4 options: None, v1, v2.5, v2.6 |
| top | BOOLEAN | false | — |
| bottom | BOOLEAN | false | — |
| left | BOOLEAN | false | — |
| right | BOOLEAN | false | — |
| maskopt | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| fooocus_inpaint | FOOOCUS_INPAINT | — |