araç köşesi

JSON to CSV

Turn a JSON array into a table a spreadsheet can open

Your data stays with you. Conversion happens inside the browser; nothing is sent to a server.

How it works

The input should be an array of objects; give it a single object and it is treated as a one-row array. Columns come from the union of every key in the array, in the order the keys are first seen, and a field missing from one object leaves that cell empty rather than shifting the row. Values containing the delimiter, a quote or a line break are wrapped in quotes with inner quotes doubled, which is what keeps the file from breaking apart when a spreadsheet opens it. Nested objects and arrays are written into the cell as JSON text, because there is no single correct way to flatten them. Pick the delimiter to match the machine that will open the file, not the one that looks tidiest.

This tool is also known as json to csv, convert json to csv, json to excel, json array to table, export json as spreadsheet.

What is JSON?

JSON is the format data arrives in when a program hands it over: an order list from an API, an exported user record, an application's backup file. Square brackets open a list, curly brackets open a record, and every value sits next to the name of its field. That self-describing shape is ideal for code and awkward for people — scanning several hundred records by eye, comparing two of them or summing a column is work JSON simply does not support, and a table does.

What is CSV?

CSV is the front door of the spreadsheet world: Excel, Numbers and Google Sheets all open it directly, and accounting and inventory systems import it without a plugin. Being plain text, it survives email, old software and every operating system. The one thing worth knowing before you export is which delimiter the receiving program expects — a comma-separated file opened in a locale that expects semicolons lands entirely in column A, and vice versa.

Why convert JSON data into a table?

JSON is a format for programs; a table is a format for people. The moment you want to read an API response by eye, filter it, total a column or hand it to someone in accounts, the data has to come down to the flat grid a spreadsheet understands. The cost of that step is hierarchy: CSV has no way to hold a structure inside a cell, so nested objects are written in as JSON text and the nesting stops being queryable. Flat record lists — the common case — convert with nothing lost at all.

Making it open correctly in Excel

Excel follows the list separator of the system it runs on. Where the comma is the decimal mark that separator is the semicolon, and a comma-separated file opened there piles every row into a single cell. The default here is the semicolon for that reason; switch to comma when the file is going to a script, a database import or a US/UK spreadsheet.

If you have the wrong file and cannot re-export, Data → From Text/CSV lets you state the delimiter by hand instead of trusting the default.

What happens to nested data?

CSV is a flat table and carries no hierarchy. When a field's value is an object or an array, it is written into the cell as JSON text so nothing is silently dropped.

To spread deep structures across real columns you have to flatten the JSON first. This tool does not do it for you on purpose: which field should become how many columns depends on the data, and guessing wrong quietly corrupts a table people then trust.

Frequently asked questions

How do I convert JSON to CSV?

Paste the JSON array into the left pane; the table appears in the right pane immediately and can be downloaded as a .csv file.

Excel puts everything in one column — what do I do?

Choose the semicolon delimiter. Spreadsheets configured for comma-decimal locales do not split a comma-separated file, so the whole row lands in the first cell.

What if the objects have different fields?

Every key found anywhere in the array becomes a column, and rows missing that field get an empty cell in the right position.

Is my data uploaded?

No. The conversion runs inside your browser, so what you paste never reaches a server and nothing about it is stored.