Skip to content
jsonforge.app

JSON to CSV

Convert JSON arrays to CSV and back, with type inference and quoting.

JSON input

Loading editor…

CSV output

Enter JSON on the left to convert it.

What is JSON to CSV?

A JSON to CSV converter flattens a JSON array of records into spreadsheet-ready CSV text — one row per object, one column per key. This is the direction you need when an API response or a JSON export has to reach people and tools that live in tables: a report a non-technical teammate opens in Excel or Google Sheets, a bulk import for a legacy system that only accepts CSV, or an extract for a data analyst who wants filterable columns instead of nested braces. Because CSV is flat, the conversion is really a set of decisions about structure: every key that appears anywhere in the array becomes a column (rows missing that key just get an empty cell), the first-seen order of keys sets the column order, and any nested object or array value — which has no CSV equivalent — is serialized as a JSON string inside that one cell, quoted per the standard CSV rules.

How to use JSON to CSV

  1. Paste a JSON array of objects into the left panel — one object per future row. A bare object or a mix of objects and non-objects will be rejected with an explanation of what the converter expected.
  2. The CSV renders on the right as you type — one column per key seen anywhere in the array, in first-seen order, with a header row on top. No button to click, no round trip to wait on.
  3. Skim the columns before copying — ragged objects (ones missing keys other rows have) produce empty cells rather than shifted values, and nested values show up as JSON text inside a single quoted cell.
  4. Copy the result, or hit the swap button if you later need to go the other way and turn CSV back into JSON.

Examples

JSON array → CSV

Input

[{"id": 1, "name": "Ada"}, {"id": 2, "name": "Grace"}]

Output

id,name 1,Ada 2,Grace

Missing keys leave empty cells (ragged array)

Input

[{"id": 1, "name": "Ada", "role": "admin"}, {"id": 2, "name": "Grace"}]

Output

id,name,role 1,Ada,admin 2,Grace,

Common mistakes

  • Pasting a bare JSON object (not wrapped in an array) — the converter needs an array of objects, one per row, to know what a "row" even is.
  • Expecting nested objects/arrays to expand into multiple CSV columns automatically — they're serialized as a single JSON-text cell instead, since CSV has no native nesting.
  • Assuming every key in a nested value will surface as its own column — only top-level keys of the objects become columns; anything deeper is part of the serialized JSON cell.

Why use this tool

  • Runs entirely client-side — no data you convert is ever sent to a server.
  • Handles ragged JSON (objects with differing keys) and quoted fields correctly, not just the simplest flat case.
  • Deterministic column model — first-seen key order and the one-column-per-key rule mean the same array always produces the same spreadsheet layout.

Frequently asked questions