JSON to CSV converts a JSON array of objects into comma-separated values. Each unique key across all objects becomes a column header, and each object becomes a row in the CSV output.
The tool handles fields that contain commas, quotes, and newlines by properly quoting them per RFC 4180. If objects have different keys, missing values become empty fields — no data is lost.
Ideal for exporting API responses, database query results, or any JSON data into a format that spreadsheet applications like Excel, Google Sheets, or Numbers can open directly.
[ { "name": "Alice", "age": 30, "city": "New York" }, { "name": "Bob", "age": 25, "city": "London" }
] // Converts to:
name,age,city
Alice,30,New York
Bob,25,London[ { "name": "O'Brien, James", "note": "Said \"hello\"" }
] // Fields with commas or quotes get properly escaped:
name,note
"O'Brien, James","Said ""hello"""Commas and quotes in values are automatically handled with RFC 4180 quoting rules.
CSV is a flat format. Nested objects or arrays are serialized as their JSON string representation. For deeply nested data, consider flattening your JSON first or using a format like JSON Lines.
CSV headers are ordered by first appearance across all objects. If you need a specific column order, ensure your first JSON object has keys in the desired sequence.
Very large JSON arrays (50,000+ objects) may take a moment to convert. The tool processes everything in-browser, so performance depends on your device.
Paste a JSON array of objects into the input panel and click "Convert to CSV". Each unique key becomes a column header, and each object becomes a CSV row.
The tool unions all keys across all objects. If an object is missing a key, that cell is left empty in the CSV output. No data is lost.
Yes. Use the delimiter dropdown to choose comma, semicolon, or tab output. Semicolons are common for European locales where commas are decimal separators.
Nested objects and arrays are stringified as JSON within the CSV cell. For a flat CSV, flatten your JSON structure before converting.
Yes. Everything runs in your browser. No data is sent to any server.