ToolLineup

JSON to CSV Converter

This JSON to CSV converter turns an array of objects into a table: one row per object, with columns taken from the keys in the order they first appear rather than alphabetised, so the output mirrors the source document. Objects with different keys still produce a complete table — every key gets a column and missing cells are left empty, so nothing is dropped. Nested objects and arrays become dot and index columns such as address.city and tags[0], keeping every value addressable, or you can keep each nested value in a single cell as compact JSON. Everything runs in your browser.

How it works

An array of objects becomes one row per object, with columns taken from the keys in the order they first appear. A wrapper object holding a single array is unwrapped automatically, so {"users": [...]} converts the users.

Nested objects and arrays become dot and index columns (address.city, tags[0]) so nothing is lost. Turn off expansion to keep each nested value in a single cell as compact JSON.

The conversion runs entirely in your browser — nothing you paste or upload is sent to a server.

JSON input
Paste JSON — an array of objects works best…
CSV output

How to convert JSON to CSV

  1. Paste your JSON into the input on the left — an array of objects converts most cleanly.
  2. The CSV appears on the right immediately, with a header row taken from the object keys.
  3. Click Download to save a .csv file you can open in Excel, Numbers or Sheets.

How the columns are chosen

Columns come from the keys of your objects, in the order they first appear — not alphabetically — so the CSV mirrors the source document. If some objects have keys others do not, every key still gets a column and the missing cells are left empty, so no data is dropped.

What happens to nested data

CSV is flat and JSON is not, so nesting has to go somewhere. By default a nested object becomes dot-separated columns (address.city) and array items become indexed columns (tags[0]), which keeps every value addressable. Turn expansion off and each nested value is written into a single cell as compact JSON instead — useful when you want one column per top-level key regardless of depth.

Common use cases

  • Getting an API response into a spreadsheet for someone who does not read JSON.
  • Preparing a bulk import file for a CRM or database that only accepts CSV.
  • Producing a quick report from a log export.

Frequently asked questions

How do I convert JSON to CSV?

Paste your JSON into the left panel and the CSV appears on the right immediately, with a header row taken from your object keys. Use the download button to save a .csv file you can open in Excel, Numbers or Google Sheets.

What JSON structure works best?

An array of objects is the natural fit, because each object becomes a row. A wrapper object holding a single array is unwrapped automatically, so {"users": [...]} converts the users rather than producing a one-row table.

How is nested JSON handled?

CSV is flat, so nesting has to go somewhere. By default a nested object becomes dot-separated columns such as address.city, and array items become indexed columns such as tags[0], which keeps every value in its own column. Turn expansion off and each nested value is written into a single cell as compact JSON instead.

What if my objects have different keys?

Every key found anywhere in the array gets a column, and objects that lack a key simply have an empty cell there. No field is dropped just because it is missing from the first record.

Are commas and quotes inside values handled correctly?

Yes. Any value containing a comma, a double quote or a line break is wrapped in quotes, and embedded quotes are doubled, which is the standard CSV escaping every spreadsheet application expects.

Is my JSON uploaded during conversion?

No. The conversion runs entirely in your browser, so nothing you paste is transmitted or stored on a server.

Related tools