Size first, count second
Most splitters ask how many pieces you want. Some jobs start from the other end: a texture atlas wants 512-pixel cells, a machine-learning dataset wants 256-pixel patches, a map viewer wants 1024-pixel tiles, a print shop wants a fixed pixel size per tile. This route opens the board on the tile-size division so the first thing you decide is the size, and the number of tiles follows from the arithmetic.
The arithmetic rarely comes out even. A photograph 4032 pixels wide holds seven 512-pixel tiles and 448 pixels over. Something has to happen to those 448 pixels, and the three possible answers produce different files, so the board puts the remainder rule directly under the size and prints the resulting column widths and row heights before you cut. Nothing is decided for you silently.
A worked example
1800 × 1200 → 12 files · columns 512 + 512 + 512 + 264 = 1800 px · rows 512 + 512 + 176 = 1200 px
| File | Cell | From x, y | Pixels |
|---|---|---|---|
| texture-r1c1.png | row 1 · col 1 | 0, 0 | 512 × 512 |
| texture-r1c2.png | row 1 · col 2 | 512, 0 | 512 × 512 |
| texture-r1c3.png | row 1 · col 3 | 1024, 0 | 512 × 512 |
| texture-r1c4.png | row 1 · col 4 | 1536, 0 | 264 × 512 |
| texture-r2c1.png | row 2 · col 1 | 0, 512 | 512 × 512 |
| texture-r2c2.png | row 2 · col 2 | 512, 512 | 512 × 512 |
| texture-r2c3.png | row 2 · col 3 | 1024, 512 | 512 × 512 |
| texture-r2c4.png | row 2 · col 4 | 1536, 512 | 264 × 512 |
| texture-r3c1.png | row 3 · col 1 | 0, 1024 | 512 × 176 |
| texture-r3c2.png | row 3 · col 2 | 512, 1024 | 512 × 176 |
| texture-r3c3.png | row 3 · col 3 | 1024, 1024 | 512 × 176 |
| texture-r3c4.png | row 3 · col 4 | 1536, 1024 | 264 × 176 |
Which remainder rule to pick
Pick Last slice when the tiles will be placed back at their positions — a web map, a deep-zoom viewer, a game level — because nothing is lost and every full tile is the size the system expects. Pick Crop when every file must be exactly the size you typed, for a training set or an atlas, and losing a strip of edge pixels is acceptable; the receipt says how many were dropped. Pick Distribute when you mainly want even pieces and the exact size matters less: the count stays the same and the sizes differ by one pixel at most.
A gutter or an overlap can be added between tiles. An overlap of a few pixels is common for image-processing pipelines that need context at each edge; every tile then repeats that many pixels of its neighbour, and the index records where each one starts so the overlap can be removed again later.
Tile size is in pixels of the picture you opened. If a lighter copy is in use because the original was very large, the tiles are cut from that copy and the board says so.
How to do it here
- Open the picture. Drop it on the board, browse, or paste it.
- Type the tile size. Under Divide by → Tile size, set width and height in pixels.
- Pick the remainder rule. Last slice, Crop or Distribute; the column widths and row heights print underneath.
- Cut. Press the cut button to write the ZIP with an index and split.json.


