For game maps
Tileset Splitter
Have one picture containing many floor or wall squares? Set the size of one square and download the pieces with a position map.
Example: one floor-tile grid → tile PNGs + map
Try this tool- 1. AddOne grid of tiles
- 2. AdjustSet square size and gaps
- 3. SaveTile PNGs and position map
1. Choose the image containing your tiles
For a grid of equal-size floor, wall, or terrain squares. Tiles can have small gaps between them.
How to use it
1. Measure the tile, not the gap around it
Upload PNG or WebP and set Tile width and Tile height. A 32 × 32 tile with a one-pixel gutter is still 32 × 32; the gap belongs in Tile spacing, not tile dimensions.
2. Separate outer margin and spacing
Outer margin is the equal border on all four sides. Spacing is between neighboring tiles. With 32 px tiles, 2 px margin, and 1 px spacing, the first tile begins at (2, 2) and the next column at x = 35.
3. Choose how blanks and duplicates are exported
Skip fully transparent tiles excludes blank cells. Deduplicate identical tiles reuses one PNG for exact matching pixels. Keep tilemap.json in the ZIP to relate exported files to original row and column positions.
Tile size, margin, and spacing determine every crop
Spacing errors accumulate. If the real gap is 1 px but you enter 0, the second crop is one pixel early, the third two pixels early, and later tiles contain their neighbors. Inspect the far right and bottom of the export. The preview shows the first 16 exported tiles, not the entire sheet.
Four 32 px columns and three 32 px rows with a 2 px border and 1 px gaps need a 135 × 102 image. Width is 2 × 2 + 4 × 32 + 3 × 1; height is 2 × 2 + 3 × 32 + 2 × 1. Only complete cells are exported; a leftover strip does not become another tile.
Deduplication checks exact RGBA, including invisible RGB values. Visually identical transparent tiles can remain separate. tilemap.json is an ImageMint manifest with positions and tile IDs, not a native Unity or Godot tilemap, collision map, or autotile rule set.
| Setting or input | What it means |
|---|---|
| Tile width / height | 32 / 32 px |
| Outer margin | 2 px on every side |
| Tile spacing | 1 px between tiles |
| Column origins | x = 2, 35, 68, 101 |
| Expected cells | 12 before skipping and deduplication |
Check before downloading
File numbers can differ from original cell numbers
Skipped cells retain positions in the manifest, and duplicates can refer to an existing tile ID. Keep the manifest if you need to reconstruct the original layout.
Use a regular grid, not an arbitrary atlas
Uneven rectangles and asymmetric borders are not described by these controls. Limits are 4096 px per image side, 16 million image pixels, 1024 grid cells, and 512 px per tile side.
Questions
Why do later crops include a neighbor’s edge?
Recheck spacing first. Wrong spacing causes increasing displacement; wrong margin shifts all cells equally. If saved crops are clean but the engine shows seams, check texture filtering and import settings separately.
What counts as an empty tile?
Every pixel must have alpha 0. A single faint nonzero-alpha pixel makes the tile nonempty.
Does deduplication compare visual similarity?
No. It compares exact RGBA values. Near-matching colors are distinct, and hidden RGB under transparent pixels can prevent a match.
Can I import tilemap.json directly into my engine?
It is not a universal engine format. Use the grid positions and IDs as a reference or write an adapter. Collisions and autotile behavior still need authoring.
Why was the last row not exported?
Only complete cells inside the configured margin are extracted. Check image dimensions and whether the last strip is padding or a partial cell. Partial crops are not stretched to fit.
Related tools and tutorials
Tileset grid and engine-import guide — Find boundaries and distinguish crop problems from rendering seams.
Split a tileset with gutters — Verify a 135 × 102 source with 32 px tiles, 2 px margin, and 1 px spacing.
Sprite Sheet Slicer — Use manual boundaries for an irregular sheet.
Pixel Art Palette Extractor — Compare a new tile’s colors with the environment palette.
