Does it handle nested JSON?
Yes. Nested objects are flattened into dotted column names such as address.city. Arrays inside a record are kept as JSON text in one cell.
Turn JSON into a table you can open, check, and export. Arrays of objects, arrays of arrays, JSON Lines, a single object, or an object wrapping one list are all accepted. Nested objects become dotted column names such as address.city, and the result can be exported as CSV or any other supported format.
Loading the CSV tools.
You do not have to take our word for it. Browser developer tools list every request a page makes, so you can watch 2csv work and confirm that your data is never sent anywhere. The check takes about a minute.
F12, or Cmd+Option+I on a Mac, and select the Network tab.Your file is read into this tab's memory with the browser's own file reader, parsed and changed by code that is already on the page, and handed back to you as a download. It is never uploaded, never stored in the browser, and gone when you close the tab. The only other request the site can make is the feedback form, and only when you submit it.
The production site also sends a Content-Security-Policy header that tells your browser to refuse connections to anywhere except this site and the anonymous analytics endpoint, so even a bug could not send your data elsewhere.
Column order follows the order in which keys first appear across the records. Keys that are missing in some records give empty cells in those rows, so records with different fields still line up in one table.
Flattening turns a nested object into separate columns whose names show the path. A record with an address object holding city and state becomes two columns, address.city and address.state. Arrays inside a record are different: they are kept as JSON text in a single cell, because spreading a list across columns would make rows of different lengths.
Yes. Once the JSON is open it is a normal table, and every tool works on it: Sort CSV, Filter CSV, Remove duplicates, and the rest. The export bar then writes CSV with your choice of delimiter and line endings, or TSV, SQL, or JSON again in a different shape.
API exports often have a few records with extra keys, and those keys become columns that are empty in most rows. Deeply nested data produces long dotted names. Very large JSON files need more memory than the same data as CSV, because the whole document is read before it becomes a table. Check the column list before exporting.
When the records are spread across several JSON or CSV files, such as one export per day, stack them into one file before converting. 2join combines them in the browser, and the result can be opened here and flattened in one step.
All eighteen tools are on the 2csv home page, and once a file is open you can switch between them without reloading it. Part of the 2suite.io privacy-first ecosystem.
Yes. Nested objects are flattened into dotted column names such as address.city. Arrays inside a record are kept as JSON text in one cell.
Every key becomes a column, in the order it first appears, and records without that key get an empty cell.
Yes. JSON Lines files with one object per line are read the same way as an array of objects.
Yes. Paste the JSON text onto the page and it opens as a table, the same as a dropped .json or .jsonl file.
Yes. An object wrapping one list is accepted, the list is used as the rows, and the page tells you it did that.