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

Tiled Image Splitter

Chop a huge image into tiles your GPU can actually process

By tuki0918·Created 10 months ago·Updated 3 months ago· 6
Tiled Image Splitter
  • image
  • tiles
  • masks
  • tile_info
tile_width1024
tile_height1024
overlap128
feather_ratio0.10

Every diffusion model has a native resolution, and your 4K upscale doesn't care. Try to run a full KSampler pass on something way past that and you get an OOM on a small card, or worse, an image that doesn't OOM but quietly tiles and duplicates anatomy instead. The oldest workaround in the book is tiling - cut the image into overlapping pieces, process each piece, stitch them back. That's the idea behind Ultimate SD Upscale and the Tiled Diffusion extension, and it's exactly what this pack does, just as a minimal splitter/merger pair you wire into whatever graph you already run. TiledImageSplitter is the first half: it turns one big image into a batch of small ones, plus the feathered masks and metadata you need to put it back together.

How it works

The math is refreshingly straightforward. With a tile_width x tile_height and an overlap, the splitter walks the image with a stride of tile − overlap in each direction. Any tile that would run past the edge just shifts back so it ends flush at the boundary. The result is a grid of crops, each returned as an image in a single batch.

The clever part is the masks. Every tile gets a feather mask that's 1 in the middle and fades to 0 across a gradient band on edges that touch a neighboring tile (edges that sit on the real image boundary stay solid). Here's the gotcha hidden in the parameter names: feather_ratio is a ratio of the overlap, not the tile. With the default overlap of 128 and feather_ratio of 0.1, you get roughly 12–13 feather pixels per feathered edge, not 102 pixels. Crank feather_ratio toward 0.5 if seams show.

All tiles are emitted as one batch, which is the real selling point. Standard ComfyUI nodes - VAE Encode, KSampler, VAE Decode - process the whole batch in a single run, no loop structures or per-tile iteration to babysit.

The inputs that matter

Only five, and three of them are the ones you'll touch:

  • tile_width / tile_height (default 1024, range 64–8192, step 8) - match these to what your model and VRAM actually like. 1024 for SDXL/Flux, 512 if your card is struggling.
  • overlap (default 128, 0–512, step 8) - how much neighboring tiles share. Too little and the model can't keep continuity across seams; 0 means hard edges and visible seams.
  • feather_ratio (default 0.1, 0–0.5) - how soft the blend edge is, as a fraction of the overlap. More feathering hides seams but gives up more edge pixels to partial-strength processing.

The outputs are tiles (the IMAGE batch), masks (the MASK batch - wire these into Set Latent Noise Mask for inpainting), and tile_info (the TILE_INFO dict the merger needs to reconstruct everything).

Installation

No pip dependencies, no model downloads, nothing to go grab. The node is plain torch. Install it once for both nodes in this pack:

Via ComfyUI Manager: search "ComfyUI Image Tiled Nodes" and click install, or by hand:

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

Then restart ComfyUI.

Common issues

  • VRAM spikes. Because all tiles run through KSampler as one batch, peak usage scales with tile count, not tile size. The README warns to make sure your VRAM covers the number of tiles generated. If you OOM, shrink the tiles or the image.
  • Seams. Raised feather_ratio, still seeing a grid? Re-read the overlap math above - with a tiny overlap, 0.5 of almost nothing is still almost nothing.
  • Tiled upscaling vs. inpainting. This pair is built for same-resolution processing - refining each tile with an inpainting/img2img pass, then stitching. If you upscale each tile individually, the merger will silently squash it back down. For real tiled upscaling (with ControlNet Tile to keep tiles from diverging), Ultimate SD Upscale is still the tool people actually reach for.

One honest caveat from the author's own README: this pack ships with a known "problem with increased redness" in the merged output. It's called out in the docs, so if your stitched result looks warmer than the source, you're not doing it wrong - that's a known wart.

CategoryTiledNodes

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
tile_widthINT102464–8192
tile_heightINT102464–8192
overlapINT1280–512
feather_ratioFLOAT0.100–0.5

Outputs (3)

NameTypeDescription
tilesIMAGE
masksMASK
tile_infoTILE_INFO