Skip to main content

JSON to Excel

Turn a JSON file into a real Excel .xlsx workbook in your browser. Flattens nested objects into columns and keeps leading zeros intact.

This tool runs entirely in your browser. Nothing you enter is sent to our servers, so there is nothing for us to store or see.

About the JSON to Excel

Turn a JSON file into a real Excel workbook (.xlsx) — not a CSV that Excel happens to open. Everything runs inside this page on your own device, so an API response containing real customer data is never uploaded.

The work is in turning a tree into a rectangle. An array of identical objects is the easy case and rarely what an API actually returns: records disagree about which fields they carry, and some values are themselves objects. The columns here are the union of every key that appears, in the order first seen, so a field present on only the last record still gets a column and the records that lack it get an empty cell rather than being shifted sideways into the wrong headings.

Nested objects are flattened into dotted columns, so {"user":{"city":"London"}} becomes a column headed user.city. Arrays stay as compact JSON in a single cell instead, because a list whose length varies between records would otherwise add and remove columns from row to row — producing a sheet where one column means different things on different rows.

Values are written as text unless you ask for numbers to be detected, and that detection only accepts values that survive a round trip unchanged. So an ID like 00714 stays 00714 instead of arriving as 714, and a long account number is not rounded into scientific notation — the two ways a JSON export is usually corrupted on the way into a spreadsheet.

How to use the JSON to Excel

  1. Choose your JSON

    Drop a .json file onto the box or click to pick one. Several files can be queued and each becomes its own workbook.

  2. Choose how to handle nesting

    Leave flattening on to turn nested objects into dotted columns. Turn it off to keep each nested value as compact JSON in one cell.

  3. Decide about numbers

    Leave detection off to keep every value as text, which is safe for IDs and codes. Turn it on when you need to sum or chart the columns.

  4. Download the workbook

    The .xlsx appears on the row with its row and column count, named after your JSON file.

Frequently asked questions

Is my file uploaded anywhere?

No. The JSON is read and the workbook is built entirely inside your browser, and nothing is sent to a server. You can disconnect from the internet once the page has loaded and it will keep working exactly as before.

What happens when my records have different fields?

The columns become the union of every key that appears, in the order first seen. A field present on only one record still gets its own column, and every record that lacks it gets an empty cell — so nothing is dropped and no row is shifted into the wrong headings.

How are nested objects handled?

They are flattened into dotted column names, so a user object containing a city becomes a column headed user.city. Turn flattening off and the whole nested value is written as compact JSON in a single cell instead, which is lossless but harder to read in a sheet.

Why are my arrays not split across columns?

Because their length varies between records, and splitting them would add and remove columns from row to row — so a given column would mean different things on different rows. Arrays are kept as compact JSON in one cell, which keeps the column count stable and loses nothing.

Will my IDs keep their leading zeros?

Yes. Values are written as text unless you switch number detection on, and even then only values that convert back to identical text become numbers. So 00714 stays 00714 and a sixteen-digit account number is not rounded into scientific notation.

Which JSON shapes does it accept?

An array of objects, an array of arrays (used as the grid directly), an object whose values are all arrays (read as columns), and a single object, which becomes one row. Anything else is reported rather than guessed at.