Converters JSON ⇄ Excel Converter

JSON ⇄ Excel Converter

Convert a JSON array of objects into an Excel workbook with a column for every key, or turn a workbook back into JSON. Files up to 200MB are converted in your browser.

Or upload a .json file

Drag & drop a file here, or click to browse

Under 5MB loads into the box above so you can preview and edit it first — larger files (up to 200MB) convert automatically in the background

How to use this tool

Switch to JSON → Excel, paste a JSON array of objects (or upload a .json file — small files load into the box for editing, larger ones convert straight away), and click convert to download a formatted .xlsx spreadsheet where each object becomes a row. Switch to Excel → JSON and drop in a workbook to get back a clean JSON array — the first sheet is read automatically. Files up to 200MB are supported — large uploads are processed in a background Web Worker so the page never freezes, and everything happens locally in your browser; your data is never uploaded anywhere.

What the spreadsheet looks like

Each object becomes one row and each key becomes a column header. Given two records where only the second has an email and the first has a nested address:

[
  { "name": "Asha", "plan": "pro", "address": { "city": "Pune" } },
  { "name": "Ravi", "plan": "free", "email": "ravi@example.com" }
]

the workbook gets four columns (name, plan, address, email). Asha's email cell and Ravi's address cell are blank, and Asha's address cell holds {"city":"Pune"} as text. A single JSON object (not wrapped in an array) is treated as a one-row sheet.

Limits that come from Excel itself

An .xlsx worksheet holds at most 1,048,576 rows (so 1,048,575 records plus the header row), 16,384 columns, and 32,767 characters in a single cell. The converter counts rows before it starts building the workbook and tells you straight away if the data won't fit, instead of failing halfway through. It also stops at roughly 8 million cells (rows × columns), because beyond that, building the file inside a browser tab gets impractically slow. For data that big, the JSON ⇄ CSV Converter has no row or cell limit, which matters when the next step is a database import or a script rather than a spreadsheet.

Before converting a workbook to JSON

Three spreadsheet habits cause surprises in the JSON. Merged cells keep their value only in the top-left cell, so a region name merged across five rows appears on the first record and is an empty string on the next four. Unmerge and fill down first. Extra header rows (a title above the real headers) become the keys, so delete them. Multiple sheets: only the first is read, so move the sheet you need to the front. The JSON conversion guide covers how the same data behaves in CSV, XML and YAML.

Frequently Asked Questions

What happens to nested objects and arrays?

They are written into a single cell as JSON text, for example {"city":"Pune"} or ["gst","annual"], so nothing is lost. Converting that sheet back gives you the text, not the original object. If you want each nested field in its own column (address.city, tags.0), use the Nested JSON ⇄ Excel (Flatten) converter instead.

What if my objects don't all have the same keys?

Every key found in any object becomes a column, in the order the keys first appear, and objects without that key get a blank cell. A field that only exists on the 900th record still gets its own column.

How are dates, empty cells and formulas handled going from Excel to JSON?

Cells formatted as dates come back as ISO text such as "2026-09-24" (or "2026-09-24 14:30:00" with a time), not as Excel's internal day count such as 46289. Empty cells become empty strings, numbers stay numbers, and a formula cell gives the value Excel last calculated and saved.

Why do some keys come back as Name_1?

The first row of the sheet becomes the JSON keys. If two columns share a header, the second gets a _1 suffix (Name, Name_1) so neither value overwrites the other. Only the first sheet of the workbook is read.

Related Tools

Related Blog Posts