JSON is how APIs, apps and exports hand over data, and Excel is where people want to sort, filter and chart it. This page reads the JSON, works out where the rows are, flattens the nesting into columns and writes a real .xlsx workbook, with a preview of the table first so you can see what you will get. It is free to use, with no account and no upload limit, and it runs entirely in your browser: nothing is uploaded, and while the page stays open, a feature you have already used keeps working offline.
The flattening follows the usual rules: an object inside a record becomes dotted columns such as address.city; a list of plain values such as tags is joined into one cell; a list of objects (the order lines of an order, say) becomes extra rows with the order's other columns repeated, or, if you prefer, a sheet of its own linked back to the main sheet by row number. Columns keep the order they first appear in. The workbook is written with SheetJS.
- How is nested JSON turned into columns?
- Each level of nesting adds to the column name with a dot:
{"user": {"name": "Ada", "address": {"city": "London"}}} gives the columns user.name and user.address.city. Data nested more than 64 levels deep is kept as JSON text in one cell, and the page says so. - What happens to arrays in the JSON?
- A list of plain values (["red", "blue"]) is joined into one cell, with a comma unless you choose another separator. A list of objects becomes one row per object with the record's other columns repeated, or with "Extra sheets" a sheet of its own whose _parent_row column points back at the row it belongs to. Where two long lists sit side by side, the later one is kept as JSON text rather than writing every combination, and the page says so.
- Will Excel mangle long IDs, phone numbers or zip codes?
- Not in the .xlsx: JSON text is written as text, so "000123", "+44 20 7946 0000" and a 20-digit order number arrive exactly. Only real JSON numbers become numbers. One catch is in the JSON itself: a bare number with 16 or more digits cannot be kept exactly by JavaScript or Excel, so put such IDs in quotes; the page warns when it sees one.
- How big a JSON file can it convert?
- Files up to 150 MB, worked on in the background so the page stays usable, with Stop to cancel. An Excel sheet holds at most 1,048,576 rows and a cell 32,767 characters: a bigger table can still be saved as CSV, and the page says when cells were cut. Very large files need a computer with plenty of memory.
- Is my JSON uploaded?
- No. The JSON is read and the spreadsheet written in this browser tab on your device, which matters for API exports full of customer records or keys. Nothing is sent to this site or anywhere else.