Skip to content

Structile

Structile

A spatial editor and diff tool for structured data.

Structile shows JSON (and Python-repr, and XML/HTML, and — with a small plug-in script — pretty much any text format) as nested, packed boxes instead of an indented tree: dicts become boxes-of-boxes, lists of similar-shaped dicts become tables, and everything is editable in place, searchable, undoable, and diffable.

This is the user guide: how to actually use it, in each of the three places it runs. It assumes nothing about your local setup beyond what each page says.

Three ways to run it

What it is Best for
Standalone viewer One HTML file, no install, no server. Open it in a browser and drop a file on it. A one-off look at a file, or handing the viewer to someone with no Python/VS Code at all.
Python / Jupyter library pip install structile — renders inline in a notebook, or writes/opens a standalone file from a script. Working with data already in Python (a dict, a loaded file, a diff() between two of them).
VS Code extension Opens .json/.py/.xml files as an editor, synced live with the real text. Editing structured config/data files as part of normal editor workflow.

All three are the same viewer underneath — a setting you learn in one transfers to the others, and a file saved from one opens correctly in either of the other two.

Structured data past the basics — writing your own format support, or handing that format support to other people — is covered once, for every environment, in Writing and distributing interpreters. Want to learn by running real notebooks instead of reading? See Examples & study material.

Install

Take it offline

Everything on this site is downloadable, not just browsable:

What it isn't

Structile edits and compares structured data — it's not a general text editor, a schema validator, or a database tool. If your file is source code, use your normal editor; if it's .json/.py(-repr)/.xml/.html, or any other text format you're willing to describe with a small interpreter script (see Writing and distributing interpreters), that's exactly what this is for.