Convert JSON to CSV — nested fields flattened, nothing guessed

Turn JSON or NDJSON into a CSV: records, column and row shapes all read, nested objects flattened to dotted columns, numbers kept exactly as written.

JSON to CSVRunning on your device

Source

or drag one here · it stays on your device

Result

Add a JSON or NDJSON file. Records, columns, values and split shapes all read.

How this works
  1. Add your JSON. Drop a .json or .ndjson file onto the page.
  2. Check the preview. Flattened columns and every record, before anything downloads.
  3. Download. Save the CSV.
What it cannot do
  • A JSON field that is empty and one that is missing both become a blank cell — CSV has no way to hold the difference, and this is the one loss the conversion makes.
  • Arrays inside records are kept as JSON text rather than exploded into rows; a join is a decision, not a default.
  • The whole table is built in the page, so the practical ceiling is your browser’s memory, stated at 200 MB of input.
Questions
What JSON shapes can it read?
An array of records, an object of column arrays, row arrays with the names first, the pandas split form, and NDJSON — one record per line. The page says which one it saw.
What happens to nested objects and arrays?
Nested objects flatten to dotted column names (address.city). An array stays as its own JSON text in one cell, because inventing rows for it would multiply your data silently.
Will 1.10 come out as 1.1?
No. Numbers are carried as the exact text in the file — most converters parse them into floats first, which rewrites 1.10 to 1.1 and mangles ids past sixteen digits. This one does not.
What if records have different keys?
The CSV gets every column that appears in any record, in first-seen order; records missing a key get a blank there.
Is my file uploaded anywhere?
No. The conversion runs inside this page: when you convert JSON to CSV here, the browser is told to block outbound connections, so nothing can be sent to another server. Keep the Network tab of your developer tools open while you convert JSON to CSV: every request in it goes to this site, and none carries your file.

Your file is processed in this page and never uploaded — the privacy page shows how to confirm that yourself.