Paste JSON on the left and get CSV on the right, or drop a .json file. The conversion happens in this tab — your data is never sent anywhere, which matters when the JSON is a production API response or a customer export.
What happens to nested objects
{"address":{"city":"Oslo"}} becomes a column called address.city. That keeps every value addressable and is what spreadsheet users expect.
Arrays of plain values are joined with a semicolon into one cell, because exploding tags: ["a","b"] into tags.0 and tags.1 produces columns that differ from row to row and make the sheet unusable. Arrays of objects are flattened positionally (items.0.sku).
If you would rather keep the structure intact, switch Nested values to Keep as JSON and the whole object lands in a single cell as a JSON string — the right choice when the CSV is a staging step and something downstream will parse it again.
API responses that are not a bare array
[…]; they return {"data": […], "total": 240, "page": 1}. Dropping that in produces one row of metadata unless the tool knows to look inside. This one searches the object for the array that is obviously the record set and uses it, then tells you which key it picked and which top-level keys it left behind.
An object keyed by ID — {"u_1": {…}, "u_2": {…}}, the shape Firebase and many caches use — becomes one row per key, with the key itself in a key column so you do not lose it.
Columns, missing fields and order
null, since an empty cell is what Excel and pandas both treat as missing.Getting it to open cleanly in Excel
Other names for this
Also searched as “json to excel csv”, “convert json to spreadsheet”, “json array to csv”.
Questions
- Why did my nested JSON produce columns with dots in the names?
- That is the flattening:
user.address.cityis the path to the value. Switch “Nested values” to “Keep as JSON” if you would rather have the raw object in one cell. - My JSON is an object, not an array — what happens?
- If the object contains an array of records, that array becomes the rows. If it is an object of objects it becomes one row per key. Otherwise you get a single row with one column per field.
- Can I convert several JSON files at once?
- Yes. Drop as many as you like, or drop a whole folder. Each becomes its own CSV keeping its original filename, and you can download them individually or as a ZIP.
- Numbers with leading zeroes are being mangled.
- That is Excel, not the conversion — the CSV holds the correct text. Import the file through Data → From Text/CSV and mark the column as Text rather than double-clicking the file.
- Is my data uploaded anywhere?
- No. The conversion runs as JavaScript inside this tab. Open your browser's Network panel and convert something — you will see no request carrying your data, because there is no server to send it to. You can also turn your Wi-Fi off and convert anyway.
- How large a file can I convert?
- There is no imposed limit — the ceiling is your device's memory. In our testing a desktop browser handles files up to about 2 GB and a phone up to about 400 MB before the tab runs out of memory. Files above a few hundred megabytes are noticeably slower because everything is held in RAM at once.