JSON to CSV

Nothing you paste here leaves your browser. There is no server to send it to — the conversion happens on your own device, and nothing is uploaded, stored or seen by anyone. Paste it, or drop a file on the page.

What this conversion costs you

A tree does not fit in a rectangle, so this page says what it did. Nested objects become dotted columns — address.city — which is lossless and readable. Arrays inside a row have no column to go in, so they are joined with a semicolon, and the page COUNTS how many that happened to. That count is the one genuinely lossy step in the conversion, and most converters do not mention it.

How it works, and why nothing is uploaded

JSON parsing is built into JavaScript, so reading it costs nothing at all. The CSV writer quotes anything containing your separator, a quote or a newline, which is the part most converters get wrong.

Everything happens in the page you are looking at. There is nothing to upload, no queue, no size limit but your own memory, and nothing that could be read by anybody — because it is never sent.

Where to go next

What this does not do

It converts one document at a time and does not validate against a schema, transform with XSLT, or query with JSONPath. It will tell you when your input does not parse, and where, rather than producing something that looks converted.

Nothing is uploaded, so it cannot work on a file that is not on the device you are using, and it does not remember what you converted a moment ago. Close the tab and it is gone.