TXT · Text & Data tools

JSON to CSV Converter

Input · JSON
Output · CSV
0 Bin0 Bout0lines in0keysEmptyJSON
Go to the full Data Format Converter

JSON to CSV

Convert a JSON array of objects to CSV rows. Paste JSON on the left; the CSV output builds on the right as you type.

[
  { "id": 1, "name": "Ada Lovelace", "role": "engineer" },
  { "id": 2, "name": "Grace Hopper", "role": "engineer" }
]

becomes

id,name,role
1,Ada Lovelace,engineer
2,Grace Hopper,engineer

Each object in the array becomes one row. The header row is built from the keys across every object, in the order they first appear, so a key that only shows up in a later object still gets its own column with earlier rows left blank in it.

Flattening nested data

CSV can’t represent a nested object inside a cell the way JSON can, so a value like { "user": { "id": 1, "address": { "city": "Rome" } } } becomes columns user.id and user.address.city by default. Array values nest the same way, with the index in the column name: tags.0, tags.1. Turn off Flatten nested if you’d rather keep the original structure as a JSON string in one cell, which some spreadsheet-adjacent tools can round-trip back into an object.

Quoting

A cell containing a comma, a double quote, or a line break gets wrapped in double quotes, with any internal quote doubled, matching the CSV format most spreadsheet software expects. You don’t need to pre-escape anything in your JSON strings.

Choosing the delimiter

The Delimiter control on the output side defaults to comma. Switch it to semicolon for regions where the comma is the decimal separator, or to tab, which is the same as using the TSV output format directly.

Frequently Asked Questions

An array of objects with similar keys, the shape of most API responses and exported records. Each object becomes one row, and the header row is the union of every key seen across all objects, in first-seen order.

They flatten into dotted column names by default: { "address": { "city": "Rome" } } becomes a column named address.city. Turn off Flatten nested to write the nested value as a JSON string in a single cell instead.

The header row includes every key seen in any object. A row missing a given key gets a blank cell there rather than shifting the remaining columns.

Yes. A single object becomes one data row under a header row built from its own keys.

It becomes a single column named value, with one row per array entry.

Jump straight to a conversion

Full Data Format Converter tool

Explore Our Tools

Browse all tools