Nodes/comfyui-image-tiled-nodes/Tiled Image Merger
ComfyUI Node

Tiled Image Merger

Sew the tiles back together without the seams showing

By tuki0918·Created 10 months ago·Updated 3 months ago· 6
Tiled Image Merger
  • images
  • tile_info
  • image

Tiling a big image is easy. Getting the pieces back into one seamless picture is where every DIY tiling approach falls apart - naive crop-and-paste leaves a visible grid wherever two tiles met. TiledImageMerger is the second half of the pair from this pack, and it exists to make that reconstruction genuinely seamless. Its partner TiledImageSplitter chops the image into overlapping tiles plus a tile_info dict; you run the tiles through VAE Encode → KSampler → VAE Decode in one batch; then this node takes the processed tile batch and the tile_info and rebuilds the full-resolution image.

How it works

The merge is a weighted average, not a paste. Each processed tile is multiplied by a feather weight mask - 1 in the middle, fading toward the edges - and accumulated into an output buffer along with the weights. Where tiles overlap, the contributions are blended proportionally, then the accumulated color is divided by the accumulated weights and clamped to 0–1. Overlap that was feathered on the way in gets feathered on the way out, which is what kills the hard seams.

Note something subtle about the mechanism: the merger rebuilds the feather mask from tile_info rather than accepting a mask input. There's no mask wire on this node - it re-derives the blend weights from the splitter's metadata, so you don't have to route the masks output here. It also resizes any tile that doesn't match the original tile dimensions back to the expected slot, so the final image always comes out at the original size.

The two inputs and one output

That's the whole interface, and it's blessedly small:

  • images - the batch of processed tiles, normally straight out of VAE Decode. They must be in the same order the splitter emitted them.
  • tile_info - the TILE_INFO dict from the TiledImageSplitter. This is what tells the merger the original dimensions, the tile size, the overlap, the feather ratio, and where every tile sits.
  • Output: image, the reconstructed full-size image, ready for Save Image.

Installation

Same as its sibling - this is a two-node pack, so you install them together. No Python dependencies, no model files, plain torch under the hood.

Via ComfyUI Manager: search "ComfyUI Image Tiled Nodes" and install. Or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/tuki0918/comfyui-image-tiled-nodes.git

Restart ComfyUI and both nodes appear under the TiledNodes category.

Common issues and traps

  • Don't shuffle or drop tiles. The merger walks tile_info's positions in order, consuming one image per position. If you feed fewer tiles than positions - because you rejected or dropped some - it just stops early and you get a partially reconstructed image with no error. Same deal if you reorder them: tiles land in the wrong slots.
  • Per-tile upscaling gets squashed. The resize-back behavior is the big one to internalize. If you upscale each tile individually (say 2x) and feed the bigger tiles in, the merger quietly bilinearly downscales them to the original tile slot size. This pair is for same-resolution work - inpainting, denoise-refine, consistency passes - not for growing the image. If your goal is tiled upscaling with ControlNet Tile keeping tiles faithful, Ultimate SD Upscale or Tiled Diffusion is the established path, and the KB notes skipping that tile condition is how you get patchwork.
  • The redness warning is real. The author's README carries a blunt caveat: "There is a problem with increased redness." That's an admitted color-shift wart in the blended output, not something you're doing wrong. If your merged result runs warm, that's the known issue; watch the pack's changelog for a fix.

Keep the two inputs in sync and this node is genuinely unobtrusive - the whole point of the pack is that you never think about the seams again.

CategoryTiledNodes

Inputs (2)

NameTypeDefaultDescription
imagesIMAGE
tile_infoTILE_INFO

Outputs (1)

NameTypeDescription
imageIMAGE