EthicalFusion

JSON to Excel Converter

Upload a JSON file (array of objects) and download a real Excel (.xlsx) spreadsheet.

Was this tool helpful?

Thanks for the feedback!

Upload a .json file containing an array of objects and this converter builds an Excel workbook (.xlsx) with one row per object and one column per key. It is the quickest way to hand an API response, an export from an app or a list of records to someone who works in Excel.

What the file must contain

The top level of the file has to be an array, and each element should be an object:

[
  {"name": "Asef", "city": "Mumbai", "orders": 12, "active": true},
  {"name": "Riya", "city": "Pune", "email": "riya@example.com"}
]

This produces the columns name, city, orders, active and email, in the order each key first appears. Riya's row has empty orders and active cells, and Asef's row has an empty email cell. The single sheet is named Sheet1 and the download keeps your file's name with an .xlsx extension.

Two error messages are common. "That file is not valid JSON" means a syntax problem such as a trailing comma or single quotes; check it first with the JSON Validator. "The JSON must be an array of objects" appears when the file starts with {, which is typical for API responses such as {"data": [ ... ]}. Save just the inner array to a new file and upload that.

How each value is written

  • Numbers become numeric cells you can sum and sort.
  • Strings stay text exactly as written, so "007" keeps its zeros and "2026-01-15" stays a text value rather than becoming an Excel date.
  • true and false become Excel's TRUE and FALSE.
  • null leaves the cell empty.
  • Nested objects and arrays get a column header, but their cells are left empty.

Flattening nested JSON first

Because nested values do not appear in the sheet, reshape records like {"name": "Asef", "address": {"city": "Mumbai"}, "tags": ["vip", "retail"]} before converting. In JavaScript, one line does it:

rows = data.map(o => ({ name: o.name, city: o.address.city, tags: o.tags.join(", ") }));

Save JSON.stringify(rows) to a file and upload that. Each nested field becomes its own column and the list of tags becomes one readable cell.

After downloading

Excel opens the file with plain columns and no styling. Freeze the header row, apply number formats to amount columns, and turn text date columns into real dates with Data › Text to Columns if you need date arithmetic. If you only need a flat text file rather than a workbook, the JSON to CSV Converter takes pasted JSON. The workbook is assembled in your browser, and the JSON file never leaves your computer.

Frequently asked questions

What JSON structure does the converter need?
A top-level array of objects, such as [{"name":"A"},{"name":"B"}]. Each object becomes a row and each key becomes a column.
Why do I get "The JSON must be an array of objects"?
Your file starts with an object, which is common for API responses that wrap the list in a key like data. Save only that inner array to a new file and upload it.
Why are some columns empty in Excel?
Those keys hold nested objects or arrays, which are not written into cells. Flatten them into simple values before converting.
Do strings that look like dates become Excel dates?
No. Strings are written as text exactly as they appear. Convert the column to dates in Excel afterwards if you need date calculations.
What if different objects have different keys?
Every key found in any object gets a column, in the order the keys first appear. Rows missing a key get an empty cell there.

Related tools

Embed this tool on your site

Paste it into any blog or website. Free, with a credit link.