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.
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.
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.
A staff roster and the worksheet grid it produces. Types shown in brackets are what gets written into the sheet XML.
JSON input
Worksheet
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.
| Capability | CSV | xlsx |
|---|---|---|
| Cell data types | None, everything is text | Number, text, boolean, date, error, formula |
| Multiple sheets | One file per table | Many sheets in one workbook |
| Number formatting | None | Currency, percentage, decimal places, custom masks |
| Column widths | None | Stored per column, can be auto sized |
| Header styling | None | Bold, fill, borders, freeze panes |
| Formulas | Stored as literal text | Live and recalculated |
| Encoding | Ambiguous without a byte order mark | Always UTF-8 internally |
| File size | Smaller for plain data | Larger, 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.
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.
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
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.
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.
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.
Add a JSON array, object, API response, or upload a .json file. Use the sample button to test nested fields and arrays.
Set sheet name, flatten nested objects, keep headers, freeze the header row, and enable Excel filters.
Preview the spreadsheet as CSV, copy it when useful, or download a real Excel workbook generated in your browser.
Turn JSON API responses, exports, fixtures, and admin data into spreadsheet-ready workbooks without installing packages or sending private records to a server.
Your data never leaves the browser. No uploads, logs, or server processing.
Download an OpenXML workbook that opens in Excel, Sheets, Numbers, and LibreOffice.
Customize sheet name, headers, frozen header row, and auto filters.
Flatten nested objects into columns and preserve arrays as JSON cell values.
See an Excel-ready CSV preview live as you type before downloading.
Copy CSV preview or download a real workbook for spreadsheet handoff.
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.