Nodes/ComfyUI Essentials/πŸ”§ Image Tile
ComfyUI Node Runs on cloud

πŸ”§ Image Tile

Cut an image into overlapping tiles for tiled processing

By cubiqΒ·Created 3 years agoΒ·Updated about a year agoΒ· 1,152
πŸ”§ Image Tile
  • image
  • IMAGE
  • tile_width
  • tile_height
  • overlap_x
  • overlap_y
β—„rows2β–Ί
β—„cols2β–Ί
β—„overlap0.00β–Ί
β—„overlap_x0β–Ί
β—„overlap_y0β–Ί

When an image is too big to run through a model in one shot - a 4K upscale on a 12GB card, say - the standard trick is to chop it into tiles, process each tile, and stitch them back together. ImageTile is the chopping half of that pattern. It splits an image into a grid of rows Γ— cols tiles, optionally with overlap so the seams have something to blend into, and outputs the tiles as a batch plus the numbers you'll need to reassemble them later.

It's from ComfyUI Essentials by cubiq (Matteo Spinelli, also the ComfyUI_IPAdapter_plus author). Tiled upscaling is a whole genre in ComfyUI - Ultimate SD Upscale and Tiled Diffusion are the big turnkey versions - and ImageTile is the low-level primitive for when you want to build the tiling loop yourself.

How it works

The node divides the frame into an even grid. The overlap controls are what keep tiled processing from looking like a patchwork quilt: without overlap, each tile is diffused in isolation and adjacent tiles can drift apart in color and detail, leaving visible seams. With overlap, neighboring tiles share a border region that the reassembly step blends across, hiding the joins. You get overlap two ways - overlap as a fraction of the tile, or overlap_x/overlap_y in explicit pixels.

Crucially, the node also reports the exact tile size and overlap it used, so ImageUntile can put everything back together correctly. Those numbers have to match on both ends.

The inputs and outputs that matter

  • image (IMAGE) - the picture to split.
  • rows and cols (INT, default 2Γ—2) - the grid. More tiles means smaller tiles and lower peak VRAM, at the cost of more passes.
  • overlap (FLOAT, 0–0.5) and overlap_x / overlap_y (INT pixels) - how much neighbors share. A little overlap goes a long way toward invisible seams.

Outputs: IMAGE (the tiles as a batch), plus tile_width, tile_height, overlap_x, overlap_y - carry all of these to ImageUntile.

How to install it

ComfyUI Manager: search ComfyUI Essentials, install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_essentials
pip install -r ComfyUI_essentials/requirements.txt

then restart. No model downloads.

Common issues & troubleshooting

My seams are obvious. Almost always zero overlap, or too little. Add overlap so the reassembly has a blend zone - the KB's upscaling notes make the same point about tiled diffusion generally: without a shared border, tiles diverge and you get a grid you can see. If you're diffusing the tiles, a ControlNet Tile condition on top keeps each tile faithful to the source and reduces divergence further.

The reassembly came out misaligned. ImageUntile has to receive the same rows, cols, and overlap values this node used. Wire the outputs straight through rather than re-typing them - a mismatch is the number-one cause of a scrambled stitch.

This didn't upscale anything. Right - ImageTile only splits. The upscale/detail work happens on the tiles in between, with your sampler or upscale model. If you just want turnkey tiled upscaling without wiring a loop, Ultimate SD Upscale is the friendlier option.

Missing after a Comfy update. Essentials is maintenance-only since April 2025; pack nodes have broken on newer builds before. Update via Manager, or roll ComfyUI back if it's genuinely incompatible.

Categoryessentials/image manipulation

Inputs (6)

NameTypeDefaultDescription
imageIMAGEβ€”
rowsINT21–256β€”
colsINT21–256β€”
overlapFLOAT0.000–0.5β€”
overlap_xINT00–8192β€”
overlap_yINT00–8192β€”

Outputs (5)

NameTypeDescription
IMAGEIMAGEβ€”
tile_widthINTβ€”
tile_heightINTβ€”
overlap_xINTβ€”
overlap_yINTβ€”