json→csv

JSON to CSV

Flatten nested JSON records into a table you can open in a spreadsheet.

By opening this website or using its tools, you agree to our Terms and Privacy Policy.

paste JSON or JSONL, or drop a .json file

Columns are collected across every record, not just the first one, so a field that only appears halfway down the file still gets a column instead of being dropped. Records missing that field get an empty cell. Newline-delimited JSON is accepted as well as a single array, and an object wrapping one array — the shape most APIs return — is unwrapped automatically.

Network activity during processing
0 bytes uploaded

Your file never leaves your browser during processing

How it works

To convert JSON to CSV, paste your JSON into this page or drop a .json file in — each record becomes a row, nested objects are flattened into dotted column names, and the CSV appears immediately without anything being uploaded.

The difficult part of this direction is not syntax, it is shape. JSON nests and a table does not, and real data is rarely the flat array of objects that examples use. So the first thing this tool does is work out what it is looking at, and then say so under the output — an array of records, an object wrapping one array (the shape almost every REST API returns), an object keyed by id, or newline-delimited JSON. Being told "read the array under data" is the difference between trusting the result and checking it by hand.

Nested objects are flattened into dotted column names, so a record with a role object containing a title becomes a role.title column. Turning that off keeps the nested value as JSON text in a single cell instead, which is the right choice when the structure is data you want to keep rather than columns you want to read.

Arrays inside a record get their own setting, because there is no single right answer. Joining with commas suits a list of tags. One column each suits a fixed-length array where position means something. Keeping it as JSON text suits anything you intend to parse again later.

Columns are collected across every record rather than from the first one alone. Records in the wild are ragged, and a field that appears only halfway down the file is still a column — taking the first record as the schema would silently drop it. Records missing a field get an empty cell. Values containing commas, quotes, or line breaks are quoted properly on the way out, so the file survives being read back.

FAQ

How do I convert nested JSON to CSV?

Leave “Flatten nested objects” ticked. A nested object becomes dotted columns — user.address.city — one column per leaf value. Untick it to keep each nested value as JSON text in one cell.

My JSON is an object with a "data" array inside. Will that work?

Yes. An object wrapping a single array is unwrapped automatically, and the note under the output names which key it used. That is the shape most APIs return.

Does it accept JSONL or newline-delimited JSON?

Yes. If the input does not parse as a single JSON document, each line is parsed as its own record.

What happens to records that are missing a field?

They get an empty cell. Columns are gathered from every record in the file, so a field that appears only in some records still gets a column.

Can I open the result in Excel?

Yes, though for a file with accented characters the CSV to Excel tool is a better route — it writes a real workbook and keeps leading zeros and text formatting intact.

Is my JSON sent anywhere?

No. It is parsed and converted in your browser, and the monitor under the tool shows zero bytes sent.

Related tools