JSON to CSV converter

Convert JSON to CSV: a JSON array becomes a table. Nested objects become dot-named columns such as address.city, and quoting is handled for you.

JSON

CSV

Waiting for input

What you get

How each result is checked

  1. The CSV is parsed back, including quoted commas, quotes and line breaks.
  2. Every cell is compared with the value it came from.

What can't convert exactly

  • CSV is text only: numbers and booleans are written as text and null becomes an empty cell.
  • Arrays inside a row are written as JSON text in one cell.
  • When rows have different keys, all keys become columns and missing values are left empty.
  • An object that wraps one list, such as {"data": [...]} or the root element of an XML file, is unwrapped: the list becomes the rows, and the result names where they were found and any single values left out beside them.

Questions

Will Excel open it?

Yes. Use the semicolon delimiter if your Excel uses commas for decimals. The file is UTF-8: if accented letters or other scripts look wrong after a double-click, open it with Data > From Text/CSV and choose UTF-8.

Can I turn off flattening?

Yes. With flattening off, nested objects are written as JSON text in a single cell.

How do I convert JSON to CSV online for free?

Paste a JSON array (or open a .json file). The CSV appears as you type; download it as a .csv file and open it in Excel, Google Sheets or Numbers. It is free, with no sign-up and no upload.

Why does my CSV open with everything in one column in Excel?

Excel uses your computer’s list separator, which is a semicolon in many countries. Choose the semicolon delimiter here, or in Excel use Data > From Text/CSV and pick the comma. For JSON to Excel, that import also lets you choose UTF-8 so accented letters show correctly.

How big a JSON file can I convert?

Files of several megabytes work. As a guide, a 7 MB JSON array of 50,000 records converts and is checked in a few seconds on a laptop. The limit is your browser’s memory, since nothing is uploaded.

Can it convert JSON Lines (NDJSON)?

Not as it is: JSON Lines is one object per line, not one JSON document. Put the lines inside [ ] with commas between them, and it converts as a normal JSON array.

What happens to nested arrays and null values?

Nested objects are flattened into dot-named columns (address.city). Arrays are written as JSON text in one cell so nothing is lost, and null becomes an empty cell.

Can the CSV output be wrong?

Every result is checked before it is shown (the checks are listed on this page). If a check fails, the page says "Review needed" and why, instead of presenting the output as correct, and anything that cannot convert exactly is named in the notes.