Skip to content
TinySolve

JSON to CSV

Turn an array of JSON objects into a spreadsheet-ready CSV, nested fields included.

Runs in your browser — nothing you type is sent anywhere

Nested objects become dotted columns such as contact.email. Columns are taken from every row, not just the first, so a field that only some records have is still included.

CSV

The result appears here as you type. Nothing is sent anywhere — the work happens in this page.

About the JSON to CSV

API responses arrive as JSON and spreadsheets want CSV, so this conversion happens constantly — usually to get some data in front of someone who does not want to read JSON.

Two details decide whether the result actually opens correctly. The first is quoting: a field containing a comma, a quote or a line break has to be wrapped in quotes, and an embedded quote is escaped by doubling it rather than with a backslash. Get that wrong and the file looks fine until one row contains a comma, at which point every column after it shifts and the data is quietly corrupted.

The second is columns. Real JSON rarely has the same keys in every object, and taking the columns from the first row alone silently drops everything the later ones added. This takes the union of keys across every row, so a field that only some records carry still gets a column.

Nested objects are flattened into dotted column names, so a contact object with an email inside becomes a contact.email column. Arrays are joined into a single cell by default, because expanding them into columns produces a different shape for every row and a table nobody can read — though you can switch to keeping them as JSON if you would rather.

Line endings are CRLF and the separator can be a comma, a semicolon or a tab, which covers the locales where a comma is the decimal mark and Excel expects a semicolon instead.

How to use the JSON to CSV

  1. Paste your JSON

    An array of objects is the usual case. A single object works too and becomes one row.

  2. Choose the separator

    Comma is standard. Pick semicolon if your version of Excel expects it, or tab for pasting straight into a spreadsheet.

  3. Check the columns

    The row and column counts are shown underneath, and nested fields appear as dotted names so you can see the structure was preserved.

  4. Download the file

    Download it as a .csv ready to open in Excel, Numbers or Google Sheets, or copy the text directly.

Frequently asked questions

What JSON shape does this need?
An array of objects, which is what an API listing endpoint returns. A single object is accepted and becomes one row. An array of plain values cannot become a table, and the tool says so rather than producing something misleading.
How are nested objects handled?
They are flattened into dotted column names, so an object with a contact containing an email produces a contact.email column. This keeps every value while staying readable in a spreadsheet.
What happens to arrays inside my data?
By default they are joined into a single cell separated by semicolons, which keeps the table one shape. You can switch to keeping them as JSON text if you need the structure preserved exactly.
Why does my CSV open with shifted columns in Excel?
Almost always a quoting problem in whatever produced the file, or the wrong separator for your locale. This tool quotes any field containing the separator, a quote or a newline, and offers semicolon and tab separators for locales where Excel expects them.
Do all rows need the same fields?
No. Columns are collected from every row, so a field present in only some records still gets a column, and rows without it get an empty cell. Taking columns from the first row alone would silently lose data.
Is my data uploaded?
No. The conversion runs in your browser as you type. That matters because the JSON people convert is usually a real API response containing real customer records.