AnkhKit

Convert JSON to CSV Online — Free

Runs 100% in your browser — your files never leave your device.

Spreadsheet tools and BI dashboards want CSV; your data arrives as JSON. Paste an array of objects and get a proper CSV: columns are the union of every key in first-appearance order, missing values become empty cells, and nested values are serialized as JSON strings. Everything converts locally in your browser.

How it works

  1. 1

    Paste your JSON

    An array of flat objects works best, like [{"name": "Ada"}, {"name": "Grace"}].

  2. 2

    Read the CSV

    Columns appear in the order keys first occur; values needing quotes get them automatically.

  3. 3

    Copy or download

    Copy the CSV text or download it — ready for Excel or any import.

About this tool

How the conversion works

The tool reads your JSON array of objects, collects every property key it finds as a column, and emits a standards-compliant CSV — fields quoted when needed, embedded commas and line breaks escaped, header row from the union of keys.

The flat-shape assumption

CSV is a flat grid, so nested objects and arrays need flattening before conversion — a nested address becomes address.street and address.city, or gets serialized. Convert the shape you want first; the tool faithfully represents whatever structure arrives.

Spreadsheet-ready output

The CSV opens directly in Excel, Sheets, and Numbers, or flows into any data pipeline. For a real .xlsx workbook with proper cells, the CSV to Excel tool takes this output one step further.

Frequently asked questions

What if my objects have different keys?

The CSV columns cover the union of all keys — objects missing a property get an empty cell. That is the honest representation of ragged data.

Why is everything quoted in my output?

Fields are quoted only when they contain commas, quotes, or line breaks — minimal quoting per the spec. A fully quoted output means your values contain separators throughout.

Can nested arrays convert?

Arrays serialize into the cell as JSON text rather than exploding into rows. Flatten your structure first if you need one row per nested element.

More data converters