Mesh Avatar Studio Guide
Guides › Inside the .mavatar File Format

Inside the .mavatar File Format

A project folder, an archive, and a manifest — how avatars are stored and shared.

Every Mesh Avatar Studio avatar exists as a project folder while you work and as a single .mavatar archive when you share it. Understanding the layout helps with troubleshooting, backup and building tools on top.

The project folder

projects/<name>/
├── source.png        # your illustration, untouched
├── rig.json          # the skeleton (see the rig fields reference)
└── built/            # generated layers and metadata
    ├── base.png          # artwork minus cut-out layers
    ├── hairmask.png      # inferred hair mask
    ├── eye0_*.png …      # per-eye ball/lash/low/crease layers
    ├── layers.json       # layer metadata
    ├── sprites/          # drawn variants (closed eyes, mouths…)
    └── overlays/         # glasses and similar overlay layers

The folder is created by the agent tooling (tools/new-project.py) and never committed to version control. source.png plus rig.json fully determine the build: delete built/ and you can regenerate it.

What the builder writes

The .mavatar archive

Export .mavatar in the editor packs one file containing:

Imports accept archives up to 128 MiB and create a fresh project under projects/, renaming on collision.

Compatibility and validation

The format documents archive rules and compatibility guarantees — runtimes validate manifests and layer metadata on load, and the repository ships tooling to pack and validate whole folders (useful in CI or before sharing). The avatar element and the mesh-avatar npm package both load the same artifacts, and the experimental native (Rust) runtime reads the same .mavatar files and built folders as the JavaScript runtime.

Practical notes

The authoritative spec — every file, field and compatibility rule — is the official format documentation.