Celtrim

Convert JSON to Excel

Turn JSON into a real .xlsx workbook or a CSV — nested fields flattened, one sheet per array. Or drop a spreadsheet to go back to JSON.

JSON, JSON Lines, or drop an Excel/CSV file to go the other way.

Free · no sign-up · processed on your device

How it works

  1. 01

    Paste the JSON or drop the file

    A .json file, JSON Lines, or a blob pasted from an API all work. Dropping an .xlsx or .csv instead converts that file back to JSON.

  2. 02

    Check the table

    Nested objects flatten with dotted keys. Sibling arrays of objects each become their own sheet. The preview shows the rows before anything is written.

  3. 03

    Download Excel or CSV

    You get a real .xlsx workbook with typed cells, or a CSV, or JSON if you came the other way. Leading zeros and long ids stay intact.

JSON is a tree. A spreadsheet is a rectangle. Converting one into the other is not a rename: something has to decide which array is the rows, what to do with nested objects, and whether a second array in the same payload is another sheet or a cell full of brackets. Most converters take the first array they see and stringify the rest. This one flattens, splits sibling arrays into sheets, and shows the table before you download it — and it runs the other way, from a workbook back to JSON, in the same tab.

How the tree becomes a table

An array of objects becomes One row per object, keys as columns
This is the usual API response. Nested objects flatten: address.city becomes its own column. Arrays of primitives join with commas; arrays of objects stay JSON in that cell, or become a second sheet if they sat at the top level.
An object with named arrays becomes One sheet per array
{ "users": [...], "orders": [...] } becomes two sheets named users and orders, plus a Properties sheet for any leftover scalars. That is how most export payloads are actually shaped.
JSON Lines becomes The same table as a JSON array
One complete object per line, no wrapping brackets. Common in logs and warehouse dumps. If regular JSON.parse fails and every line parses on its own, that is what you had.
A workbook or a CSV becomes An array of objects
The other direction. The header row becomes keys. Several sheets become a JSON object keyed by sheet name. Numbers and booleans are typed rather than quoted, as long as you leave that toggle on.

Related conversions

Common questions

How do I convert JSON to Excel?
Paste the JSON or drop a .json file onto the converter above. An array of objects becomes a table, which you download as an .xlsx workbook or as CSV. Nested fields flatten into extra columns instead of being stuffed into one cell.
Can I convert JSON to CSV as well?
Yes. After the preview appears, download CSV as well as Excel. The same table is written with proper quoting and an Excel-friendly byte order mark.
How are nested objects handled?
They flatten with dotted keys. { "address": { "city": "London" } } becomes a column named address.city. Nested arrays of objects at the top level of a payload become their own sheet rather than a JSON blob in one cell.
Can I convert Excel or CSV back to JSON?
Yes. Drop an .xlsx or .csv onto the same page. Each sheet becomes an array of objects using the header row as keys. A workbook with several sheets becomes a JSON object keyed by sheet name.
Does it keep leading zeros and long ids?
Yes, when they arrive as strings in the JSON — "007" stays 007 in Excel, not 7. JSON numbers have already lost those zeros before they reach any converter, because JSON itself has no way to write them.
Is my JSON uploaded to a server?
No. Parsing and the workbook build both happen in your browser with local JavaScript. The file never leaves your device, and nothing is stored or logged.
What about JSON Lines?
Supported. If the file is not a single JSON value but every line is a complete object, the converter reads it as an array and builds the same table.