How to use the JSON to CSV Converter
- Paste JSON, open a .json file or click Load sample. An array of objects works best; an API response that wraps the array, such as
{"data": [...]}, is detected automatically. - Choose a delimiter: comma for most apps, semicolon for Excel in countries that write decimals with a comma, or tab for TSV.
- Decide how arrays inside a record are written and whether nested objects are flattened into separate columns.
- Check the table preview, then click Download CSV or Copy CSV.
Features
- Flattens nested objects into columns such as customer.address.city
- Builds the column list from every record, not just the first
- RFC 4180 quoting for commas, quotes and line breaks in values
- Comma, semicolon or tab delimiters with CRLF or LF line endings
- Optional byte order mark so Excel displays accented letters correctly
- Finds the records inside wrapper objects such as {"data": [...]}
From JSON records to rows and columns
CSV is a flat grid, while JSON can nest objects inside objects. The converter bridges the two in a predictable way: each object in your array becomes one row, and each distinct property name becomes one column. Records do not need identical fields. The column list is the union of every property found in every record, in the order they first appear, and a record that lacks a property simply gets an empty cell. That matters for real API data, where optional fields are often missing from the first few records.
How nested data is flattened
When Flatten nested objects is on, a property that holds another object is expanded into several columns whose names join the keys with dots. This record:
{"id": 7, "customer": {"name": "Maya", "address": {"city": "Portland"}}}
becomes three columns:
| id | customer.name | customer.address.city |
|---|---|---|
| 7 | Maya | Portland |
Dot-notation headers are easy to read and easy to turn back into nested objects later. Turn flattening off if you would rather keep each nested object as a block of JSON text in a single cell.
Arrays inside records
A list such as "tags": ["red", "large"] has no natural place in a grid. Join values writes it as red, large, which reads well in a spreadsheet. JSON text writes ["red","large"], which keeps the exact structure so another program can parse it again. Lists that contain objects are always written as JSON text, because joining them would lose information.
Quoting rules from RFC 4180
RFC 4180 is the closest thing CSV has to a standard, and this tool follows it:
- A value that contains the delimiter, a double quote or a line break is wrapped in double quotes.
- A double quote inside a value is written twice, so
Luis "Lucho" Ortegabecomes"Luis ""Lucho"" Ortega". - Rows end with CRLF (carriage return plus line feed). Choose LF if the file is going to a Unix tool that expects it.
- Values with leading or trailing spaces are quoted as well, so no program trims them by accident.
Empty values and null become empty cells, and true and false are written as words.
Opening the file in Excel or Google Sheets
Google Sheets reads UTF-8 CSV files without any extra steps. Excel on Windows may assume an older character set when you double-click a CSV, which turns letters like é or ñ into garbled symbols; ticking Add UTF-8 BOM puts a short marker at the start of the file that tells Excel to read it as UTF-8. If your Excel uses a comma as the decimal separator, it expects semicolon-separated files, so pick Semicolon.
Two more spreadsheet quirks are worth knowing. Excel keeps only 15 significant digits, so long IDs and card-like numbers lose their last digits when opened as numbers; import those columns as text instead. And a cell that starts with =, +, - or @ can be treated as a formula, so review data from untrusted sources before opening it.
Going the other way? The CSV to JSON converter turns a spreadsheet export back into JSON, and the JSON Formatter helps you inspect the input first.
Frequently asked questions
What JSON structure does the converter expect?
An array of objects, where each object is one row, gives the best result. A single object becomes one row, an array of arrays is written row by row, and a wrapper object such as {"data": [...]} is searched for the largest array of records.
Why are some cells empty?
The columns come from every record combined, so a record that does not have a particular property leaves that cell empty. Properties set to null are also written as empty cells.
Can I turn the CSV back into JSON?
Yes. Use the CSV to JSON converter. Dot-notation headers such as customer.name come back as flat keys, so you can rebuild the nesting in code if you need it.
Why does Excel show strange characters instead of accents?
Excel sometimes opens CSV files in a legacy character set. Tick “Add UTF-8 BOM for Excel” before downloading and the accents will display correctly.
Is my data uploaded anywhere?
No. The conversion runs entirely in your browser, so files containing customer or financial data never leave your computer.