Skip to main content

The .asciid Format

ASCII Diagram stores diagrams in a structured JSON document with a versioned schema.

This is the canonical source format for the app.

Root shape

At a high level, a document looks like this:

{
"$schema": "asciidiagram/v1",
"version": 1,
"metadata": {
"name": "Request Flow",
"createdAt": "2026-04-01T12:00:00.000Z",
"modifiedAt": "2026-04-01T12:05:00.000Z"
},
"objects": [],
"relations": [],
"groups": []
}

Top-level fields

$schema

The schema identifier for tooling and validation.

Current value:

"asciidiagram/v1"

version

The schema version number.

Current value:

1

metadata

Document metadata currently includes:

  • name
  • createdAt
  • modifiedAt
  • optional author

objects

The array of diagram objects. Current object types are:

  • box
  • text
  • arrow

relations

Relations connect one object port to another so arrows can stay attached as the diagram moves.

groups

Groups provide named collections of objects that can be manipulated together.

Why JSON?

JSON is not glamorous, but it is a strong fit here:

  • easy to inspect
  • easy to diff
  • easy to version
  • easy to migrate later
  • easy to manipulate from other tools

Source vs. output

It is important to separate two things:

  • the .asciid file is the source
  • rendered ASCII is an output produced from that source

That means the file can preserve structure the exported text cannot, such as:

  • stable object IDs
  • relations
  • z-index
  • grouping
  • metadata

Learn more