JSON to CSV
Paste an array of objects and get CSV, one row per object and one column per key, ready for a spreadsheet or a database import.
Paste JSON or open a .json file, up to 10 MB. It stays on this page: nothing is sent anywhere or saved.
Paste a JSON array of objects above to see it as CSV.
Everything happens on this page, on your device: your data is never sent anywhere or saved.
Turn JSON into a spreadsheet table
APIs and exports often hand you JSON: a list of records, each with the same kinds of fields. A CSV file opens in Excel, Google Sheets, Numbers or LibreOffice, and almost any database can import one. This tool makes one row per object and one column per key.
How to use it
- Paste an array of objects, or open a .json file of up to 10 MB.
- If the array sits inside an object, as in {"results": [ … ]}, choose its key from the button that appears.
- Pick the delimiter and how nested values are written.
- Copy the CSV, or download it.
The options
- Columns are every key found in any object, in the order first seen. A missing key or a null leaves the cell empty.
- Nested objects become columns named with dots, like address.city, or stay as JSON text in one cell.
- Arrays are joined with commas, like red, blue, or kept as JSON text, which loses nothing.
- Delimiter: comma suits most apps; semicolon suits spreadsheets set up for countries that write decimal commas, such as Germany or France; tab suits pasting into a sheet.
- Formula-safe puts an apostrophe before text starting with =, +, - or @, so a spreadsheet doesn’t run it as a formula. Numbers are left alone.
- Byte-order mark adds an invisible marker to the downloaded file so Excel reads letters like é and ü correctly.
How the CSV is written
It follows RFC 4180, the common CSV rules: a value holding the delimiter, a double quote or a line break goes in double quotes, and quotes inside it are doubled. Each row ends with a carriage return and line feed. Numbers are written exactly as they appear in the JSON, however long, because the JSON is read by this page’s own reader rather than converted to JavaScript numbers.
Good to know
- It makes one table. An array of objects inside a row goes into one cell as text, not into extra rows.
- It makes CSV text, not an Excel .xlsx file; spreadsheet apps open CSV directly.
- Nothing is sent anywhere or saved: the conversion runs on your device.
- Related tools: check the JSON first with the JSON Formatter and Validator, go the other way with CSV to JSON, or get tables out of a PDF with PDF Tables to CSV.