JSON to CSV
Convert a JSON array of objects into clean CSV, with automatic column detection. Free and fully in-browser.
name,free,tools toolko,true,12 json,true, csv,false,3
How to use the JSON to CSV
- 1Paste your JSON array of objects into the input box, or upload a .json file with the file button.
- 2Watch the live preview — the tool reads every object and builds the header row from the union of all keys across the array.
- 3Set your options: pick the delimiter (comma, semicolon, or tab) and choose whether nested objects flatten into dotted columns (address.city) or stay as JSON text in a single cell.
- 4Scan the preview table to confirm columns line up and that records missing a field show an empty cell rather than shifted data.
- 5Click Copy to put the CSV on your clipboard, or Download to save a .csv ready for Excel or Google Sheets.
About the JSON to CSV
JSON to CSV converts a JSON array of objects into a spreadsheet-ready table you can open in Excel, Google Sheets, Numbers, or import into Postgres, MySQL, or SQLite. Paste an array like [{"name":"Ana","age":29},{"name":"Marko","age":34}] and the tool scans every object, collects the union of all keys, and uses them as the header row. This automatic column detection matters because exported JSON is rarely uniform: if one record carries an "email" field the others lack, that column is still created and the missing cells are left empty rather than shifting later values into the wrong columns. Values containing commas, double quotes, or line breaks are wrapped in double quotes and internal quotes are doubled, so the output stays valid RFC 4180 CSV that spreadsheets parse without splitting a field mid-value.
The conversion runs entirely in your browser with JavaScript. Your JSON is never uploaded — nothing is sent to a server — so you can convert exports containing customer emails, order records, or API responses with private tokens without that data leaving your machine. That also means there is no rate limit, sign-up, or round trip: tweak the delimiter, re-check the live preview, and download in one continuous loop.
Typical users are developers turning a REST response into a sheet for a non-technical colleague, analysts converting a MongoDB or Firebase export into something Excel can pivot, marketers reshaping a webhook payload into a contact list, and QA engineers eyeballing test fixtures as a grid.
Two things trip people up. First, nested objects and arrays: decide up front whether you want them serialized as JSON text inside one cell or flattened into dotted columns like address.city — inconsistent nesting across records is the most common reason output looks wrong. Flattening works best when the shape is stable; otherwise keep the nested value as JSON text. Second, your source must be a top-level array. A single bare object needs square brackets around it, and newline-delimited JSON (one object per line) must be joined into a comma-separated array before it will parse.
Frequently asked questions
How does it handle nested objects and arrays inside my records?
You choose per conversion. The tool can serialize a nested value into JSON text inside one cell (so {"city":"Podgorica"} appears as that literal string in a single column), or flatten it into dotted columns like address.city and address.zip. Flattening is cleanest when every record shares the same nested shape; for irregular or deeply nested structures, keeping them as JSON text avoids a jagged mess of mostly-empty columns.
Some of my objects have fields the others don't — will the columns break?
No. The header is built from the union of every key across all objects, so a field that appears in just one record still gets its own column. Records without that field get an empty cell in that position, and every row stays aligned to the header instead of sliding data left.
Will commas, quotes, or line breaks inside a value corrupt the CSV?
No. Any value containing the delimiter, a double quote, or a newline is wrapped in double quotes, and embedded quotes are doubled, following RFC 4180. That is exactly how Excel and Google Sheets expect escaped fields, so a comma inside "Podgorica, Montenegro" stays in one column instead of splitting into two.
Can I convert a single object or newline-delimited JSON instead of an array?
CSV is a table of rows, so the tool expects a top-level array. For a single object, wrap it in square brackets to make a one-element array. For NDJSON (one object per line, as many logs and APIs emit), join the lines with commas and wrap the whole thing in brackets first, then paste.
Is my data uploaded anywhere, and is there a size limit?
Nothing is uploaded. The entire conversion happens in your browser's JavaScript, so exports with customer emails or API tokens never touch a server. There's no fixed size cap — the real limit is your device's memory. Files up to a few megabytes convert instantly; very large exports may briefly freeze the tab while the browser processes them, but the data still stays local.
Related tools
Browse all free online tools in Text tools and more.
Frequently asked questions
What input does it expect?+
A JSON array of objects — keys become the CSV columns.