Nodes/ComfyUI_Fill-Nodes/FL Inpaint Stitch
ComfyUI Node

FL Inpaint Stitch

Paste your inpainted crop back where it came from

By filliptm·Created 3 years ago·Updated about 19 hours ago· 628
FL Inpaint Stitch
  • stitch
  • inpainted_image
  • image

This node only makes sense paired with its partner, FL_InpaintCrop, and it's worth understanding the pair as one unit rather than two separate tools. FL_InpaintCrop takes your full image and mask, crops tightly around the masked region so your sampler spends its resolution budget on the part that actually matters, and hands you a stitch bundle carrying the coordinates needed to reverse that crop. FL_Inpaint_Stitch is the reverse step: it takes that stitch bundle plus your generated result and pastes it back into the original image, at the original position and scale.

That crop-then-stitch pattern is the standard way to inpaint in 2026 for a reason - it guarantees everything outside your mask survives the round-trip completely untouched, instead of quietly degrading through a VAE encode/decode of the whole frame.

How it works

The stitch object from FL_InpaintCrop remembers where the crop came from, how it was scaled to hit the sampler's target resolution, and what the mask boundary looked like. FL_Inpaint_Stitch reverses all of that: it rescales your inpainted_image back down (or up) to the crop's original dimensions, then alpha-composites it into the full original image at the exact coordinates the crop was taken from. The result is a full-size image identical to the original everywhere except inside the masked region, which now carries your new generation.

The inputs and outputs that matter

Both required, and both come from a specific place:

  • stitch - the STITCH object output by FL_InpaintCrop. This isn't something you construct by hand; it's opaque data meant to travel from that node to this one.
  • inpainted_image - whatever your sampler produced from FL_InpaintCrop's cropped_image output, after your inpainting pass.

Output: a single image - the full original image with the inpainted region composited back in.

How to install it

Ships in ComfyUI_Fill-Nodes alongside FL_InpaintCrop. ComfyUI Manager: search ComfyUI_Fill-Nodes, install, restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
pip install -r ComfyUI_Fill-Nodes/requirements.txt

then restart. No model download for this node specifically - it's geometry and alpha compositing.

Common issues & troubleshooting

Mismatched stitch data is the number-one failure mode. The stitch input has to come from the same FL_InpaintCrop call that produced the crop you generated on. If your graph has more than one crop-and-stitch pair running in parallel, or you accidentally reused an old stitch bundle after re-running the crop node, the paste lands in the wrong place or at the wrong scale. Keep each crop → sample → stitch chain visually contained in your graph so it's obvious which stitch feeds which inpaint.

Visible seam at the crop boundary. Crop-and-stitch guarantees pixel-perfect preservation outside the mask, but a hard edge right at the mask boundary is still possible if the mask itself has a hard edge. A touch of feather or blur on the mask back at the FL_InpaintCrop stage (before generation) is what actually fixes this - this node just composites what it's given, it doesn't blend seams on its own.

Don't skip the crop node. This node's stitch input is meaningless without it - FL_Inpaint_Stitch is one half of a pair, not a general-purpose paste tool. If you find yourself trying to build a stitch object from scratch or from a different crop node, that's a sign you want a different compositing node (FL_PasteByMask, for instance) instead.

Category🏵️Fill Nodes/Utility

Inputs (2)

NameTypeDefaultDescription
stitchSTITCH
inpainted_imageIMAGE

Outputs (1)

NameTypeDescription
imageIMAGE