imageSplitTiles
Cut an image into overlapping tiles for tiled processing
- image
- tiles
- masks
- overlap
- total
When an image is too big to process in one pass - think upscaling a large photo on a card that can't hold the whole latent - the standard move is to cut it into tiles, run each tile through the model, and glue them back together. easy imageSplitTiles is the "cut it into tiles" half of that. Give it an image and a grid size, and it returns the tiles as a batch, plus the masks and overlap data you need to reassemble them cleanly later.
This is the DIY version of what Ultimate SD Upscale and Tiled Diffusion do internally. If you're building your own tiled workflow - maybe you want per-tile control, or you're stitching tiles through a specific model chain - this node gives you the split step as an explicit, wired thing instead of a black box.
How it works
It divides the image into a tiles_rows × tiles_cols grid and outputs each cell as one image in a batch. The important detail is the overlap: tiles processed independently will disagree at their seams, and blending overlapping edges is what hides the join. overlap_ratio controls how much neighboring tiles share, and the node emits the overlap data and per-tile masks so a companion recombine step can feather the tiles back together without visible grid lines. That overlap-and-feather is the whole reason tiled upscaling doesn't look like a patchwork quilt.
The inputs and outputs that matter
image- the image to split.tiles_rows/tiles_cols- the grid. 2×2 gives four tiles; bump it up when each tile is still too big for your VRAM.overlap_ratio(0–0.5) - how much adjacent tiles overlap. Some overlap is what lets the seams blend; zero overlap risks visible edges. A small value (0.1–0.25) is the usual starting point.overlap_offsetandnorm- finer control over the overlap region and normalization; leave at defaults unless you're chasing a specific seam issue.
Outputs: tiles (the IMAGE batch - process this through your per-tile chain), masks (MASK, for blending), overlap (an OVERLAP object that carries the layout to the recombine node), and total (INT, the tile count - useful for driving a loop). Keep the overlap output; the reassembly node needs it.
How to install it
Ships in ComfyUI-Easy-Use. ComfyUI Manager: search ComfyUI-Easy-Use, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Use
then install.bat (Windows) or pip install -r ComfyUI-Easy-Use/requirements.txt, and restart. No models.
Common issues & troubleshooting
Visible seams after recombining. Almost always too little overlap. Tiles processed separately diverge at their edges, and only the overlap-and-blend hides it. Raise overlap_ratio and make sure you're feeding the overlap/masks outputs into the reassembly step - dropping them means the tiles get butt-joined with no feathering.
Tiles still OOM. If a single tile is too big for your card, increase tiles_rows/tiles_cols so each tile is smaller. More tiles, less memory per pass.
Losing the overlap data. The overlap output isn't optional if you plan to stitch cleanly - the recombine node reads the layout from it. Forget to wire it and you'll be reassembling blind.
Missing the recombine step entirely. This node only splits. On its own you get a batch of tiles and nothing that merges them back. It's meant to be paired with Easy-Use's tile-recombine node (the batch-to-image side); if your output is a grid of separate tiles, that's the missing half of the workflow.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| overlap_ratio | FLOAT | 0.000–0.5 | — |
| overlap_offset | INT | 0-8192–8192 | — |
| tiles_rows | INT | 21–50 | — |
| tiles_cols | INT | 21–50 | — |
| normopt | BOOLEAN | true | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| tiles | IMAGE | — |
| masks | MASK | — |
| overlap | OVERLAP | — |
| total | INT | — |