How to convert JSON to CSV
- Paste your JSON in the left pane — an array of objects, or a single object.
- Pick a delimiter. Comma is standard. Use semicolon for European Excel; tab if your data contains commas.
- Copy or download. The right pane shows the CSV instantly. Click Download CSV for a file or Copy to clipboard to paste elsewhere.
Nested JSON: how flattening works
Spreadsheets are flat — one value per cell. JSON is hierarchical. The converter walks every key and produces a single column per leaf, joining the path with dots:
Input:
[
{ "id": 1, "user": { "name": "Ada", "addr": { "city": "London" } } },
{ "id": 2, "user": { "name": "Linus", "addr": { "city": "Helsinki" } } }
]
Output:
id,user.name,user.addr.city
1,Ada,London
2,Linus,Helsinki
Arrays of primitives are JSON-stringified into one cell:
Input:
[{ "name": "Ada", "tags": ["admin","vip"] }]
Output:
name,tags
Ada,"[""admin"",""vip""]"
For arrays of objects, the same rule applies — each cell holds a JSON-stringified blob. If you need them split into multiple rows, pre-flatten with jq '.[] | .field[]' first.
When to use JSON to CSV
- Importing API data into a database — most SQL tools have a one-line CSV import. JSON support is less universal.
- Sharing API responses with non-developers — analysts, support, ops teams want a sheet, not a payload.
- Loading into a BI tool — Tableau, Looker, PowerBI all eat CSV out of the box.
- Diffing two API snapshots — easier in CSV than JSON for non-engineers.
- Spreadsheet pivot tables — pivot a flat dataset, not a tree.
JSON to CSV vs JSON to Excel
CSV is plain text — universal, lightweight, machine-friendly. Excel (.xlsx) preserves number types, dates, and is more polished for sharing with humans. Pick CSV when:
- The destination is a database, BI tool or another script — CSV imports are universal.
- You want a small file — CSV is much smaller than .xlsx.
- You don’t need formatting, formulas or multiple sheets.
Pick Excel when the recipient will open the file in Excel or Sheets and you want a polished result.
Handling tricky JSON
Heterogeneous objects
If some objects have a discount field and others don’t, the CSV will include a discount column with blank cells where the field was missing. Headers are always the union of all keys.
Date strings
Dates in JSON are typically ISO strings (2026-04-29T22:00:00Z). They go into the CSV unchanged — Excel and Sheets will recognize most ISO formats and convert them to date cells on import.
Very large arrays
Files up to ~20 MB of JSON convert in a fraction of a second. Past that, browser memory becomes a factor. Split the array, convert in batches, and concatenate the resulting CSVs.
Privacy
No upload, no logging, no third-party APIs. The conversion uses PapaParse in your browser. Open DevTools → Network and you’ll see only static asset requests, never your JSON content.
Related tools
Convert any CSV file to a real .xlsx Excel workbook in seconds. Free, no signup, files never leave your browser.
Turn any .xlsx or .xls Excel file into a clean CSV. Pick the sheet, pick the delimiter, download. No upload.
Convert any Excel workbook (.xlsx or .xls) to a printable PDF in seconds. Pick the sheet, pick orientation, download. 100% private.
Convert any CSV file to a clean PDF table in seconds. Free, no signup, files never leave your browser.
Frequently asked questions
- Does it handle nested JSON objects?
Yes. Nested keys are flattened using dot notation. Arrays of primitives are kept as JSON strings inside a single cell.
- What input does it accept?
An array of objects (most common) or a single object. Paste raw JSON or upload a .json file.
- Can I choose the CSV delimiter?
Yes — pick comma, semicolon or tab from the delimiter dropdown.
- How are arrays of objects handled?
Arrays of objects are stringified into a single cell. If you want each array item as its own row, use a JSON pre-processor like jq to flatten first.
- Is the JSON uploaded?
No. The conversion runs in your browser using PapaParse.
- What about quotes and commas inside fields?
Properly escaped on output. Fields containing the delimiter, quotes or newlines are wrapped in double quotes per RFC 4180.
- Why are some fields blank?
If your JSON has heterogeneous keys (some objects have a field, others don't), missing values become blank cells.