JSON to CSV Converter

Last updated: October 1, 2026

✅ Free Forever 🔒 Files Stay on Your Device ⚡ No Signup Required 🌐 Works in Any Browser

Drop your file here

or click to browse

Accepted: .json,application/json

What is JSON to CSV Converter?

Turn a JSON file into a CSV you can open in a spreadsheet. Nested objects are flattened, you choose how arrays are handled, and the conversion runs in your browser so an API response full of customer records is never uploaded anywhere. It reports what it found — how many rows, how many fields, and whether the top level was an array or an object — before you download.

Nested objects become dotted columns

JSON nests; CSV does not. With flattening on, which is the default, a structure like user.address.city becomes a column of exactly that name. Every level is preserved in the column header, so nothing is lost and you can see where each value came from. Turn flattening off only when your JSON is already flat and you want the keys untouched.

Array handling is the setting that matters

This is where most converters quietly make the choice for you, and it is the one that decides whether the CSV is useful.

Stringify puts the whole array into a single cell as text. A record with three tags becomes one cell containing all three. That keeps the row count matching the record count, which is right when the array is incidental — a list of labels you just want to see.

Expand produces one row per array item instead, repeating the rest of the record on each. Three tags become three rows. That is what you want whenever you intend to count, filter or pivot by the thing inside the array — which, for most analysis, is the whole reason you exported it. Bear in mind it multiplies your row count, so a large file with long arrays gets much larger.

If you are not sure: stringify to eyeball the data, expand to analyse it.

Records with different fields

Real API output is rarely uniform — some records carry optional fields, others do not. The header row is built from every key found across all records, not just the first one, so a field that appears in only some records still gets a column, with blanks where it is absent. Converters that read only the first record silently drop everything the others added, which is a bad way to lose data.

Delimiters and headers

Comma is the default. Choose semicolon if the CSV will be opened in Excel on a European locale, where a comma-separated file otherwise arrives as one mangled column, and tab for import tools that expect it. The header row can be turned off for systems that want raw data with no column names.

Nothing is uploaded

The file is read and converted in the page. API exports tend to contain customer records, order histories and internal identifiers, so keeping them on your own machine is the sensible default rather than a nicety.

Related tools

CSV to JSON Converter goes back the other way. CSV to Excel Converter turns the result into a formatted workbook, and Excel to CSV Converter handles the reverse trip when your data starts in a spreadsheet.

How to Use JSON to CSV Converter

  1. Upload JSON

    Upload a .json file containing an array of objects or a single object.

  2. Configure Options

    Choose whether to flatten nested objects, how to handle arrays, and your delimiter.

  3. Download CSV

    Click Convert to CSV to get a structured spreadsheet file.

Features

Nested Flattening

Converts nested objects to flat CSV using dot notation (e.g. user.address.city).

Smart Quoting

Automatically quotes fields containing delimiters, newlines, or quote characters.

Flexible Options

Choose delimiter, array handling, and whether to include header rows.

Frequently Asked Questions

How are nested JSON objects handled?

They are flattened into dotted column names by default, so user.address.city becomes a column of that name. Every level is preserved in the header, so nothing is lost and you can see where each value came from.

What is the difference between stringify and expand for arrays?

Stringify puts the whole array in one cell, keeping one row per record. Expand creates one row per array item, repeating the rest of the record on each. Use stringify to eyeball the data and expand when you want to count, filter or pivot by what is inside the array.

What happens if my records do not all have the same fields?

The header row is built from every key found across all records, not just the first, so a field that appears in only some records still gets a column with blanks elsewhere. Nothing is dropped.

Which delimiter should I choose?

Comma for most purposes. Semicolon if the file will be opened in Excel on a European locale, where a comma-separated file arrives as one mangled column. Tab for import tools that expect tab-separated values.

Is my JSON uploaded to a server?

No. The file is read and converted in your browser, which matters because API exports usually contain customer records, order histories or internal identifiers.

Why did my row count grow after converting?

You most likely had array handling set to Expand, which creates a row per array item. A record with five items becomes five rows. Switch to Stringify if you need the row count to match the record count.