Skip to main content

Overview

Sprite sheets (also called texture atlases) combine multiple animation frames or sprites into a single image file. This technique is essential for game development, reducing draw calls and improving performance.
Aseprite can automatically generate optimized sprite sheets with accompanying data files for various game engines and frameworks.

Accessing Sprite Sheet Export

1

Open the Export Dialog

Navigate to File → Export → Export Sprite Sheet or press Ctrl+E (Windows/Linux) or Cmd+E (macOS).
2

Configure Layout

Choose your sprite sheet layout type and constraints.
3

Set Export Options

Configure borders, padding, and frame selection.
4

Export

Choose output file and optional data file format.

Layout Types

Frames arranged in rows
[Frame1][Frame2][Frame3][Frame4]
[Frame5][Frame6][Frame7][Frame8]
Options:
  • Fixed number of columns
  • Maximum width constraint
  • Auto-wrap to next row
Best for animations with consistent frame sizes.

Layout Constraints

Fixed Columns

Specify exact number of columns
Columns: 4
Result: 4 frames per row

Fixed Rows

Specify exact number of rows
Rows: 3
Result: 3 frames per column

Max Width

Maximum sprite sheet width
Max Width: 2048px
Frames wrap at width limit

Max Height

Maximum sprite sheet height
Max Height: 2048px
Frames wrap at height limit

Padding & Borders

┌─────────────────────────────┐ ← Border Padding
│  ┌────┐  ┌────┐  ┌────┐    │
│  │ F1 │  │ F2 │  │ F3 │    │
│  └────┘  └────┘  └────┘    │
│    ↑       ↑                │
│    │       └─ Shape Padding │
│    └───────── Inner Padding │
└─────────────────────────────┘
Empty space around the entire sprite sheet edge.Range: 0-100 pixelsUse cases:
  • Prevent edge bleeding in 3D engines
  • Create safe margins
  • Avoid texture filtering artifacts
Space between individual frames/sprites.Range: 0-100 pixelsUse cases:
  • Prevent UV bleeding
  • Visual separation
  • Easier manual editing
Use 1-2 pixels of shape padding to prevent texture bleeding in most game engines.
Padding inside each frame boundary.Range: 0-100 pixelsUse cases:
  • Consistent frame spacing
  • Alignment adjustments
Extends the edge pixels outward into padding.Benefits:
  • Eliminates edge artifacts
  • Perfect for 3D texture mapping
  • Prevents transparent gaps
Extrude repeats the edge pixel color into the padding area to prevent texture sampling issues.

Frame Selection

Export every frame in the sprite.
Frame: 1, 2, 3, 4, 5, ..., N

Optimization Options

Trim Sprite

Remove empty space around entire spriteCrops transparent pixels from canvas edges

Trim Cels

Remove empty space per frameEach frame individually cropped

Ignore Empty

Skip completely transparent framesReduces sprite sheet size

Merge Duplicates

Reuse identical framesSignificant size reduction for loops
Important: Trimming frames may result in different frame sizes, which can complicate rendering in some game engines.

Data File Formats

Sprite sheet metadata can be exported in various formats:
{
  "frames": [
    {
      "filename": "sprite 0.aseprite",
      "frame": { "x": 0, "y": 0, "w": 32, "h": 32 },
      "rotated": false,
      "trimmed": false,
      "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
      "sourceSize": { "w": 32, "h": 32 },
      "duration": 100
    }
  ],
  "meta": {
    "app": "https://www.aseprite.org/",
    "version": "1.3",
    "image": "sprite.png",
    "format": "RGBA8888",
    "size": { "w": 256, "h": 128 },
    "scale": "1"
  }
}
JSON format is widely supported by game engines and frameworks.

Advanced Features

Generate separate sprite sheets for each layer.Output:
character-body.png + character-body.json
character-armor.png + character-armor.json
character-weapon.png + character-weapon.json
Useful for:
  • Modular character systems
  • Customizable sprites
  • Dynamic layer composition
Generate separate sprite sheets per animation tag.Output:
sprite-idle.png + sprite-idle.json
sprite-walk.png + sprite-walk.json
sprite-attack.png + sprite-attack.json
Benefits:
  • Organized animations
  • Lazy loading
  • Smaller file sizes per action
Export grid cells as individual sprites.Useful for:
  • Tile-based sprites
  • Grid-aligned assets
  • Uniform cell exports
Export tilemap tilesets as sprite sheets.Features:
  • Preserve tile indices
  • Include tile metadata
  • Optimize for tile-based rendering

Game Engine Integration

Recommended settings:
  • Format: JSON or JSON Array
  • Layout: Packed or Grid
  • Enable: Trim Cels, Merge Duplicates
Import steps:
  1. Import PNG as Sprite (Multiple)
  2. Use Sprite Editor to slice
  3. Parse JSON for animation data
Use Unity’s Sprite Packer or Addressables for additional optimization.

Best Practices

1

Power-of-Two Dimensions

Use texture sizes that are powers of 2 (256, 512, 1024, 2048) for better GPU compatibility.
Some older mobile GPUs require power-of-two textures.
2

Minimize Padding for Mobile

Mobile devices have limited texture memory. Use minimal padding when targeting mobile platforms.
3

Use Packed Layout

For varied sprite sizes, packed layout minimizes wasted texture space.
4

Enable Extrude

Always enable extrude to prevent edge artifacts in 3D engines and scaled sprites.
5

Test Different Constraints

Experiment with width/height constraints to find optimal texture dimensions for your target platform.
Texture Size Limits:
  • Desktop: Usually 8192x8192 or higher
  • Mobile: Often limited to 2048x2048 or 4096x4096
  • WebGL: Varies by device, typically 4096x4096
Always test on your target platform!

Command Line Export

Export sprite sheets via CLI for build automation:
aseprite -b sprite.aseprite \
  --sheet sprite-sheet.png \
  --data sprite-sheet.json \
  --format json-array \
  --sheet-type packed \
  --trim \
  --merge-duplicates
Integrate CLI export into your build pipeline for automated asset generation.

Troubleshooting

Solutions:
  • Reduce padding values
  • Enable trim and merge duplicates
  • Split by tags or layers
  • Reduce sprite resolution
  • Use packed layout
Solutions:
  • Increase shape padding (1-2 pixels minimum)
  • Enable extrude option
  • Disable texture filtering in engine
  • Use premultiplied alpha
Solutions:
  • Use filename format to control ordering
  • Check tag frame ranges
  • Verify selected frames
  • Use JSON format for explicit indexing
Solutions:
  • Check color mode (use RGBA)
  • Ensure alpha channel is not premultiplied incorrectly
  • Verify game engine blend modes
  • Use PNG format for sprite sheet

File Formats

Learn about output file format options

GIF Export

Alternative animation export method

PNG Sequences

Export individual frame files