v1.0.0 Native JSON workbench

The JSON workbench.

Open any JSON instantly — even a multi-gigabyte file. See it five ways, generate types for nine languages, compare, repair, and export — all in one fast, native, offline app. Free and open source.

Apache-2.0 macOS · Windows · Linux Offline & private
users-2026-05.json
schema.json
Compare ⌘D
Export ⌘E
Outline
Schema
Types
History
[ root ] 109,472
0 5
1 5
2 5
name
email
verified
3 5
4 5
Tree Expand · Collapse · Search
[[ 109,472 items ]
0: 5 props 
1: 5 props 
2:
name:"Carmen Herzog"
email:"c.herzog@ebert.biz"
verified:true
followers:12846
deletedAt:null
3: 5 props 
4: 5 props 
109,467 more — virtualized
Code CodeMirror · fold gutter
1[
2   … 5 keys … ,
3  
4    "name": "Carmen Herzog",
5    "email": "c.herzog@ebert.biz",
6    "verified": true,
7    "followers": 12846,
8    "deletedAt": null
9  ,
10   … 5 keys …
Path$[2].name
Typestring
Size1.2 GB
JSON valid
⌘K Commands
Open sourceApache-2.0 license
3 platformsmacOS · Windows · Linux
GB+Opens multi-GB with no lag
OfflineData never leaves your machine
Five views

One document, five ways to read it.

The same JSON as a tree, raw code, a spreadsheet, a node graph, or a diff — switch instantly with ⌘1–⌘4. The product window stays exactly as it ships.

Tree ⌘1 Code ⌘2 Grid ⌘3 Graph ⌘4 indent guides · drag-reorder
id:4821
name:"Carmen Herzog"
roles:[ 2 items ]
0:"admin"
1:"editor"
profile:
verified:true
followers:12846
website:"herzog.dev"
deletedAt:null
Tree view of a JSON document in Pandia
Tree ⌘1 Code ⌘2 Grid ⌘3 Graph ⌘4 CodeMirror 6 · line + fold gutters
1
2  "id": 4821,
3  "name": "Carmen Herzog",
4  "roles": ["admin", "editor"],
5  "profile":
6    "verified": true,
7    "followers": 12846
8  ,
9  "deletedAt": null
10
Code (CodeMirror) view of JSON in Pandia
Tree ⌘1 Code ⌘2 Grid ⌘3 Graph ⌘4 sortable · per-column filter
verified = true followers > 5000 71,204 of 109,472 rows
# id name email verified followers nullable
04821Carmen Herzogc.herzog@ebert.biztrue12846
14822Anna Reuteranna@reuter.iotrue8190
24823Jadon Wizajadon.w@kihn.comtrue23117
34824Clair Emardclair@emard.nettruenull
44825Leon Bartellleon.b@hane.orgtrue6402
54826Mara Okunevamara@okuneva.cotrue19553
Grid (spreadsheet) view of JSON in Pandia
Tree ⌘1 Code ⌘2 Grid ⌘3 Graph ⌘4 left → right · export PNG / JPEG / SVG
root
id4821
name"Carmen…"
roles [2]
0"admin"
1"editor"
profile
verifiedtrue
followers12846
tags [3]
0"pro"
links
web"herzog…"
Fit100%Expand allExport ⌄
Graph (node diagram) view of JSON in Pandia
Compare ⌘D Side-by-side Tree Inline sync-scroll · Prev / Next
+3 added−2 removed~2 changed↔1 moved
users-2026-04.json base
  "name": "Carmen Herzog",
~  "followers": 11030,
  "legacy": true,
  "plan": "trial",
  "verified": true
users-2026-05.json current
  "name": "Carmen Herzog",
~  "followers": 12846,
+  "verified": true,
+  "website": "herzog.dev",
+  "deletedAt": null
Compare / diff view of two JSON documents in Pandia
Default = Tree. Square corners, 1px hairlines, uncolored keys, the one orange cursor — the product shot is the app, not a render of it.
Capabilities

A workbench, not a viewer.

Everything you reach for when JSON gets real — import, generate, compare, repair, validate. Pick one to see it in action.

Bring it in
Shape it
Check & ship
Paste · auto-detect
$ curl https://api.acme.dev/v2/users -H "Auth: ***"
✓ Detected cURL — converting to JSON…
1
2  "users": [ … 109,472 ],
3  "page": 1,
4  "total": 109472
5
Paste · drop · open · fetch URL — JSON, YAML, XML, CSV, cURL.
Repair malformed JSON
1
2  name: 'Carmen',unquoted key · single quotes
3  "followers": 12846,trailing comma
4
↳ repaired
1
2  "name": "Carmen",
3  "followers": 12846
4
Generated · from 109,472 records TS Rust Go Zod
1interface User
2  id: number;
3  name: string;
4  verified: boolean;
5  followers: number | null;
6  deletedAt: string | null;
7
type Users = User[];
1#[derive(Serialize, Deserialize)]
2pub struct User
3  pub id: i64,
4  pub name: String,
5  pub verified: bool,
6  pub followers: Option<i64>,
7
1type User struct
2  ID int64 `json:"id"`
3  Name string `json:"name"`
4  Verified bool `json:"verified"`
5  Followers *int64 `json:"followers"`
6
1const User = z.object(
2  id: z.number(),
3  name: z.string(),
4  verified: z.boolean(),
5  followers: z.number().nullable(),
6);
Optional fields inferred · not configurable by design ⎘ Copy
Compare · users-04 ↔ users-05+1~1−1
  "name": "Carmen Herzog",
~  "followers": 12846,
+  "verified": true,
+  "website": "herzog.dev",
  "legacy": true
Side-by-side · tree · inline — added, removed, changed & moved.
Validate · JSON Schema 2020-12
1 "age": "31", "email": "x@", "role": "owner"
/age expected integer, got string
/email must match format "email"
/role not one of [admin, editor, viewer]
3 errors · click to jump to the offending node.
ExportYAMLJSONCSVXML
1users:
2  - id: 4821
3    name: Carmen Herzog
4    verified: true
5total: 109472
JSON · JSON-min · YAML · CSV · XML — copy or save to file.
How it works

Open it. See it. Shape it. Ship it.

Four steps, no ceremony between them. From a file on disk to clean output, in one window.

01 OPEN

Open

Drag in a file, paste, or fetch a URL. It loads instantly — no spinner, no upload.

users-2026-05.json
✓ 1.2 GB · ready
02 SEE

Navigate

Tree, code, grid, graph — virtualized so it stays smooth. The status bar tracks your path.

$[2].name
"Carmen Herzog"
03 SHAPE

Transform

Edit, sort keys, repair, filter the grid, or generate types. Every change is reversible.

⌘Z undo · ⌘⇧Z redo
✓ 500-op history
04 SHIP

Export

Out to JSON, YAML, XML, CSV — or generated types for your codebase.

⌘E → User.ts
✓ copied to clipboard
Built for big
GB+

Most editors choke at a few hundred megabytes. Pandia opens files of any size — hundreds of MB, multiple GB — without parsing the whole tree: lazy zero-copy slicing engages at ≥ 10 MB (backed by sonic-rs) and the UI only ever fetches the slice on screen.

You scroll, search, and navigate instantly — there's no cap on opening or viewing. Only whole-document edit, export and validate materialize the root (a 200 MB ceiling).

Lazy mode≥ 10 MB  zero-copy slicing engages
Openingany size  multi-GB, no lag, no cap
200 MB caponly whole-doc edit / export / validate
Recoveryauto-save & backups, scan / restore
users-2026-05.json 1.2 GB · 109,472 records
Open instant
First paint virtualized
In memory lazy slice
Binary Rust + Tauri
Why Pandia

Native, private, and yours to keep.

No accounts, no cloud, no telemetry. A small native binary that respects your machine and your data.

Offline & private

All processing is local. The only network call is a URL fetch you start yourself.

Native & fast

Built on Rust + Tauri 2. A small binary that starts instantly and stays out of the way.

Cross-platform

One workbench for macOS, Windows and Linux — the same views, the same shortcuts.

Make it yours

19 themes, density options, and 12+ code fonts. Light or dark, your way.

Forgiving

Per-tab undo / redo with exact inverses, plus crash recovery from auto-saved backups.

Free & open source

Apache-2.0. Read the code, file an issue, or build it yourself. No tiers, ever.

Questions

The honest answers.

No. Pandia is a native desktop app and everything is processed locally. The only time it touches the network is when you fetch a document from a URL. No accounts, no cloud, no telemetry.
Any size — hundreds of MB, multiple GB. At ≥ 10 MB, lazy zero-copy slicing (via sonic-rs) opens the file without parsing the whole tree, and the UI only fetches what's on screen — so there's no cap on opening or viewing. Only whole-document edit, export and validation materialize the root (a ~200 MB ceiling).
Import and auto-detect JSON, YAML, XML, CSV and cURL, or fetch from a URL. Export documents as JSON, JSON-min, YAML, CSV or XML, and graph images as PNG, JPEG or SVG. (CSV export needs a root array of objects.)
Yes — nine targets: TypeScript, Rust, Go, Kotlin, Python, PHP, Java, Zod and JSON Schema (2020-12). Optional fields are inferred from the data; generation is deliberately not configurable.
No. Pandia doesn't ship a query language. Instead you navigate the tree, run substring find & replace, and use the Grid's column filters (13 operators, OR-of-AND groups) and sorting to slice arrays of objects.
Yes. Pandia is free and open source under Apache-2.0. There are no paid tiers and no plans for any. The source lives at github.com/hendurhance/pandia.
Get Pandia

Stop fighting your JSON.

Download the native app, open your biggest file, and get to work. Free, offline, and open source.