tomai
Log in
Free · Developer Tools

JSON to CSV

Convert a JSON array of objects into table-ready CSV

JSON input
CSV output

What is a JSON to CSV converter?

A JSON to CSV converter transforms structured JSON data into the plain two-dimensional table format that spreadsheets, databases, and most data tools import natively. JSON objects are great in code, but when a report needs to be opened in Excel, loaded into SQL, or shared with a teammate who uses spreadsheets, CSV is the universal bridge — almost everything can read it. The tool takes an array of objects, uses each object as one row and its keys as the columns, then emits rows with escaped fields so commas and quotes inside values never break the table.

What it can do

  • Convert arrays of objects, single objects, and arrays of arrays
  • Choose comma, semicolon, tab or pipe as the delimiter
  • Optionally write the union of all object keys as a header row
  • Flatten nested objects into dot-notation columns when you ask
  • Quote and escape every field so the CSV re-imports cleanly
  • Count rows and copy or download the result

When to use it

  • Opening a JSON API response in a spreadsheet
  • Loading JSON records into a database or BI tool
  • Preparing legacy or government systems that only accept CSV
  • Sharing structured data with non-technical colleagues

Privacy: the conversion happens entirely in your browser — nothing you paste is ever uploaded.

How objects become rows and cells

The converter expects an array of objects and unions their keys into one header row:

  • Nested objects become dotted headers (user.name, user.email) instead of being dropped or stringified.
  • Arrays of primitives collapse into one cell joined by |; arrays of objects expand into indexed sub-columns.
  • A key missing in one row becomes an empty cell — column order follows the first object that declares it.

Flattening nested JSON into columns

Table-ready output

One click turns objects and arrays into clean RFC-style CSV that imports cleanly into Excel, Google Sheets, SQL and Python — no post-editing between formats.

🔒

Delimiter of your choice

Comma, semicolon, tab or pipe — pick the separator your spreadsheet locale or downstream tool needs, and every field is still quoted safely.

🎯

Nesting handled, not dropped

Nested objects flatten into readable dot-notation columns, so complex payloads become wide, useful tables instead of opaque JSON blobs.

Frequently asked questions

Which JSON shapes does it accept?

Arrays of objects (the most common case), a single top-level object, and arrays of arrays (row-major data). Scalar values such as a plain string or number at the top level are rejected with a clear error, because a single scalar cannot form a table.

How does nested-object flattening work?

When flattening is on, nested objects become dot-notation columns — {"user":{"name":"Ada"}} becomes the column header "user.name". Nested arrays are kept as JSON-encoded cell text. When flattening is off, each nested value is JSON-encoded into a single cell.

Is my JSON uploaded anywhere?

No. Everything runs in your browser with plain JavaScript — you can paste confidential data freely; nothing is transmitted or stored.

What happens to deeply nested arrays of objects?

They fan out into numbered columns (items.0.sku, items.1.sku) up to the widest row, which keeps every record importable in spreadsheets. If you would rather join them into one cell, flatten your JSON before converting — the dotted headers tell you exactly what will happen.

Related tools

Related tools