JSON to CSV Converter
JSON to CSV Converter turns a JSON object, or an array of JSON objects, into CSV entirely in your browser.
Paste a JSON object or an array of objects, choose the options, then convert. Nested objects are flattened with dot notation; nested arrays are kept as JSON text.
Converts JSON objects into CSV locally in your browser. JSON numbers use JavaScript number semantics, so very large integers can lose precision. Formula protection reduces the risk that some spreadsheets interpret a cell as a formula; it does not prevent every CSV issue. Different from the CSV to JSON tool, which goes the other way.
How to use it
- Paste a JSON object or an array of objects into the input
- Choose the delimiter (comma, semicolon, tab) and the line ending (CRLF or LF)
- Optionally turn off the header row, keep formula protection on, or add a UTF-8 BOM for download
- Click Convert to CSV, then copy the result or download converted.csv
Paste your JSON, click Convert to CSV, and get a preview plus buttons to copy or download the result as converted.csv. Nested objects are flattened into columns using dot notation, so a user object with an address becomes columns like user.address.city. Nested arrays are not exploded into extra rows; they are kept as JSON text in a single cell. If a flattened key would collide with a dotted key already in the data, the tool stops with a clear message instead of silently overwriting. Column headers are the union of every object's keys, in first-appearance order — never sorted alphabetically — and missing keys become empty cells. Values are written straight through: null becomes an empty cell, booleans become true or false, numbers keep their JSON form without locale formatting, and strings are quoted per RFC 4180 whenever they contain the delimiter, a double quote, or a line break, with internal quotes doubled. You choose the delimiter (comma, semicolon, or tab), the line ending (CRLF as recommended by RFC 4180, or LF), whether to include a header row, and whether to add a UTF-8 BOM to the downloaded file for older spreadsheet software. An optional formula-protection setting, on by default, prefixes an apostrophe to string cells that begin with =, +, - or @, which reduces the chance that a spreadsheet treats the cell as a formula; it is not a guarantee against every CSV problem and never touches native numbers. JSON numbers are parsed with JavaScript number semantics, so very large integers can lose precision. Everything runs locally: the JSON, the CSV, your options and the stats are never uploaded, logged, or stored. This is the opposite direction of the CSV to JSON tool, which turns tabular CSV into JSON objects.
FAQ
A single JSON object becomes one data row; a non-empty array of objects becomes one row per object. Arrays of primitives, single primitives and empty roots are not supported, because CSV is a table.
They are flattened into separate columns using dot notation: user.name, user.address.city, and so on. Nested arrays are not flattened; each array value is written as JSON text inside one cell.
RFC 4180 requires quoting any field that contains the delimiter, a double quote, or a line break. Internal double quotes are doubled. Plain fields are left exactly as they are.
Some spreadsheets treat a cell starting with =, +, - or @ as a formula. When the option is on, the tool prefixes an apostrophe to such string cells. It reduces that risk but is not a full protection, and it never changes native numbers.
No. The conversion runs entirely in your browser with JSON.parse and in-memory processing. The JSON, the CSV, your options and the stats are never sent to a server, written to storage, or logged.