Convert JSON to CSV

Paste an array of objects, a single object, or an object that holds one array, and get a clean CSV you can copy or download. Nested objects are flattened into dot-notation columns, every key becomes a column even when some rows lack it, and values with commas, quotes or line breaks are quoted correctly. The conversion runs in your browser, so your data never leaves your device.

Delimiter
Options

Arrays of plain values are joined with “; ” in one cell. Arrays that contain objects or other arrays are written as JSON text. Missing keys leave the cell blank.

Preview (first 20 rows)

Your table preview will appear here.

Why This Tool Matters

JSON is how APIs and exports hand over data, and a spreadsheet is where most people actually want to look at it. An analyst pulls a list of orders from an API and wants to sort and filter them in a sheet; a developer exports a database collection for a colleague who does not read JSON; a support lead needs last week's tickets in a form that can be pasted into a report. Writing a script for each of those is overkill, and a converter that mishandles nested fields or quoting quietly breaks the data.

This converter takes the awkward parts seriously. Nested objects become columns such as address.city, rows that are missing a key get an empty cell, and a name like Grace "Amazing" Hopper or a city like New York, NY is quoted so it stays in one cell. One option you may not expect: values starting with = + - or @ are prefixed with an apostrophe by default, because a spreadsheet can treat them as formulas. That is a real data-security issue when a CSV contains text from people you do not control.

How to Use

  1. 01

    Paste your JSON

    A top-level array of objects works best, but a single object or an object holding one array is accepted too.

  2. 02

    Set the options

    Choose a delimiter, decide on the header row, nested flattening and quoting, and leave formula protection on if the file is going into a spreadsheet.

  3. 03

    Check, then copy or download

    Review the first 20 rows in the preview and the row and column counts, then copy the CSV or download it as a file.

More Text Tools

Frequently Asked Questions

What JSON shapes can I convert?

Three: an array of objects (each object becomes a row), a single object (it becomes one row), and an object that holds exactly one array, such as {"data": [...]}, where that array supplies the rows. A list of plain values is also accepted and goes into a single value column. If the JSON is invalid, the error says what is wrong and the line and column where it was found.

How are nested objects and arrays handled?

With flattening on, nested objects become dot-notation columns, so {"address": {"city": "London"}} gives a column named address.city. An array of plain values is joined into one cell with a semicolon and a space (math; poetry). An array that contains objects or other arrays is written into the cell as JSON text so nothing is lost. Turn flattening off to write every nested object and array as JSON text.

What happens when objects have different keys?

The columns are the union of every key found, in the order they first appear. A row that does not have a key gets an empty cell in that column, so rows always line up. A key whose value is null is also written as an empty cell.

What does “protect against spreadsheet formulas” do?

A spreadsheet may run a cell that starts with = + - or @ as a formula, which attackers abuse in a technique called CSV injection to leak data or launch commands. With this option on, text values beginning with those characters get a leading apostrophe, which makes the spreadsheet show them as plain text. Real JSON numbers such as -5 are not touched. Turn it off if you need the raw values, for example to import into a database.

Why does Excel show garbled accents, and what is the byte order mark option?

Excel often assumes a CSV is in an older encoding unless the file starts with a UTF-8 byte order mark. The download option adds one so characters like é or 日本 display correctly. Copying the text never includes it, and you can turn it off if another program complains about stray characters at the start of the file.

Is there a size limit, and is my data uploaded?

Nothing is uploaded: the conversion and the download both happen in your browser. The work is done in short slices so the page stays responsive on large input, including files of several megabytes, but the preview only draws the first 20 rows. Very large files are limited by your device memory.