JSON to CSV Converter

Turn a JSON array into a spreadsheet-ready CSV file.

Runs in your browser Free · no accountFile upload supported
Nested keys become dotted column names such as address.city.

JSON

CSV

This conversion happens locally in your browser. Your files are never uploaded.

About the JSON to CSV converter

JSON is the format APIs speak. CSV is the format spreadsheets speak. This converter sits between the two: paste an array of JSON objects and get back a CSV file with one row per object and one column per key.

Everything runs inside your browser tab. Your data is never uploaded, which matters when the export you are wrangling happens to contain customer records.

What kind of JSON does this accept?

The ideal input is a top-level array of objects, where every object shares roughly the same keys. That maps cleanly onto rows and columns.

A single object also works and becomes a one-row table. If you paste an object that wraps an array — the common `{ "data": [...] }` shape returned by many APIs — the converter finds the array inside it and uses that.

How nested data is handled

CSV has no concept of nesting, so something has to give. With flattening on, `{"address": {"city": "Berlin"}}` becomes a column called `address.city`. Arrays of plain values are joined with semicolons so a list of tags survives the trip.

Turn flattening off and nested values are written as compact JSON inside the cell instead. That is useful when the destination system will parse them again.

Quoting and escaping

Fields containing your delimiter, a double quote, or a line break are wrapped in quotes, and embedded quotes are doubled — the rules laid out in RFC 4180. That means values with commas in them stay in one cell rather than splitting across two.

If your target program expects semicolons (common in European locales) or tabs, pick a different delimiter above the panels.

Columns and missing keys

Columns are collected in the order the keys first appear across the whole document, so a key that only exists on the tenth object still gets its own column. Objects missing that key get an empty cell rather than a shifted row.

Frequently asked questions

Why does my CSV only have one row?

The input was probably a single JSON object rather than an array of them. Wrap it in square brackets, or paste the full API response — the converter will find the array inside it.

My numbers turned into text in Excel. Why?

That is Excel guessing, not the CSV. Long numeric IDs and values with leading zeros are especially prone to it. Import the file through Data → From Text rather than double-clicking it, and set those columns to Text.

How large a file can I convert?

The limit is your device, not a server quota. Documents of a few megabytes convert instantly; very large files may take a second or two while the browser parses them.

Is my data uploaded anywhere?

No. The conversion is JavaScript running in your tab. Nothing is sent over the network, and closing the page discards everything.