"category": "format-converter",
JSON to Excel Converter
"tldr": Paste a JSON array and download a real .xlsx spreadsheet - headers from your keys, types preserved, generated entirely in your browser.
Turn a JSON array of objects into a genuine Excel workbook: object keys become the header row, numbers and booleans arrive as typed cells (not text), and nested values are preserved as JSON strings so nothing is silently dropped. Click once, get data.xlsx.
This is the bridge between developer data and everyone else: API exports, database dumps, and log aggregations become something a PM or analyst can open, filter, and pivot without asking what JSON is. Generation runs entirely in your browser - the data never touches a server, which matters for exactly the customer and finance exports this gets used for.
How to convert JSON to Excel
- 1Paste a JSON array of objects - each object becomes one spreadsheet row.
- 2Optionally set the sheet name (Excel limits it to 31 characters).
- 3Click Download .xlsx - the workbook is assembled locally with SheetJS.
- 4Open in Excel, Google Sheets, or Numbers - headers and cell types are already correct.
Convert JSON to Excel (.xlsx) in code
import * as XLSX from "xlsx"; // npm install xlsx
const ws = XLSX.utils.json_to_sheet(rows);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "Data");
XLSX.writeFile(wb, "data.xlsx");import pandas as pd # pip install pandas openpyxl
pd.DataFrame(rows).to_excel("data.xlsx", index=False)Frequently asked questions
How is this better than exporting CSV and opening that in Excel?
CSV loses types: Excel guesses, mangling dates, stripping leading zeros from ZIP codes, and turning long IDs into scientific notation. A real .xlsx carries typed cells, so numbers are numbers and text stays text. CSV remains right for machine-to-machine pipelines; .xlsx is right when a human opens the file.
What happens to nested objects and arrays?
Cells hold scalars, so nested values are embedded as JSON strings - lossless but not analyzable. If you want nested fields as real columns (user.name, user.city), run the data through our JSON Flatten tool first, then convert.
Is there a row limit?
Excel's format caps at 1,048,576 rows; in practice browser memory is the constraint and tens of thousands of rows convert comfortably. For very large exports, generate server-side with the same SheetJS library this tool uses.
Last updated:
You might also need
Free and in-browser, like everything on JSON Console. Browse all tools →