jfmt.dev

JSON to Excel

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.

input.json

JSON formatter

Input0 B
Output · preview.json
{ }

Run a tool to see a polished result here

Live syncReady · processed locally in your browser
Local-only processing: your JSON never leaves this browser tab.

XLSX is not CSV with a different extension

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.

How nested objects flatten 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       | EC2A

How nested arrays flatten

flatten 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"]

Excel limits this converter respects

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.

Sample input on this page

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 }
]

How to use this tool

  1. Paste JSON that is an array of objects, or a single object (treated as one row). Nested values are allowed.
  2. Pick a flatten mode in the option field: flatten (default dotted columns), stringify (nested JSON in one cell), or flatten-join (primitive arrays become comma-separated cells).
  3. Run the tool. The preview is a tab-separated table so you can check headers before saving.
  4. Use the download control in the editor chrome to save jfmt.json.xlsx. The workbook is built in this tab; it is not sent to a conversion API.

When this page is the right choice

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.

FAQ

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.

What do flatten, stringify, and flatten-join do?

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.

Must the JSON be an array?

An array of objects becomes one row per object. A single object becomes one row. A primitive becomes a one-cell sheet under value.

Will Excel treat =CMD as a formula?

No. Strings are stored as inline text cells, not formulas, so leading = does not execute.

Is my JSON uploaded to build the workbook?

No. Flattening and zip packaging run in the browser worker.