ComfyUI Node

Smart Image Splitter

Cut one image into up to nine tiles (with overlap for seamless stitching)

By Niutonian·Created 7 months ago·Updated 7 months ago· 0
Smart Image Splitter
  • input_image
  • split_1
  • split_2
  • split_3
  • split_4
  • split_5
  • split_6
  • split_7
  • split_8
  • split_9
split_modegrid
grid_size2x2
overlap_pixels0
output_formatindividual
custom_rows2
custom_cols2
horizontal_splits2
vertical_splits2

Ever wanted to split a big image into tiles for printing, for a tiled upscale pass, or just to feed pieces through an inpainter one at a time? Smart Image Splitter is the ComfyUI node for that. It takes a single IMAGE and cuts it into up to nine pieces along a grid, into horizontal bands, or into vertical columns - and unlike a lot of tiling nodes, it can give each tile an overlap margin so you can stitch the results back together without visible seams.

It's one of seven nodes in the Niutonian Smart Image Suite, and like the rest of the pack it's pure Pillow under the hood: no models, no API, nothing to download. Just crops, with a couple of sensible options.

How it works

Pick split_mode and the node computes even slices:

  • grid - uses the grid_size presets (2x2, 3x3, 4x4, 2x3, 3x2, 1x4, 4x1).
  • custom - your own custom_rows / custom_cols, each up to 10.
  • horizontal / vertical - a number of equal bands or columns via horizontal_splits / vertical_splits.

overlap_pixels is the interesting one. Each tile is extended by that many pixels on its trailing edges (clamped at the image border), so if you're doing the classic split → upscale each tile → re-stitch flow, the tiles overlap instead of sharing a knife-edge. That overlap is what keeps a tiled upscale from showing a seam grid afterward. The cost is that edge tiles are slightly bigger than their nominal share - that's expected.

output_format claims to choose between separate individual outputs or a batch - but honestly, as of this writing the code never branches on it. Both settings return the same nine outputs, so don't expect batch to collapse them into one tensor yet. The important gotcha either way: unused output slots aren't empty - they're filled with a 64x64 black placeholder tensor. If you split a 2x2 and only use split_1split_4, that's fine; the black squares only bite you if you wire split_5 and up into a Save node expecting real content.

Wiring it up

Inputs that matter: input_image (the IMAGE to cut), split_mode, grid_size, overlap_pixels, output_format. Each of the split_N outputs is a normal IMAGE, so you can route them into a KSampler, an inpainter, an upscaler, or a Save Image without adapters.

The classic tiled-upscale pattern: SmartImageSplitter (3x3, overlap ~32) → nine upscale paths → Smart Grid Stitch or Smart Image Stitch (from the same pack) to reassemble. The overlap you set here is what lets the reassembly hide its seams.

Installing and gotchas

Same install as the rest of the suite:

cd ComfyUI/custom_nodes
git clone https://github.com/Niutonian/comfyui-niutonian-smart-image

Restart ComfyUI, and you'll find it under Niutonian/Image Processing. No extra dependencies - just Pillow, which ComfyUI already has. There are no model files in this pack at all.

One honest warning: the suite is new (a single initial commit in early 2026), so don't expect a giant community trail of fixes. If the node misbehaves, check your overlap_pixels first - too much overlap on a small image can make edge tiles nearly as big as the whole original. And remember the black placeholders for unused outputs when you're building templates.

CategoryNiutonian/Image Processing

Inputs (9)

NameTypeDefaultDescription
input_imageIMAGE
split_modeCOMBOgrid4 options: grid, horizontal, vertical, custom
grid_sizeCOMBO2x27 options: 2x2, 3x3, 4x4, 2x3, 3x2, 1x4, +1
overlap_pixelsINT00–100
output_formatCOMBOindividual2 options: individual, batch
custom_rowsoptINT21–10
custom_colsoptINT21–10
horizontal_splitsoptINT22–10
vertical_splitsoptINT22–10

Outputs (9)

NameTypeDescription
split_1IMAGE
split_2IMAGE
split_3IMAGE
split_4IMAGE
split_5IMAGE
split_6IMAGE
split_7IMAGE
split_8IMAGE
split_9IMAGE