Why you'd use this
Most software sends data in JSON. Ask a developer for "the orders data", export from Shopify, Stripe, HubSpot or almost any API, and you often get a .json file instead of a spreadsheet. Open it in Excel and you get one long line of brackets and quotes, or an error.
The reason is nesting. An order holds a customer, the customer holds an address, and the order also holds a list of items. A spreadsheet can't put a list inside a cell. This tool unpacks all of that into columns you recognise, like customer.address.city, and lets you choose what happens to the lists. Then you download a normal CSV and carry on in Excel or Google Sheets.
How to use it
- Paste JSON, or upload a .json or .jsonl file.
- If the records sit inside a wrapper, check Records are in points at the right list.
- Choose what happens to lists inside each record.
- Hit Convert to CSV, check the preview, and download.
Three ways to handle lists
Nested objects are easy: the city inside a customer's address becomes a column called customer.address.city. Lists are where every JSON to CSV converter has to make a choice, and most make it for you. Here you pick:
- Join into one cell. ["gift", "priority"] becomes gift; priority. Best for tags and short lists of plain values.
- Spread into numbered columns. items.0.sku, items.1.sku and so on. Fine when every record has two or three items, painful when one has fifty.
- One row per item. An order with three items becomes three rows, each carrying the order's id, date and customer. This is the shape you want for a pivot table or a SQL load.
When the JSON is broken
If the text isn't valid JSON, you get the line and column where parsing failed, which is usually a trailing comma or a missing quote one line above. If it's JSON Lines (one object per line, common in logs and data exports), that's detected on its own.
Next step. Once it's a CSV, CSV to SQL writes the CREATE TABLE and INSERT statements to load it.
Questions
My JSON is one big object, not a list. Will it work?
Yes. Most API responses wrap the records, like {"page": 1, "orders": [...]}. The tool finds the lists inside and picks the biggest one as the records. You can switch to another list, or treat the whole object as one row.
What does one row per item do?
If each order has a list of items, you get one row per item, with the order's fields repeated on each. That's usually what you want for analysis in Excel or SQL. Other lists in the record are joined into one cell.
Why do some cells contain JSON?
When you choose to join lists and the list holds objects rather than plain values, there's no clean way to put them in one cell, so they're kept as JSON. Switch to numbered columns or one row per item to break them out.
Will Excel open the CSV properly?
Yes. The download includes a UTF-8 byte order mark, which is what Excel needs to show non-English characters correctly. Leading zeros will still be stripped by Excel unless you import the column as text.
Is my data uploaded?
No. Parsing and flattening happen in your browser.