How to convert JSON to Excel
- Open a .json file or paste JSON and press Convert.
- Keep nested objects flattened into columns, or switch that off.
- Download the .xlsx file and send it to whoever needs it.
For people who don't read JSON
You pulled a report from an API, exported records from a database or grabbed a webhook payload, and now a manager, client or teammate wants to look at it. Sending raw JSON means brackets, quotes and nesting that only developers can scan. A spreadsheet is the format everyone already knows: columns they can sort, filters they can apply, cells they can highlight and comment on.
This converter creates a genuine .xlsx workbook, not a CSV renamed to look like one, so it opens with proper cells and types in Excel, Google Sheets, Apple Numbers and LibreOffice.
Numbers stay numbers
Values keep their JSON type in the workbook. A price of 19.9 lands as a number you can total with SUM, true and false become Excel's TRUE and FALSE, and strings stay strings, including ones like "00042" that a CSV import would mangle. That's the practical advantage over exporting CSV and asking the recipient to open it: nothing gets reinterpreted on the way in.
Column widths are set from the content of the first rows, so the sheet is readable the moment it opens instead of a grid of narrow, cut-off columns.
How nested JSON becomes columns
Spreadsheets are flat, JSON usually isn't. By default each nested property gets its own column with a dotted name:
| JSON | Spreadsheet columns |
|---|---|
{"name": "Kim", "address": {"city": "Austin", "zip": "78701"}} | name · address.city · address.zip |
"tags": ["red", "sale"] | one cell: red, sale |
"lines": [{…}, {…}] | one cell holding the JSON text |
Every property that appears in any object becomes a column, even if most rows don't have it. Switch flattening off to keep nested objects as JSON text in a single column instead.
Several tables in one workbook
If your JSON is an object whose values are all arrays, for example {"customers": […], "orders": […]}, each array becomes its own sheet named after its key. Sheet names are trimmed to Excel's 31-character limit, and characters Excel doesn't allow in sheet names are replaced. A plain array becomes a single sheet.
Also accepted: arrays of arrays (each inner array is a row), a single object (one row) and JSON Lines with one object per line. If the JSON can't be parsed, the tool points to the line and character where the problem is.
Stays on your computer
API responses often contain email addresses, order details or internal IDs. The conversion happens inside your browser, and the workbook is created on your device, so none of that data is uploaded. For a lightweight text version instead, use JSON to CSV; to go from a spreadsheet back to JSON, use Excel to JSON.
More ways to use this tool
Frequently asked questions
Is my JSON uploaded?
No. The JSON is parsed and the Excel file is generated in your browser. Your data doesn't leave your device.
Can I make several sheets?
Yes. Use an object whose values are arrays, like {"customers": [...], "orders": [...]}. Each key becomes a sheet.
What happens with nested objects?
They are flattened into columns with dotted names such as address.city. You can switch this off to keep them as JSON text.
Will numbers be real numbers in Excel?
Yes. JSON numbers are stored as numeric cells and true/false as Excel booleans, so formulas and sorting work right away.
Is there a size limit?
Excel sheets hold up to 1,048,576 rows. Beyond that the tool shows a message. Otherwise the limit is your device's memory.