Skip to content

JSON to CSV

Convert JSON objects, rows or primitive arrays into CSV with a live table preview.

Map an array of objects, arrays or primitive values into a rectangular table.

LIVE RESULT

Your working table

Updating preview…

Export settings
Off preserves original values. On changes cells starting like formulas (=, +, −, @ or leading control characters); the preview shows the prefixes too. Spreadsheet behavior varies.
Processed on your device

How it works & useful details

Formats & limits

Import UTF-8 text up to 1.5 MB or paste up to 500,000 characters. CSV accepts comma, tab, semicolon or pipe separators, doubled quotes and line breaks inside quoted fields. All rows must have the same number of fields. A final line ending is ignored; interior blank rows are real rows. A leading UTF-8 BOM is removed. Up to 10,000 rows including the header, 100 columns, 100,000 cells and 50,000 characters per cell. Output is limited to 2,000,000 characters.

Live previews pause above 50,000 input characters; exports still process the full bounded input. The table pages through 15 rows and 12 columns at a time. Export includes every result row. Processing is synchronous and bounded; cancellation is checked before and after a transformation.

Data details

Text comparisons use Unicode code-unit order, with optional case folding. Numeric sorting/filtering requires finite numbers in every selected cell and uses JavaScript decimal precision; large integer identifiers need text mode. No trimming or spreadsheet formulas are evaluated.

CSV-to-JSON defaults to strings. JSON object export requires unique, nonempty headers. JSON input uses object keys in discovery order (integer-like keys follow JSON property order), missing properties become empty cells, and arrays must be rectangular. Primitive arrays get one “Value” column. Null becomes the literal text “null” by default; nested objects/arrays become compact JSON strings. Empty strings, missing values and optional empty nulls are indistinguishable in CSV. Mixed row shapes are rejected. JSON numbers use JavaScript precision; unsafe integers are rejected, so quote large IDs. Duplicate JSON names use the last value.

Transpose allows up to 100 source rows including the optional header, and exports all transposed cells as data. Spreadsheet formula protection is opt-in: it prefixes formula-like cells with an apostrophe, visibly changing their data. Spreadsheet programs differ; review results before opening them.

About this tool

JSON to CSV turns JSON objects, rows, or primitive arrays into a CSV table with a live preview. It is the reverse of the CSV to JSON tool and is handy for producing a spreadsheet from an API response or a data file.

The workspace explains how each JSON shape maps to rows and columns, including missing properties and nested values, so the output is predictable. Everything runs locally and no request is made to any API.

How to use it

  1. Paste the JSON document.
  2. Review how the detected shape maps to columns and rows.
  3. Choose optional protections such as prefixing formula-like cells.
  4. Preview the table and export the CSV.

Worked example

This array of objects,

[
  { "name": "Ada", "score": 92, "tags": ["design", "ui"] },
  { "name": "Lin", "score": 84, "active": true },
  { "name": "Sam", "score": null, "tags": [] }
]

becomes the CSV

name,score,tags,active
Ada,92,"[""design"",""ui""]",""
Lin,84,"",true
Sam,null,[],""

The columns are the union of every key, in order of first appearance, so Lin's "active" field gets its own column. Missing fields become empty cells. Nested arrays and objects are written as JSON text inside a quoted cell, with inner quotes doubled as CSV requires.

Options that matter

  • Null handling: write the word null, or an empty cell if the target system treats blanks as missing values.
  • Nested values: keep them as JSON text, or reject the input if the target cannot handle them. Flatten JSON first if you need one column per nested field.
  • Formula escaping: prefix values that start with =, +, -, or @ with an apostrophe, so a spreadsheet does not execute them as formulas when the file is opened (CSV injection).
  • Delimiter and line endings: semicolons for European Excel installations, CRLF for maximum compatibility with Windows software.

Frequently asked questions

What happens to nested objects and arrays?

They become compact JSON strings in a cell by default, so no data is lost when the table is exported.

Why is a large number quoted?

Numbers beyond JavaScript’s safe integer range are rejected or kept as text so digits are not silently rounded.

What are the limits?

Input is limited by the platform JSON limits, with exports capped at 2,000,000 characters and up to 10,000 rows.

Which JSON shapes are accepted?

An array of objects (one row per object), an array of arrays (rows of cells), or an array of primitive values (a single-column table).