Export JSON to Excel — open straight in XLSX
Export JSON arrays into Excel-ready output instantly. Open the result directly in Excel, Google Sheets, or Numbers — no Python, no signup.
Paste your JSON → Get results instantly (no signup)
→ Convert this JSON to CSV.
1name,age,city
2Alice,30,New York
3Bob,25,LondonLove the result?
Use this exact pipeline in your app, backend, or LLM workflow.
No setup needed. Works with curl, Node, Python.
Uses example data. For edited input, copy from the playground.
Works with:
- Excel (.xlsx via .csv import)
- Google Sheets
- Apple Numbers
- Power BI and Tableau
- Finance and ops workflows
Example: input → output
Excel is where most non-engineers live. When an API response, a database export, or an event log eventually has to land in front of finance, ops, or a vendor analyst, the destination is almost always a spreadsheet. This page is the JSON-to-spreadsheet on-ramp: paste your JSON, get output that opens cleanly in Excel, Google Sheets, Numbers, or any BI tool.
How the Excel pipeline works here
The tool produces RFC 4180 CSV with a header row and double-quote escaping. Excel imports CSV natively — double-click the file, or use Data → From Text in older versions. Google Sheets does the same on import. The result is a worksheet with one row per JSON record and one column per field, ready for filters, pivot tables, and charts.
If you need a true .xlsx workbook with formatting, multiple sheets, or formulas, save the CSV first and use Excel's "Save As" to convert. For a one-time conversion, that takes ten seconds and avoids needing yet another conversion library.
Real workflows
- Finance reports — convert a billing API export into a worksheet for the finance team.
- Ops dashboards — feed event logs into a BI tool that consumes spreadsheets.
- Bug repros for non-engineers — share a sample payload as a sortable table.
- Vendor reconciliation — diff a vendor's monthly export against your own records inside a familiar spreadsheet UI.
- Product analytics ad-hoc work — drop a session log into a pivot table and slice by user.
Importing into Excel cleanly
Excel has a few quirks worth knowing about:
- Encoding — save the CSV as UTF-8 with a BOM if you have non-ASCII characters. Without the BOM, Excel on Windows often misreads accented characters.
- Leading zeros — IDs like
007are interpreted as the number 7 by default. Either prefix with an apostrophe in the source data, or use Excel's "Import Text" wizard and mark the column as Text. - Date formats — ISO 8601 timestamps (
2026-05-04T10:00:00Z) round-trip cleanly; less-standard formats may auto-coerce to the local locale's date format. - Long numbers — anything over 15 significant digits loses precision in Excel's default Number type. Force the column to Text for IDs and timestamps in milliseconds.
Issues that bite first-timers
- Nested objects stringify into one cell. Use the JSON to CSV converter variant — same engine — and pre-flatten the JSON with Flatten JSON so each nested path becomes its own column.
- Inconsistent records produce ragged columns where some rows have empty cells. Run Clean JSON first to normalize the shape.
- Arrays inside fields — Excel cells can't naturally hold arrays. Either flatten them by index or join into a delimited string before exporting.
Why this beats a Python script
- No setup. Paste, click, save.
- No upload. Your JSON never leaves the browser.
- Pipeline-aware: pair the conversion with Extract Fields from JSON to trim columns before they hit the spreadsheet.
For full programmatic access — running this conversion as part of a job, a webhook, or a scheduled export — the same engine is available via the REST API.
Frequently asked questions
Does this produce a native .xlsx file?+−
No — the output is RFC 4180 CSV. Excel imports CSV directly (double-click or Data → From Text). For a true .xlsx workbook, open the CSV in Excel and use Save As → Excel Workbook.
How do I import the result into Excel cleanly?+−
On modern Excel, double-clicking the .csv usually works. For non-ASCII characters, save the CSV with a UTF-8 BOM. For columns with leading-zero IDs or long numeric strings, use Excel's Text Import Wizard and mark those columns as Text to prevent coercion.
What if my JSON has nested objects?+−
Pre-flatten the JSON with the Flatten JSON tool first. That way each nested path becomes its own column (`user.name`, `user.email`) instead of a stringified blob in a single cell.
Will this work for Google Sheets and Numbers?+−
Yes. Both import CSV natively. Google Sheets handles UTF-8 by default; Numbers (Apple) sometimes needs the file extension to be `.csv` and the encoding set to UTF-8.
Is there a row limit?+−
Excel itself has a 1,048,576-row limit per sheet. The conversion has no row limit beyond browser memory; for very large datasets, split the JSON before converting.
Related tools
- CSV to JSONParse CSV text into a JSON array of row objects for further cleanup or reshaping
- Format ValuesReformat individual values with case changes, trimming, coercion, and slugification
- Map ValuesRemap existing values through a lookup table such as enums, codes, or category names
- Compute FieldCreate derived values or fields from formulas, expressions, and simple conditionals
Read more on the blog
Advanced usage (optional)
JSON to CSV
v1.0.0Description
JSON to CSV
Convert a JSON array of objects into CSV text. Supports field selection, nested object flattening, custom column mappings with expressions, and configurable delimiters.
How It Works
The utility takes an array of objects and produces CSV text. Each object becomes a row, and object keys become column headers.
Basic Conversion
All fields from the first object determine the columns. Values are quoted when they contain the delimiter character.
Column Selection
Specify an array of field names to include only certain columns in a specific order.
Nested Object Flattening
When enabled, nested objects are flattened using dot notation. Arrays within cells are joined with a configurable delimiter.
Custom Column Mapping
Define custom columns with expressions using {{fieldName}} syntax. Allows combining fields, renaming columns, and applying transformations.
Configuration
| Field | Type | Default | Description | |
|---|---|---|---|---|
| Delimiter | enum | , | Field separator: ,, ;, \t (tab), or `\ | ` (pipe) |
| Include Headers | boolean | true | Add column names as the first row | |
| Columns | json | [] | JSON array of field names to include (empty = all fields) | |
| Flatten Nested Objects | boolean | false | Flatten nested objects using dot notation keys (e.g., user.name) | |
| Array Delimiter | string | `\ | ` | Character to join array values within a single cell |
| Column Mapping | column-mapping | [] | Define custom column mappings with expressions. When configured, overrides Columns and Flatten settings. |
Column Mapping Expressions
Custom mappings let you define exactly what each column contains:
Column: "Full Name" Expression: "{{firstName}} {{lastName}}"
Column: "Age" Expression: "{{age}}"
Column: "Location" Expression: "{{city}}"Use Cases
Data Export
- Spreadsheet export: Convert JSON data to CSV for Excel or Google Sheets
- Database import: Prepare CSV files for database bulk import
- Report generation: Export filtered data as CSV reports
Data Transformation
- Column selection: Export only relevant fields from large objects
- Field combination: Merge first/last name into a single "Full Name" column
- Nested flattening: Convert hierarchical data to flat CSV rows
Integration
- Legacy systems: Convert JSON API data to CSV for legacy system import
- Email tools: Prepare CSV contact lists for email marketing tools
- Analytics platforms: Export data in CSV format for analytics tools
Configuration
| Name | Type | Default | Description |
|---|---|---|---|
| Delimiter | enum | , | Character used to separate fields in the CSV output , ; \t | |
| Include Headers | boolean | true | Add column names as the first row |
| Flatten Nested Objects | boolean | false | Flatten nested objects using dot notation keys (e.g. user.name) |
| Array Delimiter | string | | | Character to join array values within a single cell |
| Columns | json | [] | JSON array of field names to include (empty = all fields) |
| Column Mapping (Advanced) | column-mapping | [] | Define custom column mappings with expressions. When configured, overrides Columns and Flatten settings. |
Examples
Convert this JSON to CSV.1name,age,city
2Alice,30,New York
3Bob,25,London1[]API Usage
curl -X POST https://your-domain.com/api/v1/utilities/convert.json-to-csv \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"inputs":{"primary":[{"name":"Alice","age":30,"city":"New York"},{"name":"Bob","age":25,"city":"London"}]},"config":{"delimiter":",","includeHeaders":true,"columns":[],"flattenNested":false,"arrayDelimiter":"|"}}'1name,age,city
2Alice,30,New York
3Bob,25,London