v1.0 — 446 tests passing · runs in your browser

The AI-native
spreadsheet format.

GridLang puts data, formulas, charts, and live collaboration into a single plain-text file. Excel-compatible formulas, declarative SVG charts, sandboxed Python/JavaScript compute, CRDT-based real-time collab — and a git-friendly, AI-readable source format.

Launch the playground See features
59built-in formulas
9chart types
2compute engines (Py + JS)
0binary blobs
📄 sales.grid
📊 Render
▶ live preview

Q1 Sales Report

RegionJanFebMarTotal

Total by Region

Alice

Everything spreadsheets do — without the binary blob

Each capability is plain text in your .grid file. Diff it. Review it. Hand it to an LLM.

🧮

59 Excel-compatible formulas

SUM, VLOOKUP, SUMIF, PIVOT, IF — author them the way you already know. Cross-sheet refs (sales!B2) supported.

📊

9 declarative chart types

Bar, line, pie, scatter, area, stacked bar, heatmap, sparkline, color scale — written as chart: bar blocks, rendered as inline SVG.

🐍

Python or JavaScript compute

Write a transform(df) in either language. Python runs in a sandbox; JS runs in a Node vm. Set engine: javascript in meta.

🌐

Remote data via @source

Load from URLs, JSON, CSV, XLSX — with caching, header injection, JSON path drilling, and inline fallback rows when the URL is denied.

Live collaboration (CRDT)

Multiple browser tabs edit the same file at once. Convergence proven via Hybrid Logical Clocks + LWW per cell. No cloud needed.

🪄

Reactive cell editing

{{ cell("B2") }} renders an editable cell. Edit in the preview → source rewrites → re-render. Comments and other cells preserved.

📥

Excel ↔ GridLang round-trip

Import .xlsx with formula conversion. Export back with native Excel chart objects (Bar / Line / Pie). Or stick with .csv.

📦

Self-contained JS bundles

gridlang js-bundle packages a .grid into one runnable JS file — Node, browser, or Web Worker. No deps. Byte-identical.

🤖

AI-native by design

An LLM can read, diff, edit, and explain a .grid file. Not a binary archive of XML pretending to be a spreadsheet.

Excel vs GridLang

Same job. Two very different shapes.

Dimension
Excel (.xlsx)
GridLang (.grid)
AI readability
Binary archive of XML
Plain text, readable as-is
Version control
Diffs are opaque
git diff works perfectly
Charts
GUI dialog → embedded blob
Declarative chart: bar blocks
Compute language
VBA macros
Python or JavaScript (sandboxed)
Live collaboration
Office 365 servers + OLE
CRDT over HTTP, no cloud
Testability
Nearly impossible
Standard unit tests (446 passing)
Bundle for browser
Closed COM/OLE objects
js-bundle --browser → Web Worker

How the playground works

Open the editor and the entire toolkit boots in your tab — no servers in the loop.

1

Pyodide downloads

~10 MB Python + WebAssembly runtime, cached after first visit

2

Packages install

pandas · numpy · jinja2 · openpyxl · xlsxwriter · pyyaml — all client-side

3

GridLang loads

23 Python modules fetched from the manifest, mirrored into Pyodide's virtual FS

4

You edit & render

Live preview · cell-level editing · import .xlsx · export back · all 100% local

Try it now — no install, no signup.

First load takes 15-30s while Pyodide warms up. Subsequent visits launch in seconds.

Launch the playground