JSON to Excel (.xlsx)
Not a CSV renamed — an actual .xlsx package, assembled here in the page. Numbers arrive as numbers so Excel will sum them, the header row is bold and frozen so it stays put while you scroll, and nested objects are flattened to parent.child columns. The preview pane shows what the sheet will contain; the button downloads the workbook.
How to convert JSON to Excel
- Paste a JSON array of objects. A single object becomes a one-row sheet.
- Choose how nested objects are handled — flattening gives you real columns you can sort and filter, keeping them as JSON gives you one cell you can read but not analyse.
- Check the preview. The column set is the union of every record's keys, in first-seen order, so a field present on only some records still gets a column.
- Click Download .xlsx and open it in Excel, LibreOffice, Numbers or Google Sheets.
Why not just use CSV
CSV has no types. Every cell is text, and Excel guesses on import — which is where a product code of
00123 loses its leading zeros, 1-2 becomes a date, and a long id turns into
scientific notation. Writing a real workbook lets each cell declare what it is, so numbers stay numeric and
strings stay strings no matter what they look like.
The one place that choice needs care is treat numeric strings as numbers. It is on by default because JSON exports frequently quote numbers, and a column of quoted amounts you cannot sum is the most common complaint about JSON-to-spreadsheet conversion. Turn it off when your identifiers are digit strings — account numbers, zip codes, anything with a leading zero — because converting those to numbers is exactly the Excel damage this tool exists to avoid.
What is in the workbook
A single worksheet with your data, a two-font style sheet so the header row is bold, and a frozen top row. Strings are written as inline strings rather than through a shared-string table, which makes the file slightly larger and removes a whole class of index-mismatch bugs. Nothing else — no formulas, no formatting, no charts, no second sheet.
The package is a ZIP of XML parts, built with an uncompressed (stored) ZIP writer. That is a valid
.xlsx and every spreadsheet application opens it; it just does not compress, so the file is larger
than one Excel would save. Re-save it from your spreadsheet application if size matters.
Privacy
Nothing is uploaded. The entire workbook — the XML parts, the ZIP container, the checksums — is assembled in this tab using your own browser's JavaScript engine. No server sees your data, and the page keeps working with the network disconnected.
FAQ
How large a file can it handle?
The whole workbook is built in memory as one byte array, so tens of thousands of rows are comfortable and hundreds of thousands are not. Past that, write CSV with JSON to CSV and import it — the size limit moves to Excel rather than the browser.
Why does my nested array show as JSON text?
Because a spreadsheet cell holds one value. Arrays are serialised into the cell as JSON regardless of the nesting option, since flattening tags[0], tags[1]… into columns produces a ragged sheet that changes shape with the data. To get one row per array element, restructure first.
Are dates converted to Excel dates?
No — an ISO date string stays a string. Excel's date type is a serial number with a workbook-level epoch, and guessing that a string is a date is how spreadsheets mangle data in the first place. Convert the column inside Excel where you can see the result.
Can I get several sheets?
One sheet per conversion. For a multi-sheet workbook, produce each sheet here and combine them in a spreadsheet application, which will also compress the result properly.