How to convert JSON to CSV
- Paste your JSON into the top box — an array of objects works best, but a single object or an object that wraps an array (like an API response) is fine too. The CSV appears automatically as you type.
- Pick a delimiter (comma, semicolon or tab) and choose whether to include a header row and flatten nested objects.
- Click Copy to paste it into a spreadsheet, or Download .csv to save an Excel-ready UTF-8 file.
From API response to spreadsheet
APIs speak JSON; spreadsheets speak CSV. If you have ever pulled a list of orders, users or analytics events from an API and then needed to slice it in Excel or Google Sheets, you know the awkward gap between the two formats. This converter closes it: paste the raw response and get a table where every object becomes a row and every key becomes a column. The header row is built from the union of keys across all objects, in the order they first appear — so even if some records are missing fields, every column still lines up and missing values are simply left blank. You do not even need to trim the response first: if your JSON is an object that wraps the data (for example {"results": [ … ]}), the tool automatically finds the first array of records inside it. Arrays of arrays are supported as well and are written out row by row.
Nested objects and flattening
Real-world JSON is rarely flat. With “Flatten nested objects” on (the default), a record like {"user":{"name":"Ann","geo":{"city":"Paris"}}} becomes the columns user.name and user.geo.city — the same dot notation used by most data tools, so the output drops straight into pivot tables and BI imports. Turn the option off and nested objects are kept as compact JSON text inside a single cell instead. Arrays are always written as JSON text, since there is no single obvious way to spread them across columns. Escaping follows the CSV standard: any value containing the delimiter, quotes or line breaks is wrapped in double quotes, inner quotes are doubled, and rows end with \r\n so every spreadsheet app parses the file identically.
Excel-friendly UTF-8 output
A classic CSV headache is Excel mangling accented letters, currency symbols or non-Latin text. The Download .csv button prevents that by prefixing the file with a UTF-8 byte order mark (BOM), which tells Excel to open it as UTF-8 — names like “José” or “東京” come through intact. And because Toolyard converts everything inside your browser on your own device, your data is never uploaded anywhere — safe for customer exports, financial records and other private payloads.
Frequently asked questions
How are nested objects handled?
By default nested objects are flattened into dot-notation columns, so {"user":{"name":"Ann"}} becomes a user.name column. Turn flattening off to keep nested values as JSON text inside a single cell. Arrays are always written as JSON text.
Can it handle large JSON files?
Yes. Everything runs locally in your browser, so tens of thousands of rows convert in a moment. The practical limit is your device's memory rather than any server quota.
Will the CSV open correctly in Excel?
Yes. The downloaded file starts with a UTF-8 byte order mark (BOM), which tells Excel to read it as UTF-8, so accents, symbols and non-Latin characters display correctly.
Is my JSON uploaded?
No. The conversion runs entirely in your browser. Your data is never uploaded and stays private on your device.
Can I convert CSV back to JSON?
Yes — use the CSV to JSON converter for the reverse direction. It is just as free and private.