It turns a table in CSV form into JSON, and JSON back into a table, without sending the data anywhere. A CSV file is just text with one record per line and a separator between values, which is easy to produce and surprisingly hard to read correctly: values can contain the separator itself, quotes, even line breaks. This converter follows the CSV specification (RFC 4180) and is forgiving about the untidy files that spreadsheets and exports really produce.
Converting JSON to CSV
Paste an array of objects, an array of arrays, or a single object. The columns are all the keys that appear in any record, in the order they first appear; a record that lacks a key gets an empty cell. Nested data is flattened by one documented rule: a key inside an object becomes the path joined with dots, so {"user": {"name": "An"}} gives a column called user.name, and array items are numbered, so tags becomes tags.0 and tags.1. If you prefer, keep a whole array as JSON text in one cell. Cells that contain the separator, a quote or a line break are quoted, with quotes doubled, as the standard requires.
A worked example
This CSV has a quoted value with a comma in it and an empty cell:
name,age,city
An,34,"Ha Noi, VN"
Binh,,Hue
With the defaults the result is a list of two objects in which every value is text, so Binh's age is an empty string. With conversion on, An's age becomes the number 34 and Binh's becomes null. In the other direction, the JSON {"id": 1, "user": {"name": "An"}, "tags": ["a", "b"]} becomes the columns id, user.name, tags.0 and tags.1, with the values 1, An, a and b.
Why conversion is off by default
Spreadsheets quietly turn text into numbers and damage data: a postcode 01234 loses its zero, a 16-digit card or order number turns into scientific notation, a product code like 1E5 becomes 100000. This tool does not guess unless you ask. Even with conversion on, a value with a leading zero, or an integer of more than 15 digits, stays text, because JavaScript cannot hold such numbers exactly.
Limits
Input up to 5 million characters or 10 MB for a file. The result box shows the first 200,000 characters of very large results; copy and download always contain everything. Dates are not converted: they stay text.