JSON to CSV Converter
Paste an array of JSON objects on the left, get a CSV spreadsheet on the right. Nested values flatten into dot-path columns (meta.color, tags.0), and the output carries a UTF-8 BOM so Excel opens CJK text correctly.
How to use this tool
Paste a JSON array of objects into the input box. A single object also works — it transposes into key/value rows.
CSV output appears instantly on the right. Nested objects and arrays expand into dot-path columns (meta.color, tags.0, tags.1) so every value gets its own cell.
Use the Copy button and paste into Excel, Google Sheets, Numbers, or any CSV consumer. The output starts with a UTF-8 BOM, so double-clicking the saved file in Excel renders Chinese, Japanese and Korean text correctly.
Cells containing commas, quotes, or newlines are automatically quoted per RFC 4180.
Everything runs locally — useful for converting private API exports into spreadsheets without exposing the data.
Frequently asked questions
How are nested objects and arrays handled?
They flatten into dot-path columns. {"address": {"city": "NYC"}} becomes an "address.city" column, and arrays expand positionally ("tags.0", "tags.1", …). No data is lost, and every value lands in its own spreadsheet cell.
Why does the output start with a strange character?
That is a UTF-8 byte-order mark (BOM). Excel relies on it to detect UTF-8 — without it, CJK characters turn into mojibake when the file is opened by double-click. Paste targets ignore it.
What if my objects have different keys?
The converter takes the union of all flattened paths across every object and uses that as the header row. Missing values become empty cells.
Does it support semicolon-separated CSV (European format)?
The default output is comma-separated per RFC 4180. You can post-process for other delimiters, or paste into a spreadsheet app that lets you choose the delimiter on import.
Is the data uploaded?
No. Conversion is fully client-side. Even sensitive exports never leave your browser.