JSON to CSV Converter

Convert a JSON array of objects to CSV. Nested objects are automatically flattened into dot-notation columns.

🔒 All processing happens in your browser
JSONCSV
Delimiter

JSON must be an array of objects, or a single object (converts to one row).

What actually happens to nested data in this conversion? Read: Converting Between CSV, JSON, XML, and Excel

Not sure what happens to arrays when they flatten? Read: Flattening Nested JSON for CSV

How it works

This tool automatically flattens nested objects using dot notation — so { "address": { "city": "NYC" } } becomes a column literally named address.city — then writes the result as CSV, entirely using the browser's own JSON parser.

When you’d use this

  • Exporting an API response into a spreadsheet a non-technical teammate needs to open
  • Feeding structured JSON data into a tool or import process that only accepts flat tabular files
  • Turning nested application data into a flat report for analysis in Excel or Google Sheets

Common questions

What happens to arrays inside my JSON objects?+

Arrays are serialized as a JSON string within the cell, since there's no clean way to represent "a list" inside a single flat CSV cell. If you need each array item as its own row, that requires restructuring the data before conversion.

Can I convert a single JSON object, not just an array?+

Yes — a single object (not wrapped in an array) is treated as one row. An array of objects becomes multiple rows, one per object.

Why would I choose semicolon or tab instead of comma?+

If you're opening the result in Excel with a European locale (where the comma is already the decimal separator), semicolon-delimited CSV opens correctly without column misalignment. Tab-delimited (TSV) is useful when your data itself contains commas that shouldn't be treated as delimiters.

What if my JSON objects have different keys from each other?+

The output CSV uses whatever keys exist in each object — if objects have inconsistent keys, some cells in the resulting spreadsheet may be empty for rows missing a particular field, which is normal and expected behavior for irregular data.