JSON to CSV Converter
Turn an array of JSON objects into spreadsheet-ready CSV rows.
Short answer: Paste a JSON array of objects — or a single object — and get a clean CSV instantly, entirely in your browser with nothing uploaded. Nested objects are flattened into dot-notated columns, commas and quotes inside your data are escaped correctly, and you can copy the result or download it as a .csv file ready for Excel or Google Sheets.
Last updated: October 13, 2026
Runs entirely in your browser — nothing you paste is uploaded or stored.
How it works
Paste a JSON array of objects and the converter builds a CSV table from it. It collects every key used by any object into a header row, flattens nested objects into dotted column names such as address.city, and quotes every cell so commas and quotes inside your data cannot break the columns.
- Paste a JSON array — a three-row sample is already loaded.
- The CSV appears instantly and updates as you edit.
- Copy the output or download it as a
.csvfile for Excel, Sheets, or any database import.
A worked example
The sample input lists three people with scores. The converter produces:
Open that file in a spreadsheet and you get a clean two-column table with headers — no manual cleanup needed.
Frequently asked questions
What shape of JSON does this accept?
An array of objects, like [{"name":"Ada"},{"name":"Grace"}]. Nested objects are flattened into dotted columns, and arrays inside objects are kept as compact JSON text in the cell.
What happens when objects have different keys?
The header row is the union of every key found in any object. Objects missing a key simply get a blank cell in that column, so no data is dropped.
How are commas and quotes in my data handled?
Every cell is wrapped in double quotes, and any quote inside the data is doubled — the standard CSV escaping that Excel and Google Sheets expect.
Is my data uploaded for conversion?
No. Parsing and conversion run entirely in your browser. Even the downloaded file is generated on your device.
Can I convert CSV back to JSON?
Not with this tool — it converts in one direction, JSON to CSV. Paste the CSV into a spreadsheet if you need to inspect or edit it.
How are nested objects handled?
They are flattened with dot-separated column names. {"user": {"city": "Trenton"}} becomes a column called "user.city", so no nested data is lost — it is just addressed with a longer name.
What happens to arrays inside the JSON?
Array elements become numbered columns: {"tags": ["a", "b"]} yields "tags.0" and "tags.1". The longest array in the dataset decides how many such columns exist.
Why do some cells come out empty?
Because records have different keys. The converter collects every key seen across all records so columns stay aligned, and leaves a cell blank where a particular record has no value for that key.
Will the CSV open correctly in Excel?
Yes. Values containing commas, quotes, or line breaks are quoted per the RFC 4180 standard, which Excel understands. For non-English text, import via Data → From Text/CSV and confirm UTF-8 encoding.
How nested data becomes a flat table
CSV has no concept of nesting — it is rows and columns, full stop. So a JSON array of objects converts naturally (each object is a row, each key a column), but nested structures need flattening rules. This converter applies the standard ones: a nested object becomes dot-separated column names, so {"user": {"address": {"city": "Trenton"}}} yields a column called user.address.city. Arrays become numbered columns — {"items": ["a", "b"]} yields items.0 and items.1 — which keeps every element addressable instead of cramming them into one cell.
Real-world JSON is rarely uniform: one record has a phone field and the next does not. The converter handles this by collecting every key seen across all records and leaving empty cells where a record lacks a value — no data is silently dropped, and the columns stay aligned. Values that themselves contain commas, quotes, or line breaks are wrapped in double quotes following the RFC 4180 convention, with inner quotes doubled, so a name like O'Brien, Jr. survives the round trip intact.
becomes columns: name, tags.0, tags.1 — with Bo's tag cells left empty.
Opening the result in a spreadsheet is usually the next step. In Excel, use Data → From Text/CSV rather than double-clicking when the data contains commas or non-English characters, and confirm UTF-8 encoding on import so names and symbols render correctly. If you plan to convert back later, keep the generated CSV unedited: the dot-and-number column naming is what makes the structure recoverable.
How do I convert nested JSON to CSV?
Real-world JSON is rarely flat. When an object contains another object, like an address inside a customer record, this converter flattens it into dot-notated columns — customer.name, customer.address.city — so every value lands in its own spreadsheet column. Arrays inside the JSON are joined into a single cell so no data is lost.
If your data is deeply nested, skim the flattened headers before downloading to confirm the structure looks right. For extremely tangled payloads, converting in two passes — first isolating the array you care about — keeps the output clean.
Can I convert a JSON API response to CSV?
Yes — API responses are the most common input here. Most APIs return an array of objects, which maps naturally to CSV rows and columns: each object becomes a row, each key becomes a header. Paste the response body directly; if the API wraps results in an envelope like {"data": [...]}, paste the inner array.
Because everything runs locally, API keys and private records in the payload never leave your machine — a meaningful advantage over upload-based converters when you’re handling customer or internal data.
Will the CSV open correctly in Excel and Google Sheets?
Yes. Fields containing commas, quotes, or line breaks are wrapped in quotes and inner quotes are doubled, following the CSV standard both programs expect. In Excel, use Data → From Text/CSV and confirm UTF-8 encoding if non-English text looks garbled. In Google Sheets, File → Import → Upload handles the file directly.
One watch-out: spreadsheets sometimes reinterpret date-looking text as dates. Check date columns after import and set the column format to Text if the values shifted.