Formula
columns = every key found in any object, in the order first seennested key path: address.city
- A value containing the delimiter, a double quote or a line break is wrapped in double quotes, and quotes inside are doubled
- Arrays are kept as JSON text inside one cell
Each object becomes one row; each key becomes a column, and missing keys leave empty cells.
Worked examples
Nested objects and a comma inside a value
- JSON
- [ {"id": 1, "name": "Ada", "address": {"city": "London", "zip": "N1"}, "tags": ["math", "code"]}, {"id": 2, "name": "Alan, T.", "address": {"city": "Wilmslow"}} ]
- Delimiter
- Comma ( , )
- Include a header row
- Yes
- Flatten nested objects into columns (address.city)
- Yes
- Quote values
- Only when needed
- Protect against spreadsheet formulas
- No
Rows
2
Columns: 5
id,name,address.city,address.zip,tags 1,Ada,London,N1,"[""math"",""code""]" 2,"Alan, T.",Wilmslow,,
Semicolon output with formula protection
- JSON
- [{"item": "=1+1", "price": 4.5}]
- Delimiter
- Semicolon ( ; )
- Include a header row
- Yes
- Flatten nested objects into columns (address.city)
- Yes
- Quote values
- Only when needed
- Protect against spreadsheet formulas
- Yes
Rows
1
Columns: 2
item;price '=1+1;4.5
How it works
Each object in the array becomes one row, and the columns are the union of all keys found in any object, in the order they first appear, so objects with different keys still line up and gaps stay empty. Nested objects can be flattened into dotted column names such as address.city, while arrays are kept as JSON text inside a single cell, because there is no single correct way to spread a list across columns. A single object becomes one row, a list of plain values becomes one column named value, and an array of arrays becomes rows directly.
Output follows the standard CSV quoting rules: a value that contains the delimiter, a double quote or a line break is wrapped in quotes, and quotes inside it are doubled. Choose a semicolon if your spreadsheet uses a comma as its decimal separator. If the data comes from an untrusted source, turn on formula protection: text beginning with = + - or @ can be executed as a formula when the file is opened in a spreadsheet, so a leading apostrophe makes it plain text.
The JSON must be valid; if it is not, the message says so and you can find the problem with the JSON Validator or tidy it with the JSON Formatter. For the opposite direction use the CSV to JSON Converter, and to view the data's structure before converting, format it first. All processing is local.
Assumptions and limits
- The input must be valid JSON; an array of objects works best.
- Arrays inside objects are kept as JSON text in one cell, not split into columns.
- Input above about 2 million characters is not accepted.