JSON to CSV Converter – Free, Online, Private
Flatten a JSON array of objects into a CSV file you can open in a spreadsheet. Nested values are kept as JSON strings so nothing is silently dropped.
How to convert JSON to CSV
- Paste a JSON array of objects, or one object if you only need a single row.
- The converter collects every key as a column and prints RFC-style CSV.
- Copy the result into Excel, Google Sheets, or a database import tool.
How rows and columns are chosen
Spreadsheets are rectangular and JSON is a tree. This page expects an array of objects, which is the shape of almost every REST list endpoint. Each object becomes one row. The column set is the union of keys, so a field that appears only on the second object still gets a column and the first row has an empty cell. Nested objects and arrays are not exploded into extra columns. They are written as a JSON string inside one cell. That keeps postal addresses and tag lists intact instead of inventing city, city_2, tag_0 names you did not ask for. If you need those columns, reshape the JSON first.
Types and quoting
Numbers and booleans are written without quotes. Strings are quoted when they contain commas, quotes or newlines, and embedded quotes are doubled, which is what Papa Parse and Excel both expect. A string that looks like a number stays a string if it was a string in JSON, because the value is not re-parsed. Null becomes an empty field. Keys are not reordered to alphabetical order; they follow first-seen order, which is usually the order of the first object. A root object that is not an array is treated as a one-row table.
Worked example
Two user records produce a header id,name,active,city and two data lines. active is the bare token true, which Sheets will often treat as a boolean. city values need no quotes. If a name contained a comma, such as Lovelace, Ada, the field would be wrapped in double quotes. Opening the file in a tool that assumes Latin-1 can mangle non-ASCII names; the output is UTF-8. Add a BOM in your editor if a particular spreadsheet product requires one. This page does not add a BOM, so the bytes stay plain.
What this page will not do
It will not join related tables, expand JSON:API includes, or parse NDJSON line by line. One JSON value in, one CSV table out. Very wide documents with thousands of distinct keys produce a wide header, which is faithful but awkward. For a one-off API payload of a few thousand rows the browser is enough. The conversion does not leave the tab, so a customer export can be reshaped on a laptop that is not allowed to upload the file.
Frequently asked questions
Can I convert a single JSON object?
Yes. One object becomes a one-row CSV using that object's keys as the header.
What happens to nested objects?
They are placed in a single cell as JSON text. The cell is quoted so the commas inside it do not create extra columns.
Will Excel open this?
Yes, as UTF-8 CSV. If accented characters look wrong, use the spreadsheet's import dialog and pick UTF-8 instead of double-clicking.
Are formulas escaped?
Values are not prefixed against spreadsheet formula injection. A cell that starts with = is still your data. Treat untrusted CSV as data, not as a macro.