JSON to CSV Converter

An API returns nested objects. Excel wants flat rows. Paste the JSON, pick a delimiter, download a spreadsheet-ready CSV.

JSON input

Ready
Paste an array of objects or a single object

CSV output

Waiting

CSV preview appears as you type

Waiting for valid JSON

How nested keys become columns

Conversion runs in your browser tab. Nothing uploads to a server.

  1. Repair, then parse. A repair pass fixes common JSON issues (trailing commas, missing quotes) before JSON.parse runs. Broken input shows an error badge instead of a silent blank sheet.
  2. Normalize to rows. An array of objects becomes rows. A single object becomes one row. A wrapper like {"items":[...]} unwraps the first array property.
  3. Flatten when enabled. Nested objects expand into dotted paths: shipping.city, shipping.zip. Arrays under a key stringify into one cell so the row count stays stable.
  4. Build the CSV string. Headers come from the union of all keys across rows. Missing keys leave empty cells. Delimiter, quoting, and the header row follow the options bar.

Messy source JSON? Run JSON Fixer or JSON Beautifier first, then paste the cleaned result here.

Where people use this export

API dumps into Sheets

You pulled a paginated list of orders. Product managers want filters in Google Sheets. Flatten shipping address fields, download the CSV, import with the matching delimiter.

Support ticket triage

A webhook payload holds customer id, status, and a nested meta object. Flatten meta.plan into a column, sort by plan in Excel, assign the queue.

Quick QA of fixture data

Seed fixtures live as JSON in the repo. Open them as a table here to spot missing emails or duplicate ids before a test run.

What this converter refuses to invent

CSV is a flat table format. Deep trees lose structure on purpose.

In most cases, keep flatten on for spreadsheet review. Turn flatten off when you want nested objects left as a single JSON string per field for a later pipeline step.

JSON to CSV questions mid-export

Flattening, delimiters, and what stays empty.

Does my JSON leave the browser?

No. Parsing, flattening, and CSV generation all run in JavaScript on your device. The page never posts the payload to a server.

What JSON shapes work?

An array of objects, a single object, or an object whose first property is an array of objects. A bare array of strings or numbers has no column names, so the converter refuses them. Wrap scalars in objects first.

What does Flatten nested keys do?

With flatten on, {"user":{"name":"Ada"}} becomes a column named user.name. With flatten off, the user field stays one cell containing the stringified object. Prefer flatten for Sheets. Prefer off when a downstream script expects nested JSON in a column.

Why is my European Excel file one column?

Excel in many EU locales treats semicolon as the list separator. A comma-delimited download opens as a single column. Change Delimiter to Semicolon, convert again, then download.

Why are some cells blank?

Headers come from every key across every row. A row missing a key gets an empty cell for that column. Null and undefined also render empty.

How do I finish after downloading?

Open the file in Sheets or Excel with the same delimiter you chose. Spot-check nested columns. If you need the reverse direction later, HTML to CSV and SQL to CSV on Toolexe cover other sources.