Does this download a real .xlsx file?
Yes. The worker builds an Office Open XML zip. Use the download button in the editor chrome; the preview is TSV only so you can check columns first.
Paste an array of objects and download a real .xlsx file Excel and Sheets can open. Nested objects become dotted columns (address.city). Nested arrays can be indexed, joined, or left as JSON strings.
JSON formatter
Run a tool to see a polished result here
JSON to CSV on this site emits comma-separated text. JSON to Excel builds an Office Open XML workbook (a zip of worksheet XML) and offers a binary download. Numbers stay numeric cells, booleans stay boolean cells, and the file opens in Excel without a text-import wizard.
If you only need portable text for git or pandas, use JSON → CSV — it stays CSV and does not build a workbook.
Need elements and attributes instead of a grid? JSON → XML maps objects to XML and @_ keys to attributes.
For Kubernetes or CI files that should stay nested, convert with JSON → YAML rather than flattening into columns.
In flatten mode each nested key is joined with a dot. `{"address":{"city":"London"}}` becomes a column named address.city. Empty objects become an empty cell. Sibling keys at the same depth keep their own columns, so mixed documents still produce a rectangular table: missing keys are blank, they do not shift other columns.
{ "name": "Ada", "address": { "city": "London", "zip": "EC2A" } }
→ name | address.city | address.zip
Ada | London | EC2Aflatten indexes arrays: tags.0, tags.1. Rows with fewer items simply leave later columns empty. flatten-join collapses primitive arrays into one cell (`json, excel`) which is easier to filter in Excel. Arrays of objects are too wide to join usefully, so flatten-join stringifies them. stringify leaves every nested value as a JSON string in the original key’s column — closest to how JSON to CSV behaves on this site.
{ "tags": ["json", "excel"] }
flatten → tags.0=json, tags.1=excel
flatten-join → tags=json, excel
stringify → tags=["json","excel"]One worksheet named JSON. Cell text longer than 32,767 characters is truncated with an ellipsis. Extremely wide objects create many columns; Excel’s column limit is 16,384. Dates remain strings unless they are already JSON numbers. Formulas are not evaluated: a string that starts with = is stored as text so pasted IDs cannot become formulas.
The sample is two people with nested address objects, tag arrays, booleans, and scores. Default flatten mode turns address.city, address.zip, tags.0, and tags.1 into columns. Switch the option to stringify to keep address and tags as JSON cell text.
[
{ "name": "Ada", "role": "engineer", "address": { "city": "London", "zip": "EC2A" }, "tags": ["json", "excel"], "active": true, "score": 9.5 },
{ "name": "Linus", "role": "maintainer", "address": { "city": "Helsinki", "zip": "00100" }, "tags": ["kernel"], "active": false, "score": 10 }
]Use JSON to Excel when you need a spreadsheet file — finance exports, support CSVs that accounting insists must be .xlsx, or nested API lists that should become columns. Stay on JSON to CSV if you only need a portable text table for git or pandas.
Yes. The worker builds an Office Open XML zip. Use the download button in the editor chrome; the preview is TSV only so you can check columns first.
flatten makes dotted columns (address.city, tags.0). stringify keeps nested values as JSON text in one cell. flatten-join is flatten for objects, but primitive arrays become a single comma-separated cell.
An array of objects becomes one row per object. A single object becomes one row. A primitive becomes a one-cell sheet under value.
No. Strings are stored as inline text cells, not formulas, so leading = does not execute.
No. Flattening and zip packaging run in the browser worker.