Skip to content
GridMD
Open formatv1.0MIT

Markdown for spreadsheets.

A line-oriented plain-text format for full-fidelity workbooks. An AI can write it reliably, you can edit it in any text editor, and a database can address it block by block. It round-trips to XLSX and ODS with nothing silently dropped.

Read the spec$ gridmd2xlsx quarterly-report.gmd
financials.gmdHover a line ↔ see its cells
---
gridmd: "1.0" · title: Financials
---
# Financials
@ A1 "Q3 Earnings Report" { bold: true, size: 14 }
@ B2 =SUM(E6:E7) :: 818.55 { numfmt: "$#,##0.00" }
```{table} Sales at A5 · style: medium-2
| id | product | qty | price | total |
| 1 | Widget A | 45 | 12.99 | =[@qty]*[@price] |
| 2 | Widget B | 12 | 19.50 | =[@qty]*[@price] |
```
```{chart} bar "Revenue" at G2:H8
series: [{ val: Sales[total] }]
```
Rendered workbook · Financials
ABCDE1Q3 Earnings Report2$818.555productqtypricetotal6Widget A45$12.99$584.557Widget B12$19.50$234.00
Revenue by product
A
B

Why a new format

Serialisation today forces a bad trade.

Every existing option gives up something essential. GridMD keeps the formulas, the formatting and the diff. One populated cell costs one line, and a .gmd file still renders fine in any Markdown viewer.

Full fidelityReadable &
diffable
LLM-authorable
OOXML / ODS
CSV / MD tables~
JSON models~
GridMD

Design goals · in priority order

1

LLM-authorable. Low nesting, line-oriented, no escape-character hell; an XLSX formula pastes in verbatim.

2

Human-parsable. Hand-editable in any text editor; renders passably as Markdown.

3

Database-friendly. Block-addressable: one block is one row; concurrent edits to different blocks merge cleanly.

4

Concise. A populated cell costs one line; dense data costs about what CSV would; empty cells cost nothing.

5

Full XLSX fidelity. Everything’s representable, natively or through the {raw} escape hatch. The no-silent-loss rule is absolute.

The directive catalogue

Feature surfaces live in fenced, typed blocks with YAML bodies. Sparse cells stay one-line @ directives.

{table}{chart}{cf}{pivot}{validation}{filter}{sparklines}{comments}{outline}{page}{query}{script}{slicer}{raw}

The formula ⇄ cached-value pair =F :: V means consumers without a calc engine still read correct values.

Free. Open. No Pro tier; the format is the point.

GridMD is MIT-licensed: spec, parser and linter. It’s also the native tongue of Lattice. When its AI drafts a workbook, it streams GridMD, and the grid renders it live.

Get in touch

Implementing GridMD?

Spec questions, interop findings, linter bugs; the maintainers read everything.

Send message