JSONToonPro
JSON converter tool

JSON to Excel Converter Online

Convert JSON arrays, objects, and API responses into a real Excel .xlsx spreadsheet in one click. Flatten nested data, keep column headers, freeze the header row, enable filters, preview as CSV, and download a workbook generated locally in your browser.

100% client sideReal .xlsx exportCopy and download
Input/ JSON
0 chars0 lines
Output/ Excel preview
Paste valid JSON to preview the Excel sheet.
0 chars0 lines

What an xlsx File Actually Is

An .xlsx file is not a text format. It is a ZIP archive containing a folder structure of XML documents defined by the Office Open XML standard. Rename one to .zip and unpack it and you will find a workbook definition, one XML file per worksheet, a shared strings table, a styles part, and a relationships file that ties them together.

This matters because it explains the whole difference between this converter and a CSV export. CSV is a stream of characters with no idea what a type, a sheet, or a column width is. xlsx has a place to record all of it. When you write a number to an xlsx cell, the file says that cell is numeric and Excel does not have to guess.

Side by Side Example

A staff roster and the worksheet grid it produces. Types shown in brackets are what gets written into the sheet XML.

JSON input

[
{ "staff_id": "00417",
"name": "Marta Silva",
"hours": 37.5,
"active": true,
"site": { "code": "LDN-2" } },
{ "staff_id": "00892",
"name": "Tom Okafor",
"hours": 22,
"active": false,
"site": { "code": "MAN-1" } }
]

Worksheet

A B C D E
1 staff_id name hours active site.code
2 00417 Marta Silva 37.5 TRUE LDN-2
3 00892 Tom Okafor 22 FALSE MAN-1
 
A2 [text] B2 [text] C2 [number]
D2 [boolean] E2 [text]

Column A keeps its leading zeros because the cell is explicitly written as text. Save the same data as CSV and open it by double clicking, and column A becomes 417 and 892.

What xlsx Preserves That CSV Loses

CapabilityCSVxlsx
Cell data typesNone, everything is textNumber, text, boolean, date, error, formula
Multiple sheetsOne file per tableMany sheets in one workbook
Number formattingNoneCurrency, percentage, decimal places, custom masks
Column widthsNoneStored per column, can be auto sized
Header stylingNoneBold, fill, borders, freeze panes
FormulasStored as literal textLive and recalculated
EncodingAmbiguous without a byte order markAlways UTF-8 internally
File sizeSmaller for plain dataLarger, but compressed

Nested JSON is still flattened into columns using dot notation, exactly as it would be for CSV, because a worksheet is just as rectangular as a CSV file. The advantage is entirely in what each cell can carry, not in the shape of the grid. Arrays inside a record are either joined into a single cell or expanded into indexed columns, with the same trade off as any flattening.

Excel Hazards in Detail

Leading zeros disappear

Any value Excel decides is numeric loses its padding, so employee code 00417, UK postcode style references, and account numbers all shrink. Writing a real xlsx with the column typed as text avoids this entirely. Going through CSV does not, because there is nowhere in the file to record the intent.

Fifteen significant digits and no more

Excel stores numbers as IEEE 754 doubles and displays a maximum of fifteen significant digits. A sixteen digit card number or a long database identifier is rounded, and the digits beyond the fifteenth become zeros. This is a silent, irreversible data loss. Long identifiers must be written as text.

What happens to a long number

Source value 4012888888881881
As number 4012888888881880 (last digit lost)
Displayed 4.01289E+15
As text 4012888888881881 (correct)

Strings that turn into dates

Excel's date recognition is aggressive and locale dependent. Values like 1-2, 3/4, MAR-1, and 2025-3 are all read as dates. The gene naming case is the best documented example: SEPT1 and MARCH1 became dates so reliably that the research community renamed the genes rather than keep fighting the spreadsheet.

The row limit

A worksheet holds at most 1,048,576 rows and 16,384 columns. That is 2 to the power 20 rows, a limit set in 2007 and unchanged since. Exceeding it does not warn you gracefully in every path, so a large export can be truncated. If your data approaches a million rows, a spreadsheet is the wrong container and a database or a Parquet file is the right one.

Forcing Values to Stay Text

  1. Best option: generate a real xlsx with the column written as a text type. The intent lives in the file and survives every open, edit, and save.
  2. If you must use CSV, import through Data then From Text/CSV and set the affected columns to Text in the preview before loading. Never double click the file.
  3. Format the destination column as Text before pasting, not afterwards. Reformatting after the fact does not bring back digits that were already discarded.
  4. The apostrophe trick: a leading single quote in a cell marks the content as text. It works, but the apostrophe is part of the cell in some export paths, so use it for quick manual fixes rather than pipelines.

When CSV Is Still the Better Choice

xlsx is not automatically the right answer. Choose CSV when the consumer is a program rather than a person, when a database bulk loader is reading the file, when the data is genuinely enormous and streaming matters, or when the file needs to be diffed in version control. CSV is plain text, so a git diff on it is readable and a change is reviewable. A diff on a ZIP of XML is not.

Choose xlsx when a human will open the file, when types and leading zeros must survive, when you need more than one table in one deliverable, or when the recipient will complain about the columns being wrong. Which, in practice, is most of the time.

Spreadsheets are often one output of several. Browse the full converter collection for JSON to CSV when a program is reading the file, CSV to JSON to bring a colleague's spreadsheet back into your pipeline, and JSON to SQL when the data belongs in a table rather than a workbook.

How to convert JSON to Excel

Three steps, zero setup
01

Paste JSON data

Add a JSON array, object, API response, or upload a .json file. Use the sample button to test nested fields and arrays.

02

Choose sheet options

Set sheet name, flatten nested objects, keep headers, freeze the header row, and enable Excel filters.

03

Download .xlsx

Preview the spreadsheet as CSV, copy it when useful, or download a real Excel workbook generated in your browser.

Built for spreadsheets and data handoff

Turn JSON API responses, exports, fixtures, and admin data into spreadsheet-ready workbooks without installing packages or sending private records to a server.

100% client side

Your data never leaves the browser. No uploads, logs, or server processing.

Real XLSX files

Download an OpenXML workbook that opens in Excel, Sheets, Numbers, and LibreOffice.

Sheet controls

Customize sheet name, headers, frozen header row, and auto filters.

Nested JSON ready

Flatten nested objects into columns and preserve arrays as JSON cell values.

Instant preview

See an Excel-ready CSV preview live as you type before downloading.

Excel workflow

Copy CSV preview or download a real workbook for spreadsheet handoff.

Frequently asked questions

7 answers
Paste a JSON array or object into the input panel, choose sheet options, then click Download .xlsx. The tool creates a real Excel workbook directly in your browser.

Download JSON as XLSX Free

The JSON to Excel converter generates a real OpenXML .xlsx file directly in your browser and triggers a free download with no server upload required. The downloaded file opens in Microsoft Excel, Google Sheets (via File import), LibreOffice Calc, and Apple Numbers. Nested JSON is flattened with dot notation so every value lands in its own column and header row.

More JSON Tools