Skip to content

JSON to CSV

Convert a JSON array of record objects into a downloadable CSV.

JSONCSVconvertdata

Upload

Files (0–1)
One JSON document (an array of objects), or paste it below.
Paste a JSON array of record objects instead of a file.

Options

Questions people ask
What JSON shapes convert?
Exactly one shape, an array of objects: every element becomes a table row and every key a column. A top level that is not an array, a non-object element or an empty array each refuse with a named diagnostic (naming the index and the offending kind) instead of an invented shape.
How are missing properties, null and new values handled?
Columns are the union of all record keys. A record missing a column emits an empty cell; a record with an extra key widens the column set (nothing is dropped); explicit null and missing are both empty cells and the distinction disappears by definition of CSV, which the tool states rather than hides.
Do numbers and booleans survive?
CSV has no types, so values carry their text form: integers exactly, floats in shortest round-trip form, booleans as lowercase true/false. True to the letters, but the JSON type path is a documented loss (the string "true" and the boolean true produce the same text).
What happens to nested objects and arrays?
They refuse by default: the tool names the record and column and produces no artefact rather than silently flattening. Choose encode to store the value as compact JSON text in the cell; it is lossless on the way back and always counted.
How are spreadsheet formula attacks handled?
A cell a spreadsheet could execute as a formula (leading = + - @ tab or CR) is dangerous the moment the file is opened. The default prefixes such cells with an apostrophe (the standard, visible mitigation) and reports the count. Keep passes values verbatim (counted); refuse rejects with the record and column named.
What about quoting, Unicode and delimiters?
RFC 4180: CRLF rows, doubled quotes, minimal quoting by default (quote-everything available), any Unicode, and comma/semicolon/tab/pipe delimiters. A BOM is optional for legacy spreadsheet imports and recorded in the result.
How big can the input be?
4 MB of JSON; the CSV is capped at 16 MB, and beyond that it is refused rather than truncated.
What happens to my files?
The input is removed as soon as processing finishes; the CSV is available for about 10 minutes, then automatically deleted.