Developer tools

JSON flatten & rebuild

Create a reversible typed JSON Pointer manifest and rebuild the original structure.

JSON flatten & rebuild
Esc to restore

Your inputs

UTF-8 JSON up to 2 MB, 50,000 values and 64 levels. Duplicate object member names are rejected; numeric tokens are preserved.

UTF-8 JSON, NDJSON or GeoJSON up to 2 MB. Files stay on this device.

Results update as you type. Larger files run when you press Update result.

Your result

LOCAL & PRIVATE

Your result will appear here.

Your inputs stay in this browser. Nothing is uploaded or saved.

A clear answer. Here’s how.

Flattening emits one path/type record for each value, including containers, with leaf values preserved exactly. Container markers distinguish arrays from numeric-keyed objects and retain empty arrays/objects. Rebuilding requires the root first, parents before children, unique paths and consecutive array indices. Up to 10,000 manifest records; ordinary JSON node/size/depth limits also apply. Choose rebuild and paste a manifest produced by flattening.

See a worked example

Worked example

A fixed demonstration, separate from the values you enter above.

Direction
JSON → typed pointer manifest
JSON document
{"name":"Ada","items":[{"id":9007199254740993,"active":true},{"id":2,"active":false}],"settings":{"theme":"blue"}}

Example result

[
  {
    "path": "",
    "type": "object"
  },
  {
    "path": "/name",
    "type": "string",
    "value": "Ada"
  },
  {
    "path": "/items",
    "type": "array"
  },
  {
    "path": "/items/0",
    "type": "object"
  },
  {
    "path": "/items/0/id",
    "type": "number",
    "value": 9007199254740993
  },
  {
    "path": "/items/0/active",
    "type": "boolean",
    "value": true
  },
  {
    "path": "/items/1",
    "type": "object"
  },
  {
    "path": "/items/1/id",
    "type": "number",
    "value": 2
  },
  {
    "path": "/items/1/active",
    "type": "boolean",
    "value": false
  },
  {
    "path": "/settings",
    "type": "object"
  },
  {
    "path": "/settings/theme",
    "type": "string",
    "value": "blue"
  }
]

Typed JSON Pointer manifests preserve arrays, numeric object keys, empty containers and exact numeric tokens.