Your files never leave this device — 100% in-browser

JSON to CSV Converter

Flatten API responses and exports into a CSV that opens cleanly in Excel — generated locally, nothing uploaded.

Flatten a JSON array into a CSV that opens correctly in Excel on the first try — UTF-8 BOM for 한글 and accents, CRLF line endings, union headers across uneven objects, and formula-injection protection on suspicious cells. Nested values are preserved as JSON-in-cell.

Last verified 2026-08-15 — this tool passed 85 automated end-to-end checks

Drop .json files here, or click to browse
converts to CSV · RFC 4180 · Excel-ready output
01 — EXCEL-READY
Output ships with a UTF-8 BOM and CRLF line endings — the two details that stop Excel from mangling 한국어, émojis and accents.
02 — UNION HEADERS
Objects with different keys merge into one consistent column set, ordered by first appearance. Missing values become empty cells.
03 — PRIVATE
API dumps often contain tokens and personal data. This converter runs entirely in your browser, so none of it goes anywhere.

How to use

  1. Drop your file(s) into the box above — or click it to browse.
  2. Conversion starts immediately — no settings needed.
  3. Click Download on each finished file — or Download all (.zip) for a batch. Nothing was uploaded at any point.

What shapes of JSON convert?

The canonical input is an array of objects — what nearly every API returns. Each object becomes a row; the column set is the union of all keys in order of first appearance, so records with missing fields still line up correctly. Three other shapes are handled sensibly: a single object becomes a one-row CSV, an array of arrays converts as raw rows, and an object-of-objects (keyed records) becomes rows with a _key column.

Nested values don't flatten silently: an embedded object or array is written into its cell as compact JSON, so no data is lost — you can always see exactly what was nested where.

Input shape → output behavior
JSON inputCSV output
[{"a":1},{"a":2,"b":3}]Columns a,b — union of keys, blanks for missing
{"x":1,"y":2}One data row
{"kim":{"age":3},"lee":{"age":9}}Rows with a _key column (kim, lee)
[[1,2],[3,4]]Raw rows, no header
Nested object in a fieldCell contains compact JSON of it

The Excel details that actually matter

Two invisible bytes decide whether your CSV opens correctly. First, Excel assumes a legacy encoding unless the file starts with a UTF-8 BOM — without it, Korean, Japanese and accented text turn to garbage. Second, the CSV RFC specifies CRLF line endings, which is also what Excel is happiest with. This converter emits both, plus RFC 4180 quoting for any cell containing commas, quotes or line breaks.

When NOT to convert JSON to CSV

  • Deeply nested structures — CSV is a flat table; heavy nesting arrives as JSON-in-cells, which spreadsheets can display but not compute on. Restructure first if you need columns.
  • Data returning to an API — round-tripping through CSV loses type fidelity (everything becomes text in Excel). Keep JSON as the source of truth.
  • Streaming/huge exports — beyond a few hundred MB, browser memory becomes the limit; use jq or a script instead.

Frequently asked questions

Why does my CSV open perfectly here but broke with other tools?

Almost always the missing UTF-8 BOM. Excel needs it to recognize Unicode; this tool always writes one (and it is invisible to every other program).

How are nested objects handled?

They are embedded as JSON text in their cell rather than dropped or exploded into surprise columns — lossless and predictable.

Why do some cells start with an apostrophe (')?

Text values beginning with =, +, -, @ or a tab character are prefixed with an apostrophe so spreadsheets display them as text instead of executing them as formulas — standard CSV-injection protection. Real numbers from your JSON are never touched, and the apostrophe is invisible in Excel cells.

Column order looks odd — can I control it?

Columns follow first appearance across the array. Reorder keys in the first object to control the layout.