--- title: "Figma .fig File — Proprietary Binary Format; Assets Extractable, Layout Data Not" aliases: [figma-fig-format, fig-binary, figma-file-format] tags: [figma, binary, file-format, mcp, design] sources: - "daily/2026-05-10.md" created: 2026-05-10 updated: 2026-05-10 --- # Figma .fig File — Proprietary Binary Format ## Key Takeaways - `.fig` file = ZIP archive containing `canvas.fig` (binary, magic bytes `fig-kiwij`, proprietary compressed format) - Image assets (photos, icons) stored as regular files inside the ZIP — accessible via `unzip` - Layer positions, offsets, component definitions, and text content NOT accessible without Figma - `strings` command on `canvas.fig` returns nothing useful — the binary is compressed/encoded - Figma plugins cannot be installed from terminal — only through Figma Desktop or Browser UI ## Details A `.fig` file can be unzipped: ```bash unzip design.fig -d design_extracted/ # → canvas.fig (the binary, ~95% of file size) # → images/ (PNG/JPEG assets referenced in the design) # → thumbnails/ (preview images) ``` The `canvas.fig` file has magic bytes `fig-kiwij` and is a proprietary compressed binary. It is NOT parseable without the Figma proprietary decoder — `strings`, `jq`, `binwalk`, and similar tools yield nothing useful. ## What You Can and Cannot Do | Goal | Approach | Works? | |------|----------|--------| | Extract image assets from .fig | `unzip file.fig -d out/` | ✅ Yes | | Read layer names / positions | `unzip` + parse `canvas.fig` | ❌ No | | Read component structure | `unzip` + parse `canvas.fig` | ❌ No | | Read text content | `unzip` + parse `canvas.fig` | ❌ No | | Full design data | Figma REST API (`GET /v1/files/:key`) | ✅ Yes (requires key) | | Full design data from local file | Figma Desktop (File → Export) | ✅ Yes | ## Figma REST API Alternative To get layer/component/text data programmatically: ```bash curl -H "X-Figma-Token: $FIGMA_TOKEN" \ "https://api.figma.com/v1/files/$FILE_KEY" | jq '.document' ``` The `FILE_KEY` is the hash from the Figma URL: `figma.com/design/{FILE_KEY}/...` ## Context Discovered while attempting to parse a `.fig` file locally to extract component information for a project setup. The Figma MCP server (`plugin:figma`) uses the Figma REST API under the hood — it requires the file to be in Figma's cloud, not a local `.fig` file.