π§ Image Tile
Cut an image into overlapping tiles for tiled processing
- image
- IMAGE
- tile_width
- tile_height
- overlap_x
- overlap_y
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.rowsandcols(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) andoverlap_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.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| rows | INT | 21β256 | β |
| cols | INT | 21β256 | β |
| overlap | FLOAT | 0.000β0.5 | β |
| overlap_x | INT | 00β8192 | β |
| overlap_y | INT | 00β8192 | β |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |
| tile_width | INT | β |
| tile_height | INT | β |
| overlap_x | INT | β |
| overlap_y | INT | β |