📊 JSON to CSV / Excel Converter
Paste a JSON array of objects and download it as CSV or an Excel (.xlsx) file — handles nested keys, quoting and custom delimiters. 100% in your browser.
✓ Free Forever · ✓ No Signup · ✓ No Upload · ✓ Works Offline
🔒 Your data never leaves your browser. The JSON is parsed and converted to CSV or Excel entirely on your device — no upload, no account, nothing stored. Safe for data you would not paste into a random website.
Features
- JSON → CSV or Excel — Paste a JSON array of objects and export it as a CSV file or a real Excel (.xlsx) spreadsheet.
- Handles the messy bits — Merges keys across objects, turns nested objects into dotted columns (address.city), writes lists as JSON text, keeps long IDs digit for digit, and quotes fields with commas, quotes or line breaks.
- Nothing uploaded — Runs 100% in your browser — your data is never sent to a server, which matters for exports of real records.
- Goes both ways — Need the reverse? Switch the tab to turn CSV back into JSON.
How It Works
- Paste your JSON — A JSON array of objects, e.g. [{"name":"Alice","age":30}, …].
- Pick a delimiter (CSV) — Comma, semicolon or tab — semicolon is handy for European spreadsheets.
- Download CSV or Excel — Copy the CSV, download a .csv file, or export a ready-to-open .xlsx.
Use Cases
- Open an API response in Excel or Google Sheets
- Turn exported JSON records into a spreadsheet
- Hand non-technical teammates a CSV/Excel instead of JSON
- Convert back and forth while wrangling data
Frequently Asked Questions
How do I convert JSON to CSV?
Paste a JSON array of objects, pick a delimiter, and click Convert — then copy the CSV or download a .csv file. It runs entirely in your browser.
Can I convert JSON to Excel (.xlsx)?
Yes. In JSON → CSV mode, click "Download Excel (.xlsx)" to get a real spreadsheet you can open in Excel, Numbers or Google Sheets.
What JSON shape does it expect?
An array of objects, like [{"name":"Alice","age":30}]. A single object becomes one row, and an API response that wraps the rows in one list (e.g. {"results":[…]}) is unwrapped for you. Keys are merged across all objects to form the columns.
Does it handle nested JSON?
Nested objects are flattened into dotted columns: {"address":{"city":"NYC"}} becomes an address.city column. Lists (arrays) can't become columns in a meaningful way, so they are written into one cell as JSON text, e.g. ["a","b"].
Will long IDs and decimals stay exactly as written?
Yes. Numbers are copied as written, so 12345678901234567890 doesn't turn into 12345678901234567000 and 1.10 stays 1.10. In the Excel file, numbers with more than 15 digits are stored as text, because Excel itself keeps only 15.
Why do accents look like é when I open the CSV in Excel?
Excel opens a .csv without a byte-order mark in the computer’s own code page, so UTF-8 “é” shows as “é” and 张三 as “å¼ ä¸‰”. When the CSV has anything outside plain ASCII, the download starts with a UTF-8 byte-order mark (the “Excel-ready” box, on by default) and Excel reads it correctly. Untick it for a program that doesn’t expect one. Copy never adds it. The .xlsx download doesn’t have this problem at all.
Is my data uploaded?
No. The conversion happens locally in your browser — no upload, no account, nothing stored.
Can I go from CSV back to JSON?
Yes — switch to the CSV → JSON tab to convert the other direction.
Notes from Milo 🐨
Two Excel annoyances, fixed. A CSV with accents opened in Excel as “Zürich”, because Excel reads a .csv without a byte-order mark in the computer's own code page — the download now starts with a UTF-8 mark when your data needs it (an “Excel-ready” box, on by default; untick it for programs that don't want one). And a JSON value longer than 32,767 characters made Download Excel fail with “Something went wrong”; now the page names the item and column that's over Excel's cell limit (the row and column limits too) and points you to the CSV, which keeps the whole value.
The subtitle said this handles nested keys. It didn't: a nested object came out as "[object Object]" in the CSV and as an empty cell in Excel, and a 20-digit ID was rounded to a different number. Now nested objects become dotted columns (address.city), lists go into one cell as JSON text, numbers are copied digit for digit (in the .xlsx, anything over Excel's 15 digits is stored as text instead of rounded), a whole API response like {"results": [...]} is unwrapped for you, and a null in the list is named by position instead of a cryptic error. You can also open or drop a .json file now.
From the blog
- 📖 How to Convert JSON to CSV or Excel — Turn a JSON array of objects into a CSV or a real .xlsx Excel file, right in your browser. How the columns are built, what to do about nested data, and why it stays private.
Related Tools
- 📊 CSV ↔ JSON — Convert CSV to JSON or JSON to CSV with custom delimiters
- { } JSON Formatter & Beautifier — JSON pretty-print, beautifier, minifier, and validator — all in your browser
- ⚙️ YAML ↔ JSON — Convert YAML to JSON or JSON to YAML with validation
💬 Bug, idea, or just to say hi? Tell Milo 🐨 · [email protected]