Convert · JSON to Excel

Convert JSON to Excel (.xlsx)

Turn a JSON array into a real Excel workbook — a downloadable .xlsx file with a header row, typed cells, and your data on Sheet1. Generated entirely in your browser.

No sign-up to start · Runs in your browser

JSON to Excel
Open your JSON in the editor
JSON
Sheet preview

Runs entirely in your browser — nothing is uploaded.

[{"id":1,"name":"Ada Lovelace","dept":"Engineering","salary":95000,"active":true},{"id":2,"name":"Alan Turing","dept":"Research","salary":105000,"active":false}]
To convert JSON to Excel, paste a JSON array of objects and download the result as a real .xlsx workbook — not CSV that Excel has to import. Each object becomes a row on Sheet1, the header row is the union of every object’s keys, numbers and booleans are stored as typed cells, and nested objects or arrays are kept as compact JSON text. The whole workbook is generated in your browser; nothing is uploaded, and the file downloads as data.xlsx.

JSON to Excel example

JSON array of objects
[
  { "id": 1, "name": "Ada Lovelace", "salary": 95000, "active": true, "skills": ["math", "compilers"] },
  { "id": 2, "name": "Alan Turing", "salary": 105000, "active": false, "office": "Bletchley Park" }
]
Sheet1 in the downloaded .xlsx
   A   B             C       D       E                     F
1  id  name          salary  active  skills                office
2  1   Ada Lovelace  95000   TRUE    ["math","compilers"]
3  2   Alan Turing   105000  FALSE                         Bletchley Park

Row 1 is the header — the union of keys across both objects in first-seen order, which is why office gets column F even though only the second record has it. salary lands in numeric cells and active in boolean cells (shown as TRUE/FALSE), the skills array is stored as the compact JSON text ["math","compilers"], and missing values leave F2 and E3 genuinely empty. The status line reports 2 rows × 6 columns → Sheet1.

How to convert JSON to Excel

  1. 1

    Paste your JSON

    A JSON array of objects works best — each object becomes one row and its keys become columns. A single object becomes a one-row sheet, and an array of plain values becomes a single "value" column.

  2. 2

    Click Convert to Excel

    The .xlsx workbook is built instantly and entirely client-side. The output pane shows a CSV-style preview of Sheet1, and the status line reports the exact size, e.g. 2 rows × 6 columns → Sheet1.

  3. 3

    Check the sheet preview

    Confirm the header row has the columns you expect and that rows missing a key show empty cells rather than shifted data. Nested objects and arrays appear as compact JSON text inside their cell.

  4. 4

    Download the .xlsx

    Click Download .xlsx in the toolbar to save data.xlsx. Open it in Excel, Google Sheets, or Numbers: headers sit in row 1, data starts in row 2 — no import wizard, no delimiter or encoding questions.

  5. 5

    Open your JSON in the editor

    Need to reshape the data first? Send the same JSON to the full editor to format, validate, flatten, or explore it as a tree or mind map with the AI copilot.

Why use this converter

A real .xlsx file

An actual Office Open XML workbook — a ZIP of SpreadsheetML parts — that Excel, Google Sheets, and Numbers open natively. Not CSV with an .xlsx name.

Typed cells

JSON numbers become numeric cells and booleans become real TRUE/FALSE cells, so sorting, filtering, and formulas work the moment the file opens.

Union-of-keys header

Row 1 collects every key across all objects in first-seen order; rows that lack a key get an empty cell, never shifted columns.

Nested data preserved

Objects and arrays inside a row are written as compact JSON text in the cell, so nothing is silently dropped. Flatten first if you want one column per nested field.

Generated in your browser

The workbook is assembled 100% client-side and saved straight from memory. Your data never touches a server.

Strings stay strings

Text values are written as text cells, so ZIP codes, phone numbers, and IDs like "00501" keep their leading zeros instead of being coerced to numbers the way CSV imports do.

What’s inside the workbook

The download is a genuine Office Open XML workbook — a ZIP archive of SpreadsheetML XML parts, the same container Excel itself writes — with a single worksheet named Sheet1. Row 1 is the header, built from the union of every object’s keys in the order they first appear: if the first record has id, name, salary, active, and skills, and a later record adds office, the sheet gets six columns and the earlier rows simply leave that cell empty. Missing keys never shift data sideways, because every row is written against the full header.

Cells are typed, not stringified. A JSON number becomes a numeric cell, so SUM, sorting, and filtering work the moment the file opens; true and false become real boolean cells that Excel displays as TRUE and FALSE; strings are written as inline text. That last point matters more than it sounds: an ID like "00501" stays text with its leading zeros intact instead of being coerced to the number 501, which is what CSV imports routinely do. null values and missing keys produce genuinely empty cells — the cell is omitted from the XML entirely, not filled with the word null.

Values that are themselves objects or arrays cannot be spread into a single cell without inventing a convention, so the converter keeps them lossless as compact JSON text: ["math","compilers"] lands in the cell exactly like that. Nothing is dropped, but if you want one column per nested field, flatten the JSON first — the flatten tool rewrites nested keys as dotted paths — and then convert the flat result. A single top-level object becomes a one-row sheet, and an array of plain values becomes one column named value, so the tool stays predictable whatever shape you paste.

