Tileset Extruder — Atlas Padding That Stops Texture Bleeding
Filtering and mipmaps sample just outside a tile, so neighbouring tiles bleed in as lines. Extrusion copies each tile's edge pixels outward, the classic fix used with Phaser, LÖVE, Defold and Unity tilemaps.

- TilesMeasured· Pillow
- Padded atlasMeasured· Pillow
- Seam reportMeasured· Pillow
What it does
- Nine blits per tile: the tile, its four edges stretched outward and its four corner pixels.
- Works on sheets with margin and spacing (the tiles are found by the measured grid).
- Output: padded-atlas.png plus the metadata with each tile's new rect.
- Quality checks recorded in Chromium and Firefox: byte-identical to the reference extrusion, 1×1 cells included.
How to do it
- Drop the tileset.
- Confirm the grid.
- Set the extrude width (1–2 px is typical).
- Download the padded atlas and metadata.
Outputs and how each was checked
"Measured" means the downloaded file was opened again outside the page (Pillow, numpy or an independent parser) and the property was measured. Loading these files in a game engine was not tested.
| Target | Files | Check |
|---|---|---|
| Tiles | tiles/tile-NNN.png · metadata.json | Measured PillowEvery sliced tile equals its source region pixel for pixel (margin, spacing, blanks, duplicates). |
| Padded atlas | padded-atlas.png | Measured PillowEdge pixels duplicated outward; the recorded atlas-padding quality checks pass in Chromium and Firefox. |
| Seam report | PNG (healed) · JSON measurements | Measured PillowA wrapping tile is reported seamless, a ramp is reported as a seam, and the healed tile's wrap differs by at most 8 levels. |
Evidence
Grid detection ranked the true grid first on 10 of 10 synthetic sheets (margin 1 / spacing 2 included); 13/13 sliced tiles byte-identical to their source regions; a 1600-tile slice finishes in 2.2 s and can be cancelled; seam verdicts measured against the tile's own interior.
Limits
- Regular grids only; above 4 megapixels the tile size is typed in instead of measured.
- Near-duplicate detection is a pixel threshold, not perceptual similarity.
- "Make seamless" changes the art inside its blend bands and synthesises nothing; before and after are shown.
- A tile smaller than 2 × 2 cannot be measured for seams.
Questions
Do I need to change my engine's tile settings?
Yes: the tiles move apart, so use the new margin and spacing (or the rects in the metadata) when you set up the tileset.
Is this the same as edge bleed?
No: extrusion adds pixels around each tile in an atlas; edge bleed fills transparent pixels inside an image.
Is it free, and do I need an account?
Everything on these pages is free and works without an account. There is no watermark and no export that is held back.
Are my sprites uploaded?
No. The Studio decodes, packs and exports in this browser tab. Projects are autosaved in the browser (IndexedDB) and can be saved as a .nerulio file.
Does it need Aseprite or an engine plugin installed?
No. .aseprite files are read and written in the browser, and each engine bundle carries what that engine needs (for Godot, the import settings and scene; for Unity and the Godot TileSet, a small editor script).