Using the converter
Paste JSON on the left. The columns are the keys, in the order they first appear, and every object becomes a row. Swap the boxes to read a CSV back into JSON.
Nested values decides what happens to an object inside an object. A column per leaf gives you user.name and user.id, flattened with dots. Keep as JSON in one cell leaves the structure intact inside a single field, which is what you want if the file is going somewhere that will parse it again.
Separator covers the two things people call CSV that use a semicolon or a tab instead. Reading CSV sets whether 12 comes back as a number or as text.
Quoting is the part that goes wrong
A field holding a comma has to be quoted, or the row grows a column. A field holding a quote has to have that quote doubled. A field holding a newline has to be quoted too, and then the file has a record spanning two lines, which breaks anything that reads it line by line.
This converter does all three, in both directions. The reader is a character-by-character pass rather than a split on commas, because a split on commas is wrong the moment any field contains one.
What it cannot fix is ragged data. A short row is padded with empty strings rather than shifted, and a row longer than the header loses the extra fields, because there is nothing to call them.
Nobody standardised CSV until 2005
The format is older than most of the software that reads it, and it ran for decades with no specification at all. RFC 4180 arrived in October 2005 and is careful about what it claims: it is an Informational RFC that documents the format "as it is used in practice" rather than defining it.
That is why files disagree. The RFC says records end with CRLF, and half the world uses a bare newline. It says fields may be quoted, and some writers quote everything. Excel picks its separator from your locale, so a French machine writes semicolons and a CSV mailed across a border stops parsing.
Treat any CSV as a guess about its own rules. The Separator control here exists because that guess is wrong often enough to need a switch.
Related conversions
JSON to YAML keeps the nesting that CSV has to flatten away, so it suits configuration where CSV suits tables. JSON to XML does the same for anything that has to go into an older system.
If your JSON is going into a string in source code rather than into a file, JSON escape is the one you want.
Questions
How do I convert JSON to CSV?
Paste the JSON above. It needs to be a list of objects, or a single object, because CSV columns come from keys and bare values have none.
What happens to nested objects?
By default each leaf becomes its own column, named by the path that reaches it, so user.name and user.id. You can switch to keeping the whole nested value as JSON inside one cell.
Why is my field wrapped in quotes?
Because it contains the separator, a quote or a line break. RFC 4180 requires quoting in those cases, and any quote inside the field is doubled.
Does the order of columns matter?
Columns appear in the order the keys are first seen, so the first object sets the shape and later objects only add to it. A key missing from an object gives an empty cell.






