Convert JSON to Excel or CSV instantly. Paste any JSON array and download a spreadsheet you can open in Excel, Google Sheets, or LibreOffice Calc. Free, no signup, no data uploaded.
Spreadsheets remain the most widely used tool for data analysis, reporting, and sharing information with non-technical stakeholders. JSON, on the other hand, is the standard format for API responses, configuration files, and data exports from modern web applications. The ability to quickly bridge between these two formats is a valuable skill for developers, analysts, and anyone working with data.
Here are the most common situations where converting JSON to a spreadsheet saves time:
The converter expects a JSON array of objects, where each object has the same (or similar) structure. The top-level keys of the objects become the column headers in the spreadsheet. Each object in the array becomes one row of data.
Input JSON:
[
{ "order_id": 1001, "customer": "Alice", "total": 89.99, "status": "shipped" },
{ "order_id": 1002, "customer": "Bob", "total": 45.50, "status": "pending" },
{ "order_id": 1003, "customer": "Carol", "total": 120.00,"status": "delivered" }
]
Generated CSV output:
order_id,customer,total,status
1001,Alice,89.99,shipped
1002,Bob,45.50,pending
1003,Carol,120.00,delivered
This CSV can be opened directly in Excel, Google Sheets, or any spreadsheet application. The first row automatically becomes the column headers, and the data is perfectly aligned in rows and columns.
Flat JSON arrays convert to spreadsheets trivially, but real-world JSON often contains nested objects and arrays. Spreadsheets are inherently two-dimensional, so nested data requires a strategy before it can be exported cleanly.
There are three main approaches:
Nested object keys are joined with a dot to create flat column names. This is the most common approach and preserves all data while keeping the spreadsheet format.
// Input
{ "id": 1, "address": { "city": "London", "zip": "EC1A" } }
// Flattened columns: id, address.city, address.zip
// Row: 1, London, EC1A
Nested objects and arrays are serialized as JSON strings and stored in a single cell. This preserves the raw data but requires further processing to use the values in the spreadsheet.
For complex structures, the cleanest approach is to transform your JSON before export - extract the specific fields you need and build a flat array of objects yourself. This gives you full control over the output columns.
Follow these practices to get the best results when converting JSON to spreadsheet format:
2024-01-15 or 2024-01-15T10:30:00Z are recognized as dates by Excel and Google Sheets automatically."price": "9.99" will be treated as text in the spreadsheet. Use unquoted values like "price": 9.99 so they are recognized as numeric columns.Paste your JSON array into the converter tool. The tool reads the object keys as column headers and each array element as a row. Download the result as a CSV file and open it in Excel, Google Sheets, or LibreOffice Calc. The data is immediately available in tabular format.
Nested JSON requires flattening before it maps cleanly to a spreadsheet. The converter flattens nested objects using dot notation (e.g., address.city becomes a column header) or serializes them as JSON strings. For complex structures, pre-processing the JSON into a flat array will give the cleanest results.
CSV is plain text with comma-separated values - universally supported and the simplest export format. XLSX is Excel's native binary format and supports multiple sheets, formatting, and formulas. For most data exchange purposes, CSV is sufficient. Our converter generates CSV, which opens natively in Excel, Google Sheets, and all major spreadsheet tools.
Yes. All conversion runs in your browser with no server upload. There are no file size limits imposed by our tool. For very large datasets with tens of thousands of rows, the conversion may take a few seconds to complete, but your data never leaves your device.
Free, instant, 100% private. No account needed.
Converting JSON to Excel is essential for sharing data with non-technical stakeholders, business analysis, and reporting. Each JSON array object maps to one row in the spreadsheet.
| JSON Element | Excel Cell |
|---|---|
| Array index | Row number (starting at row 2) |
| Object keys | Column headers (row 1) |
| String value | Text cell |
| Number value | Numeric cell (sortable, formula-ready) |
| Boolean value | TRUE/FALSE cell |
| null value | Empty cell |
| Nested object | JSON string in cell (requires flattening) |
| Array value | JSON string in cell |
// Node.js with xlsx library
const XLSX = require("xlsx");
const wb = XLSX.utils.book_new();
// Sheet 1: Users
const usersWs = XLSX.utils.json_to_sheet(usersData);
XLSX.utils.book_append_sheet(wb, usersWs, "Users");
// Sheet 2: Orders
const ordersWs = XLSX.utils.json_to_sheet(ordersData);
XLSX.utils.book_append_sheet(wb, ordersWs, "Orders");
XLSX.writeFile(wb, "output.xlsx");
import pandas as pd, json
with open("data.json") as f:
data = json.load(f)
df = pd.DataFrame(data)
# Export to Excel
df.to_excel("output.xlsx", index=False, sheet_name="Data")
# With formatting (openpyxl engine)
with pd.ExcelWriter("formatted.xlsx", engine="openpyxl") as writer:
df.to_excel(writer, index=False)
ws = writer.sheets["Sheet1"]
ws.column_dimensions["B"].width = 20
Also useful: JWT Decoder | JSON Validator | JSON Formatter | JSON to SQL | JSON to GraphQL
Follow these steps to convert any JSON array to an Excel-ready spreadsheet using this tool:
Example input and output:
// Input JSON array
[
{"name": "Alice", "age": 30, "city": "London", "score": 92.5},
{"name": "Bob", "age": 25, "city": "Paris", "score": 87.0},
{"name": "Carol", "age": 35, "city": "Berlin", "score": 95.0}
]
// Excel output:
| name | age | city | score |
|-------|-----|--------|-------|
| Alice | 30 | London | 92.5 |
| Bob | 25 | Paris | 87.0 |
| Carol | 35 | Berlin | 95.0 |
The first row of keys (name, age, city, score) becomes the header row. Each JSON object in the array becomes a data row, with values aligned to their respective columns.
Excel is a flat, two-dimensional grid — it has no native concept of nesting. When your JSON contains nested objects or arrays, you need a strategy to flatten it before it can be represented as spreadsheet columns.
There are two main approaches:
Use the JSON Flatten tool to convert nested objects into a flat structure, then bring the result into the Excel converter. This is the cleanest approach for deeply nested data.
The converter uses dot notation to represent nested keys as flat column headers. A nested key like address.city becomes a column header in the spreadsheet:
// Nested JSON input
[
{"name": "Alice", "address": {"city": "London", "zip": "EC1A"}}
]
// After flattening with dot notation:
[
{"name": "Alice", "address.city": "London", "address.zip": "EC1A"}
]
// Excel columns: name | address.city | address.zip
// Excel row: Alice | London | EC1A
This approach is ideal for one level of nesting. For deeply nested structures (3+ levels), pre-processing the JSON to extract the specific fields you need will produce the cleanest spreadsheet output.
Both formats represent tabular data, but they differ in capabilities and compatibility:
| Feature | JSON to Excel (.xlsx) | JSON to CSV |
|---|---|---|
| File format | Binary .xlsx (Excel native) | Plain text .csv |
| Opens in Excel | Yes, natively | Yes, via import |
| Preserves number types | Yes | Numbers stored as text |
| Multiple sheets | Possible | No (single flat file) |
| File size | Larger (compressed binary) | Smaller (plain text) |
| Compatibility | Excel, Google Sheets, LibreOffice | Universal (any app) |
| Best for | Excel users, formatted reports | Maximum compatibility, data pipelines |
For sharing with business stakeholders who use Excel, the .xlsx format is the better choice. For data pipelines, scripts, and maximum tool compatibility, CSV is the more portable option.