JSON to CSV
Convert a JSON array of objects into CSV with a header row built from every key, correct quoting for commas and newlines, and a choice of delimiter.
How the header row is built
Columns come from the union of keys across all objects, in first-seen order, so a field that only appears on later rows still gets its column instead of being dropped. Values are quoted when they contain the delimiter, a double quote or a newline, and embedded quotes are doubled per RFC 4180 - the rule spreadsheet importers actually implement. Nested objects are stringified as JSON by default; tick the flatten option to expand them into address.city style columns instead.
Arrays of scalars ([1, 2, 3]) export as a single unnamed column, and a bare object is wrapped into a one-row file. Anything that is not parseable JSON stops the conversion with the parser's own message in the status field rather than emitting a half-written file.
Usage example
An internal API returns an array of shipment records and the analyst wants them in a spreadsheet. Paste the response, keep the comma delimiter, and the counters confirm rows and columns before you copy anything - a response that silently returned a single error object shows up as 1 row instead of the 40 you expected. Open in a spreadsheet, and the quoted note field containing ships, Monday stays in one cell because the quoting did its job.
The reverse direction matters just as often: export a sheet for a import test, then run the result back through the CSV to JSON converter and diff the two with the text diff to catch a round-trip that dropped a field.
Frequently asked questions
Which keys become columns?
The union of every key in the array, in the order each first appears. A key missing from some rows produces an empty cell for those rows rather than shifting values sideways.
Why does my spreadsheet split one field into two?
The field contains the delimiter and was not quoted - which should not happen here, so check whether you switched the delimiter to semicolon while the data contains semicolons. Tab-delimited output avoids the conflict entirely.
Is there a row limit?
No fixed limit; performance depends on your browser's memory. Files in the tens of thousands of rows convert fine. The page processes everything locally, so nothing is uploaded regardless of size.