Convert JSON to CSV and back
Paste a JSON array on the left and get CSV you can open in Excel, Google Sheets or Numbers. Switch the direction to turn a CSV export into JSON for an API, a test fixture or a database seed. Swap feeds the result back in.
How nested JSON becomes columns
CSV is flat: one row per record, one value per cell. Nested objects are flattened into dotted column names, so address.city becomes its own column. Arrays are kept as JSON text in a single cell, so no data is lost. When converting back, “Nest dotted columns” rebuilds the nested objects.
[{ "name": "Ada", "address": { "city": "London" }, "tags": ["admin", "dev"] }]
name,address.city,tags
Ada,London,"[""admin"",""dev""]"Records don't need the same keys. Every key that appears anywhere becomes a column, in the order it is first seen, and missing values are left empty.
Commas, quotes and line breaks
A value that contains the delimiter, a double quote or a line break is wrapped in double quotes, and any double quote inside it is doubled (" becomes ""). This is the RFC 4180 standard, which every spreadsheet understands.
Comma, semicolon or tab?
Use a comma for most tools. In countries that write decimals with a comma, such as Germany and France, Excel expects semicolons. Tab-separated values paste straight into a spreadsheet.
Spreadsheet formula protection
A cell that starts with =, +, - or @ is treated as a formula when the file is opened in a spreadsheet. If the data came from users, that can run malicious formulas, a problem known as CSV injection. With protection on, those cells start with a single quote so they are shown as text. Turn it off when you need the values exactly as they are.
Numbers that change
With type detection on, 42 becomes a number and true a boolean. Turn it off for codes with leading zeros, such as ZIP codes and phone numbers (007 would become 7), and for IDs longer than 15 digits, which JavaScript numbers can't store exactly.