JSON to Excel converter

Paste a JSON array and download a real .xlsx spreadsheet, built entirely in your browser.

Everything runs in your browser. Your data never leaves your device.

How the conversion works

Paste a JSON array and the tool builds a genuine .xlsx workbook on the spot. An array of objects becomes a table: each object is a row, its keys become the header row, and the columns line up across the whole file even when some objects miss a key here and there. An array of arrays is written exactly as given, one inner array per row, which suits data that already looks like a grid. As soon as the input parses, the row and column counts appear and the download button hands you the finished spreadsheet.

Unlike converter websites that upload your file to a server, process it there and hand you back a link, this one does the whole job inside your browser. The JSON you paste, which is often an API response, a database export or a customer list, never leaves your device. Once the page has loaded, the converter even works offline.

Types survive the trip. JSON numbers become real numeric cells you can sum, sort and chart. Booleans become TRUE and FALSE. Strings stay text, and null becomes an empty cell. That makes the output immediately usable in Excel, LibreOffice or Google Sheets without a round of find and replace.

Worked examples

[{"name": "Ada", "age": 36}, {"name": "Grace", "age": 45}]
A sheet with headers name and age, two data rows, and ages as real numbers
[["Product", "Price"], ["Tea", 2.5]]
Two rows written as-is: the first inner array acts as your header row
[{"name": "Ada", "address": {"city": "London"}}]
Columns name and address.city, because nested objects flatten one level with dot keys

Nested data and how it is flattened

Spreadsheets are flat and JSON is not, so something has to give. The rule here is simple and predictable: objects nested one level deep are flattened using dot keys, so an address object containing city and postcode becomes two columns called address.city and address.postcode. Anything deeper than one level, and any array sitting in a value, is written into its cell as JSON text rather than being dropped. You keep all the data, and the awkward parts are clearly visible instead of silently missing.

If your structure is deeply nested, the honest answer is that a spreadsheet may not be the right shape for it at all. But for the common case, an array of records with the odd nested object, the dot-key convention gives you tidy, self-explanatory column names that many databases and BI tools will accept directly.

Errors it catches for you

The input is validated before anything is built, and the messages say what is actually wrong. Broken JSON reports the parser error so you can fix the stray comma or missing quote, and the JSON formatter linked below is handy for tracking those down. A single object on its own is rejected with a hint to wrap it in square brackets. An empty array, objects with no keys at all, and a mixture of objects and arrays in the same list each get their own clear message, because a converter that guesses in those situations produces a spreadsheet you cannot trust.

One practical limit to know about: everything happens in your browser's memory, so enormous inputs of hundreds of thousands of rows can make the tab work hard. For everyday exports, a few rows to a few tens of thousands, the conversion is effectively instant. The download is a standard Office Open XML file with a single worksheet called Sheet1, so it opens anywhere .xlsx is accepted, including Excel on the web and on phones.

Frequently asked questions

Is my JSON uploaded anywhere?

No. The spreadsheet is built entirely in your browser with JavaScript and downloaded straight from memory. API responses, exports and customer data never leave your device, which is the big difference from converter sites that upload your file to a server.

What shape does the JSON need to be?

An array. Either an array of objects, where each object becomes a row and its keys become the column headers, or an array of arrays, where each inner array becomes a row exactly as given. Anything else, such as a single object or a mix of the two, shows a clear error instead of guessing.

What happens to nested objects?

They are flattened one level using dot keys. A value like address with city inside it becomes a column called address.city. Anything nested deeper than one level, and any array value, is written into the cell as JSON text so nothing is lost.

Do numbers stay numbers in Excel?

Yes. JSON has real types, so a number in your data becomes a proper numeric cell you can sum and sort, booleans become TRUE and FALSE, and strings stay text. Null and missing values become empty cells.

Can it produce more than one sheet?

No, the output is a single worksheet called Sheet1 in a standard .xlsx workbook. If you need several sheets, convert each array separately and copy the sheets together in Excel.

Related tools