JSON to CSV Converter
Paste a JSON array and get CSV you can open in Excel, Google Sheets or Numbers. Nested objects are flattened into dotted column names, and every field is escaped so commas and quotes inside values do not break the columns.
- Free, no sign-up
- Runs in your browser
- Nothing uploaded
- Updated Sep 2026
At a glance
- Direction
- JSON → CSV (for the reverse, use the CSV to JSON converter)
- Processing
- Entirely client-side — nothing uploaded
- Input
- An array of objects, or a single object
- Nesting
- Flattened to
parent.childcolumns - Escaping
- RFC 4180 — safe for Excel, Sheets and Numbers
- Cost
- Free, no account, no row limit
What this converter does
JSON is a tree; CSV is a grid. Converting between them means deciding how to flatten that tree, and the decisions a converter makes are what separate a usable spreadsheet from a mess.
This one takes an array of objects and produces one row per object. Column headers are
the union of every key across every record, not just the keys in the first one — so if
record 40 has a field the first 39 lacked, it still gets a column, and the earlier rows get
an empty cell rather than the column vanishing. Nested objects become dotted columns:
{"user": {"name": "Ada"}} becomes a column called user.name.
Arrays of simple values are joined with semicolons; arrays of objects are written as JSON
inside the cell, because there is no sensible way to spread them across columns without
inventing rows.
Escaping follows RFC 4180: any value containing the delimiter, a quote or a newline is wrapped in quotes, and quotes inside are doubled. That is what makes the output open correctly rather than shifting half your columns one to the right.
Getting the file to open properly in Excel
Two Excel-specific problems account for most CSV complaints, and both have simple answers.
Accented characters arrive as gibberish. Excel on Windows assumes a legacy code page unless the file starts with a UTF-8 byte order mark. Turn on the BOM option and names like Zoë or Müller display correctly on first open. The BOM is invisible in every other tool, so there is little downside; the one exception is if a script downstream reads the file expecting the first character to be a letter.
Columns do not split in some locales. Excel uses the system list separator, which is a semicolon in much of Europe, so a comma-delimited file lands entirely in column A. Switching the delimiter to semicolon in the toolbar produces a file that double-clicks open correctly on those machines.
If you need something that always opens the same way everywhere, use tab-separated
output and save it as .tsv. Tabs almost never appear inside data, so the
ambiguity disappears.
What CSV cannot represent
This conversion loses information, unavoidably, and it is better to know what before you rely on the result.
CSV has no types — every cell becomes text, so the distinction between 42,
"42" and true disappears. It has no concept of null: a null and
an empty string both become an empty cell. And it has no nesting, which is why flattening
is necessary at all; deeply nested data produces very wide files with names like
a.b.c.d that are technically correct and unpleasant to work with.
The practical consequence is that a JSON to CSV to JSON round trip does not return the original document. If you need CSV for a human to read in a spreadsheet, that is fine and this is the right tool. If you need an interchange format between two systems, keep the JSON.
How to use the JSON to CSV Converter
-
Paste your JSON array
An array of objects works best. A single object produces a one-row file. A bare array of strings or numbers produces a single column.
-
Choose a delimiter
Comma is standard. Choose semicolon if the file will be opened in Excel on a European locale, or tab for maximum compatibility.
-
Turn on the BOM if the data has accents
This makes Excel on Windows read the file as UTF-8, so accented and non-Latin characters display correctly.
-
Download the CSV
Save the file and open it in your spreadsheet application, or copy the text directly.
Frequently asked questions
Is my JSON uploaded to a server?
No. Everything runs in your browser tab, with no network request at any point.
How are nested objects handled?
They are flattened into dotted column names, so {"address": {"city": "Karachi"}} becomes a column called address.city. Nesting of any depth works, though very deep structures produce wide files that are awkward to read.
What happens to arrays inside my objects?
Arrays of simple values are joined with semicolons into one cell. Arrays of objects are written as a JSON string inside the cell, because spreading them across columns would require inventing extra rows and changing the shape of your data.
My records have different fields. Will columns be lost?
No. The header is the union of every key found across every record, so a field that appears only in the last row still gets a column. Records missing that field get an empty cell.
Why do accented characters look wrong in Excel?
Excel on Windows needs a UTF-8 byte order mark to recognise the encoding. Turn on the BOM option in the toolbar and re-download — the characters will display correctly.
Can I convert the CSV back to JSON afterwards?
You can, with the CSV to JSON converter, but the result will not match the original exactly. Types and nesting are lost in the CSV step and cannot be recovered.