Why .xlsx beats CSV when the target is Excel

CSV reaches Excel only through an import step, and the import step is where data gets damaged. Excel guesses the delimiter — and guesses differently in locales where the list separator is a semicolon — then coerces anything that looks numeric: leading zeros vanish from ZIP codes, long IDs get rewritten in scientific notation, and strings like 1/2 quietly become dates. A native .xlsx skips all of it. You double-click the file and every type is already decided, because the types are stored in the cells themselves.

Encoding is the other classic CSV failure. Excel tends to assume a legacy code page for .csv files unless a UTF-8 byte-order mark is present, so accented names and non-Latin text arrive as mojibake. SpreadsheetML is UTF-8 XML by specification, which means Zoë, Müller, and 東京 survive with no BOM tricks and no import dialog. If your data contains user-generated text in any language, this alone is a good reason to hand Excel a workbook rather than a text file.

CSV still wins when the consumer is not Excel: it streams, it diffs cleanly in git, and virtually every database loader, warehouse, and BI tool accepts it. If your destination is a bulk import or a data pipeline, use the JSON to CSV converter instead. This tool is for the case where a human will open the file in a spreadsheet and you want it to just work — no wizard, no cleanup, no explaining to a colleague which delimiter to pick.

Private by construction: built in your browser

The workbook is assembled entirely inside your browser tab: JavaScript serializes your rows to SpreadsheetML, computes the ZIP checksums, and concatenates the archive in memory. Clicking Download .xlsx saves those bytes directly from memory to disk. There is no upload endpoint anywhere in this flow — nothing to intercept, log, or retain — which is a stronger guarantee than a converter that uploads your file and promises to delete it after processing.

That matters because the JSON people push into spreadsheets is often exactly the JSON they should not paste into a random uploader: salary tables, customer exports, API responses that embed emails or tokens. Here the data stays on your device from paste to download. And if you want to inspect or reshape the JSON before converting — rename keys, prune fields, flatten nesting — the full editor works on the same JSON with formatting, validation, tree and mind-map views, and an AI copilot.

Honest limits: what this converter does not do

The output is deliberately minimal. You get one worksheet, always named Sheet1 — there is no option to split an array across multiple tabs. Cells contain values only: no formulas, no styles, no fonts or colors, no merged cells, no column widths, no freeze panes. If you need a formatted report, treat the download as clean raw data and apply the presentation in Excel afterwards.

Dates are the sharpest edge. JSON has no date type, so a value like "2026-07-21" is a string and is written as a text cell — it is not converted to an Excel date serial, and no number format is applied. Excel will not treat the column as dates until you convert it, for example with DATEVALUE or Text to Columns. The reverse asymmetry exists in the companion Excel to JSON tool, where genuine Excel dates come back as their underlying serial numbers.

Two smaller caveats. The ZIP entries are stored rather than deflate-compressed, so the file is somewhat larger than the same sheet saved from Excel — still perfectly valid, and resaving it from Excel compresses it. And because everything happens in browser memory, very large arrays are bounded by your tab’s RAM; this is a converter, not a streaming exporter. Empty arrays and objects with no keys are rejected with a clear error message instead of producing a blank workbook.

Frequently asked questions

Is the JSON to Excel converter free and private?

Yes. The .xlsx is generated entirely in your browser with no account and no upload — the download is written straight from your device’s memory, so your data never reaches a server.

What JSON shape does it expect?

A JSON array of objects works best: each object is a row, each key a column. A single object becomes a one-row sheet, and an array of plain values (strings or numbers) becomes a single column named value.

How is this different from JSON to CSV?

CSV is plain text that Excel must import, guessing delimiters, encodings, and types along the way. This tool writes a native workbook with typed cells, so numbers and booleans behave correctly the moment the file opens — no import wizard, no mangled characters.

What happens to nested objects and arrays?

They are written into their cell as compact JSON text, for example ["math","compilers"], so no data is lost. If you want one column per nested field, flatten the JSON first and convert the flat result.

Can it create multiple sheets, formulas, or styles?

No. The output is one worksheet named Sheet1 containing values only — no formulas, no cell styles, no merged cells, no column widths. It is deliberately minimal: clean raw data you format in Excel.

How are dates handled?

JSON has no date type, so a string like "2026-07-21" is written as a text cell. It is not converted to an Excel date serial and no date format is applied — convert it in Excel with DATEVALUE or Text to Columns, since applying a date format alone does not change text cells.

Will the file open in Google Sheets and Numbers?

Yes. It is a standard Office Open XML workbook, so anything that reads .xlsx opens it. The ZIP entries are stored uncompressed, which makes the file slightly larger than one saved by Excel but just as valid.

Can I convert back from Excel to JSON?

Yes — the companion Excel to JSON tool reads an .xlsx in your browser, takes the first row as keys, and preserves numbers and booleans, so a round trip keeps your types intact.

Related tools

Convert your JSON to Excel

Open the Editor