Paste a JSON file or a whole API response and get a CSV you can open in Excel or Google Sheets. It finds the list to export, flattens nested objects into columns and lets you choose how arrays are handled. Pick and reorder columns, then download. It runs in your browser.
Free JSON to CSV converter. Paste JSON, an API response or a .json or .jsonl file. It finds the list of records, flattens nested objects into dot-notation columns and handles arrays by joining them, keeping them as JSON or giving each item its own row. Pick, hide and reorder columns with a live table preview, then download a .csv with an optional BOM for Excel. Runs in the browser.
Lists go in one cell, like gift, priority. In a list of objects each field is joined, so items.sku reads TEE-M, MUG.
Your table shows up here
Paste JSON or an API response. It updates as you type.
Was this tool helpful?
A CSV cell holds one value, so every JSON to CSV converter has to decide what to do with a list. Here is one order with two items, converted each way.
In
{ "id": "ord_1001", "customer": { "name": "Maya Chen", "city": "Toronto" }, "items": [ { "sku": "TEE-M", "qty": 2 }, { "sku": "MUG", "qty": 1 } ] }
Out
id,customer.name,customer.city,items.sku,items.qty ord_1001,Maya Chen,Toronto,"TEE-M, MUG","2, 1"
Join. One row per order. Each item field is joined in one cell. Good for a quick overview.
id,customer.name,customer.city,items ord_1001,Maya Chen,Toronto,"[{""sku"":""TEE-M"",""qty"":2},{""sku"":""MUG"",""qty"":1}]"
JSON. One row per order, with the list kept as JSON text so nothing is lost.
id,customer.name,customer.city,items.sku,items.qty ord_1001,Maya Chen,Toronto,TEE-M,2 ord_1001,Maya Chen,Toronto,MUG,1
Rows. One row per item, with the order's values repeated. Best for pivot tables and sums.
A JSON array, a full API response or a .jsonl export. Broken JSON gets a line number and a Repair button.
Choose which list becomes the rows, how nested lists are handled, and which columns to keep and in what order.
Download a .csv, with a BOM and semicolons for European Excel if you need them, or copy the table into Google Sheets.
APIs and apps speak JSON because it can nest. People and spreadsheets want flat rows. Convert when the data needs to be sorted, filtered, charted or imported somewhere that expects a table.
| JSON | CSV | |
|---|---|---|
| Structure | Nested objects and arrays | Flat rows and columns |
| Made for | APIs, config files, web apps | Spreadsheets, databases, BI tools |
| Opens in | Code editors and browsers | Excel, Google Sheets, Numbers |
| Nested data | Native | Flattened to columns like user.name |
| Size | Repeats every key in every record | Column names once, in the header |
Check the token count of your export, find a model that handles data work well, and price a batch job before you run it.
Paste your JSON or drop a .json file into the converter. It finds the list of records, turns each one into a row and shows a live table. Pick the columns you want, then click Download .csv or copy the table straight into Google Sheets or Excel. It updates as you type and needs no signup.
Paste the whole response. The converter looks inside it for every list, such as data.orders or results, and lets you pick which one becomes the rows. The longest list of objects is chosen for you. Metadata like page numbers is left out unless you pick it.
With Flatten nested objects on, each nested key becomes its own column in dot notation, so customer.address.city is one column. Turn it off to keep each nested object as JSON text in a single cell. Keys that are missing from some records leave those cells empty.
You pick one of three options. Join puts the values in one cell, like gift, priority, and joins each field of a list of objects. JSON keeps the list as JSON text in one cell. Rows gives every list item its own row and repeats the parent's values, which suits order line items.
Turn on BOM for Excel before you download. It adds a UTF-8 byte order mark, so Excel reads accents, currency symbols and emoji correctly. If your Excel uses a comma as the decimal separator, as in much of Europe, also choose Semicolon as the delimiter so columns split properly.
Yes. Every column appears as a chip above the table. Click a chip to hide or show that column, and drag it to move it. With the keyboard, focus a chip and press Alt with the left or right arrow. Reset puts every column back in its original order.
Yes. A file with one JSON object per line, often saved as .jsonl or .ndjson, is read as rows automatically. If the JSON has an error, you see the line and column, and Repair JSON fixes trailing commas, comments, single quotes, unquoted keys and ```json code fences.
No. The file is read and converted in your browser and nothing is sent to a server, so customer exports and API data stay on your computer. There's no account, and inputs up to about 10 MB work.
Everything from model picks to CSV converters, with no account needed.