CSV appears here.How to use
Add your JSON
Paste a JSON array of objects, drop or upload a .json or .jsonl file, or press Load URL. A single object, a {"data": [...]} wrapper and one-object-per-line JSON Lines also work. Try sample loads two nested records.
Set the options and convert
Pick the delimiter, header row, flattening and array handling, then press Convert to CSV. If your records sit deeper, type their path, such as data.items, in Array path and press Apply path.
Check, trim and download
Open Table preview to check the rows, untick unwanted columns under Choose columns, then press .csv or .xlsx to download, or Copy to paste the CSV somewhere.
Why JSON to CSV Converter
- Flattens nested objects into dot-notation columns and lets you choose how arrays are written.
- Comma, semicolon, tab, pipe or custom delimiter, with header, quoting and line ending options.
- A table preview and a column picker before you download .csv or .xlsx.
- Reads JSON Lines and nested arrays by path, all in your browser.
Example: nested JSON flattened to CSV columns
The sample on this page has two customer records. Each has an id, a name, an address object with a city and zip, and one of them has a tags array while the other has an active flag. The table shows how each value is placed in the CSV.
The resulting header row is id,name,address.city,address.zip,tags,active. The second record has no tags, so that cell is empty. The first has no active key, so its active cell is empty. The name Bob, Jr. contains a comma, so it is written as "Bob, Jr." in the file.
| JSON value | CSV column | Cell |
|---|---|---|
| "id": 1 | id | 1 |
| "address": {"city": "Lisbon"} | address.city | Lisbon |
| "address": {"zip": "1100-148"} | address.zip | 1100-148 |
| "tags": ["admin", "beta"] | tags | ["admin","beta"] |
| "active": false (second record only) | active | false, and empty for the first record |
| "name": "Bob, Jr." | name | "Bob, Jr." (quoted because of the comma) |
Array options: one cell, joined values or one column per item
Arrays have no natural place in a flat table, so the Arrays menu decides how they are written. The table uses the sample's tags array, ["admin", "beta"].
| Arrays setting | Columns | Cell values |
|---|---|---|
| Keep as JSON text | tags | ["admin","beta"] |
| Join values with ; | tags | admin; beta |
| One column per item | tags.0, tags.1 | admin and beta |