Skip to the tool

JSON to CSV converter

Paste an array of objects and get spreadsheet-ready CSV, with nested keys flattened to dot notation and every quote escaped properly.

Guide

How to use it

  1. Paste a JSON array: objects become rows, keys become columns.
  2. Pick a delimiter. Comma is standard, semicolon for European Excel, tab for comma-heavy data.
  3. Check the preview: nested keys appear as dot-notation columns like customer.postcode.
  4. Copy the CSV or download data.csv and open it in any spreadsheet.

Examples

Worked examples

API export to spreadsheet

An orders endpoint returns 500 objects. Paste the array, download the CSV and it opens in Excel with one order per row, ready for a pivot table.

Nested customer records

{"customer": {"name": "Sam", "address": {"city": "Hull"}}} becomes columns customer.name and customer.address.city.

Ragged rows

Half your records have a discount key, half do not. The column still appears once, and the rows without it get empty cells rather than shifted data.

Method

How it works

Each object is flattened depth-first: nested object keys join with dots, arrays inside a row are kept whole as JSON text in one cell. The header row is the union of every flattened key in first-appearance order. Cells containing the delimiter, quotes or line breaks are quoted with doubled quotes, the standard CSV escaping every spreadsheet understands.

The conversion runs in your browser, so exports containing customer data never leave your machine.

FAQ

Frequently asked questions

What shape does my JSON need to be?

An array at the top level. An array of objects becomes rows with keys as columns; an array of arrays is treated as rows directly. A single object is not a table, wrap it in brackets if you mean one row.

How are nested objects handled?

They are flattened with dot notation: customer.address.city becomes one column. Arrays inside a row are kept as JSON text in a single cell, since spreading them across columns invents structure that was not there.

What if rows have different keys?

The column set is the union of every key seen, in first-appearance order. Rows missing a key get an empty cell.

Which delimiter should I pick?

Comma is standard. Semicolon suits locales where Excel expects it (much of Europe). Tab avoids quoting headaches when your data is full of commas.

Why does Excel mangle my long numbers?

Excel converts long digit strings to scientific notation and trims them on open. That is Excel's import behaviour, not the CSV. Import the column as text or use the data import wizard.

Is my data uploaded to convert it?

No. Parsing, flattening and CSV assembly all run in your browser. Customer exports never leave your machine.

More tools

Related tools

JSON formatterInspect the array in a tree before converting it. JSON validatorFix the syntax error blocking your conversion. Character counterCheck field lengths before they hit a column limit.
Skip to the tool

JSON to CSV converter

Paste an array of objects and get spreadsheet-ready CSV, with nested keys flattened to dot notation and every quote escaped properly.

Paste a JSON array to convert it.

Everything runs in your browser. Nothing you paste is sent to a server.

Guide

How to use it

  1. Paste a JSON array: objects become rows, keys become columns.
  2. Pick a delimiter. Comma is standard, semicolon for European Excel, tab for comma-heavy data.
  3. Check the preview: nested keys appear as dot-notation columns like customer.postcode.
  4. Copy the CSV or download data.csv and open it in any spreadsheet.

Examples

Worked examples

API export to spreadsheet

An orders endpoint returns 500 objects. Paste the array, download the CSV and it opens in Excel with one order per row, ready for a pivot table.

Nested customer records

{"customer": {"name": "Sam", "address": {"city": "Hull"}}} becomes columns customer.name and customer.address.city.

Ragged rows

Half your records have a discount key, half do not. The column still appears once, and the rows without it get empty cells rather than shifted data.

Method

How it works

Each object is flattened depth-first: nested object keys join with dots, arrays inside a row are kept whole as JSON text in one cell. The header row is the union of every flattened key in first-appearance order. Cells containing the delimiter, quotes or line breaks are quoted with doubled quotes, the standard CSV escaping every spreadsheet understands.

The conversion runs in your browser, so exports containing customer data never leave your machine.

FAQ

Frequently asked questions

What shape does my JSON need to be?

An array at the top level. An array of objects becomes rows with keys as columns; an array of arrays is treated as rows directly. A single object is not a table, wrap it in brackets if you mean one row.

How are nested objects handled?

They are flattened with dot notation: customer.address.city becomes one column. Arrays inside a row are kept as JSON text in a single cell, since spreading them across columns invents structure that was not there.

What if rows have different keys?

The column set is the union of every key seen, in first-appearance order. Rows missing a key get an empty cell.

Which delimiter should I pick?

Comma is standard. Semicolon suits locales where Excel expects it (much of Europe). Tab avoids quoting headaches when your data is full of commas.

Why does Excel mangle my long numbers?

Excel converts long digit strings to scientific notation and trims them on open. That is Excel's import behaviour, not the CSV. Import the column as text or use the data import wizard.

Is my data uploaded to convert it?

No. Parsing, flattening and CSV assembly all run in your browser. Customer exports never leave your machine.

More tools

Related tools