Skip to content

Export formats

Take your work out of the editor in a format an engine, social post, or another tool can use. Four output types: PNG, Sprite Sheet, GIF, Project JSON.

For full editable round-trip (re-importable in this editor), use the .mstack file format — see .mstack format. The exports below are render-only.


Where to find it

Top bar → Export menu opens the Export dialog. Each tab covers one format.

Export dialog


PNG (active frame)

A single-image export of the active frame (composed across all visible layers).

OptionWhat
FilenameOutput file name
ScaleInteger multiplier (1× = pixel-perfect; 2×–8× upscales with nearest-neighbour)
BackgroundTransparent / solid colour

Use this for icons, single-frame artwork, or sharing a snapshot. The output respects all layer opacity and blend modes.


Sprite Sheet

A grid of frames as a single PNG, plus a JSON metadata file in Aseprite-compatible format.

OptionWhat
SourceAll frames / Active sprite's frames / A single animation's steps
LayoutAuto (square grid) / Horizontal (1 row) / Vertical (1 column) / Grid (custom column count)
ColsNumber of columns (when layout = Grid)
PaddingPixels of transparent space between frames
ScaleInteger multiplier
BackgroundTransparent / solid colour
JSON metadataToggle — when on, also exports <filename>.json next to the PNG (Aseprite-compatible layout)

For a project-wide JSON export that contains all metadata (frames, layers, sprites, animations, palette, ramps, cycles, tags) without the rendered PNG, use the standalone JSON tab instead — see Project JSON below.

Aseprite-compatible JSON

The JSON output matches Aseprite's "Hash" array layout that engines like Phaser, Solar2D, Cocos Creator, and several Godot importers consume directly. Includes:

  • Frame rectangles
  • frameTags array (from your Frame tags)
  • Source filename
  • Image dimensions

GIF

Animated GIF of an animation. Configurable in the dialog:

OptionWhat
AnimationWhich animation to export (must exist in the project)
ScaleInteger multiplier
FilenameOutput file name

GIFs use the animation's step durationMs values, so per-step pacing is preserved. Palette quantization (gifenc's median-cut) is applied automatically when the project exceeds 256 colours — there's no manual toggle. Loop mode comes from the animation's own settings (loop / pingpong / once), not the export dialog. Onion skin, tile preview, and color cycles are not baked into GIF output.

For palette-cycling animations that should "just work" as a GIF, you'd need to bake frames manually first — there's no automatic cycle-to-frames conversion yet.


Project JSON

Raw export of the project manifest as a single .json file. Includes everything: frames, layers, sprites, animations, palette, ramps, cycles, tags, etc. — but no pixel data (no PNGs).

Useful for:

  • Tooling that wants to read the project structure
  • Debugging
  • Diffing project state in version control (the JSON is human-readable)

Not useful for round-trip re-import — for that, use .mstack.


Tips

  • For game engines, Sprite Sheet + JSON is almost always what you want.
  • For social media / portfolio, PNG at a higher scale (4× or 8×) keeps the pixel-art look without browser smoothing.
  • For bug reports / sharing intermediate work, .mstack is the right format — it's a complete project the recipient can open and edit.
  • Save common configurations as export presets so you don't re-set them every time.

Motestack is a personal hobby project. The editor and these docs ship under no warranty — back up your `.mstack` files.