Skip to content

File & Data Tools

Convert JSON to CSV

Paste or drop JSON. Nested objects flatten into dotted columns; arrays join with semicolons.

  • Free, no signup
  • No upload — runs on your device
  • No watermark
  • Unlimited use

JSON to CSV

Processed locally
Drop a JSON file here

or paste into the box below

Flattening is lossy, and the loss is worth naming

A CSV is a rectangle. JSON is a tree. Converting one to the other means choosing what to throw away, and every converter makes that choice silently.

Here, a nested object becomes dotted columns: {"user":{"id":7}} becomes a column named user.id. That round-trips cleanly. An array of scalars becomes a single cell with semicolon-joined values, which does not round-trip if any value contains a semicolon. An array of objects — the common case of a customer with several orders — has no rectangular representation at all, and is stringified rather than expanded into multiple rows.

If your data has one-to-many relationships, a single CSV cannot express them. The honest answer is two CSVs and a foreign key, exactly as a database would model it. Any tool that claims to flatten arrays of objects into columns is generating orders.0.total, orders.1.total and so on, and will produce a different column set for every record.

How it works

  1. Drop in a .json file, or paste JSON into the box
  2. Check the preview of the flattened columns
  3. Click Download CSV
Why nothing uploads. Every operation on this page happens inside your browser using JavaScript and WebAssembly. Your file is read into memory, processed, and offered back as a download. It is never transmitted. Disconnect from the internet after this page loads and the tool keeps working.

Frequently asked questions

How are nested objects handled?
They become dotted column names. A field user.address.city appears as a column with that exact header, which is unambiguous and reversible.
What happens to arrays in my JSON?
Arrays of simple values are joined with semicolons into one cell. Arrays of objects cannot be represented rectangularly and are stringified — that data needs a second CSV and a key.
Can I convert a single JSON object rather than an array?
Yes. A lone object is treated as a one-row array.
What if my objects have different keys?
The column set is the union of all keys across all records. Records missing a key get an empty cell for that column.
Is the CSV encoded as UTF-8?
Yes, without a byte-order mark, which is what databases and scripting languages expect.