JSON to CSV Converter
Data ConversionTurn a JSON array of objects into a spreadsheet-ready CSV file.
Runs entirely in your browser — nothing is uploaded
Features
- Takes the union of every key, so records with missing fields still line up.
- Flattens nested objects and arrays into dotted column names.
- Comma, semicolon, tab or pipe separators with RFC 4180 quoting.
- Optional BOM so Excel opens accented text correctly.
- Optional formula neutralising for untrusted data.
- Runs entirely in your browser — the data is never uploaded.
How to use the JSON to CSV Converter
- 1Paste your JSON array, or drop a .json file onto the box.
- 2Choose the separator and whether to flatten nested keys.
- 3Copy the CSV, or download it and open it in Excel or Google Sheets.
Frequently asked questions
How do nested objects become CSV columns?
CSV has no way to express nesting, so each nested value gets a dotted column name — {"address":{"city":"London"}} becomes a column called address.city. Arrays are indexed the same way: tags.0, tags.1. Turn flattening off and the nested value is written into the cell as JSON instead, which is the right choice if something downstream will parse it back.
What happens if my records have different keys?
The converter takes the union of every key across every record and writes an empty cell wherever a record does not have one. No column is dropped because it only appears in the last row.
Why is Excel showing my text as a formula?
A cell beginning with =, +, - or @ is treated as a formula by every spreadsheet, which is a real injection risk if the data came from users. Turn on “Neutralise formulas” and those cells are prefixed with an apostrophe so they are stored as text. It is off by default because it changes the data.
My accented characters look wrong in Excel. What do I do?
Turn on “Add a BOM for Excel”. Excel assumes a legacy encoding unless the file starts with a UTF-8 byte-order mark, which is why é becomes é. Google Sheets and most other tools do not need it.
Is my data uploaded anywhere?
No. The conversion is JavaScript running in your browser tab. There is no request carrying your JSON, so there is nothing to log, cache or leak.