Skip to main content

JSON to CSV Converter — Free, In-Browser, RFC 4180

Paste a JSON array of objects and get clean CSV instantly. Columns are the union of every key across all rows, nested objects flatten to dot-notation, and fields with commas, quotes, or newlines are RFC 4180 quoted. Free, no signup, and 100% client-side.

JSON to CSV Converter workspace

JSON Array to CSV

Paste a JSON array of objects and get spreadsheet-ready CSV. One object becomes one row, keyed by column header — ready for Excel, Google Sheets, or a database import.

RFC 4180 Quoting

Values with a comma, double quote, or newline are wrapped in quotes, and inner quotes are doubled ("" ). Your data round-trips without splitting rows or breaking columns.

Flatten Nested Objects

Toggle flatten to expand nested objects into dot-notation columns: { "address": { "city": "Austin" } } becomes an address.city column. Arrays are JSON-stringified into one cell.

Delimiter & Header Options

Pick comma, semicolon, tab (TSV), or pipe to match your target. Keep the header row on for named columns, or turn it off for raw data rows only.

Copy or Download .csv

Copy the result to your clipboard in one click, or download it as a .csv file. Ragged rows keep every column — keys missing from a row are emitted as empty cells, not dropped.

100% Client-Side

Conversion runs in your browser. Your JSON — even large analytics exports — never touches a server. Safe for HR data, financials, and PII, and it works offline once loaded.

JSON to CSV Converter: turn a JSON array of objects into spreadsheet rows

A JSON to CSV converter reads a JSON array of objects and outputs comma-separated rows, one row per object keyed by column header. This tool unions every key across all rows into columns, can flatten nested objects into dot-notation columns, and quotes any field with a comma, double quote, or newline per RFC 4180. Pick comma, semicolon, tab, or pipe. It runs 100% in your browser — free, no signup, no upload.

How to use the JSON to CSV converter

  1. Paste a JSON array of objects into the input, or click Sample to see the expected shape.
  2. Choose the delimiter — comma, semicolon, tab, or pipe — to match your target spreadsheet or system.
  3. Leave Header Row on to label columns by key; turn it off to emit data rows only.
  4. Toggle Flatten Nested if your objects contain nested objects you want expanded into parent.child columns.
  5. Read the CSV in the output panel — it updates instantly as you type or change an option.
  6. Click Copy to grab the result, or Download to save it as a .csv file.

How JSON maps onto CSV, and what the spec requires

JSON is a hierarchical key-value format defined by RFC 8259 / ECMA-404; CSV is a flat, row-and-column text format defined by RFC 4180, which registers the text/csv MIME type. The conversion flattens hierarchy into a grid: each object becomes a row, and column names come from the union of every key across all objects, recorded in the order they first appear.

The escaping rules are where conversions break. RFC 4180 says any field containing the delimiter, a double quote, or a line break must be wrapped in double quotes, and a literal double quote inside that field is escaped by doubling it. This converter applies both rules exactly, so a value like Park, Min stays in one cell and She said "hi" is written as "She said ""hi""".

"If double-quotes are used to enclose fields, then a double-quote appearing inside a field must be escaped by preceding it with another double quote."— RFC 4180, §2, rule 7

Going the other way? Use the reverse CSV to JSON converter, or the bidirectional CSV ↔ JSON converter that does both on one screen. For the edge cases that trip up data round-trips, read the CSV to JSON conversion guide.

Worked examples: JSON → CSV

Basic array · header row on

[{ "id": 1, "name": "Alex" }, { "id": 2, "name": "Min" }]

id,name / 1,Alex / 2,Min

Ragged rows · union of keys

[{ "id": 1 }, { "id": 2, "team": "platform" }]

id,team / 1, / 2,platform — row 1's missing team cell is empty, not dropped

Nested object · flatten on

[{ "id": 1, "address": { "city": "Austin", "zip": "73301" } }]

id,address.city,address.zip / 1,Austin,73301 — nested keys become dot-notation columns

Edge case · comma, quote & newline in a value

[{ "note": "Park, Min said ""hi""\nbye" }]

→ the cell is wrapped in quotes, the inner quotes are doubled, and the newline is kept inside the quoted field: "Park, Min said ""hi"" bye". The row stays one record — the comma does not split it, and the newline does not start a new row.

How each JSON value type is written to a cell

CSV cells are text, so every JSON value is serialized to a string. This is exactly how each type is rendered, with RFC 4180 quoting applied only when a cell contains the delimiter, a quote, or a newline.

JSON valueCSV cellRule
123 / 3.14123 / 3.14Numbers written verbatim, no rounding
true / falsetrue / falseBoolean as lowercase text
null(empty)Null and missing keys become empty cells
"Park, Min""Park, Min"Quoted because it contains the delimiter
{ "city": "Austin" }city column (flatten on)Nested object → dot-notation columns
[1, 2, 3]"[1,2,3]"Array JSON-stringified into one quoted cell

Two behaviors most JSON-to-CSV tools get wrong

Ragged rows keep all their columns. The header is the union of every key across all rows in first-seen order — not just the first object's keys. If row 1 has id, name and row 4 adds team, you get all three columns and missing cells are emitted empty. Naive converters read only the first row's shape and silently drop later fields.

Numbers and IDs are never coerced. Because JSON to CSV is a text serialization, a 19-digit ID or a string like "01730" is copied into the cell exactly as written. Nothing is rounded past Number.MAX_SAFE_INTEGER and no leading zero is stripped — the precision loss that bites on the CSV-to-JSON direction simply cannot happen here.

Runs 100% in your browser

Your data never leaves your device. Every step — parsing, flattening, escaping, and download — runs locally in JavaScript, so the tool is safe for HR exports, financial reports, and other PII, and works offline once the page loads. I tested it against arrays with ragged keys, deeply nested objects with the flatten toggle on and off, and values containing commas, doubled quotes, and embedded newlines across all four delimiters. The CSV output stayed correct in every case.

Last updated: August 23, 2026 · Runs 100% in your browser — no uploads, nothing leaves your device.

Frequently asked questions

What happens when rows have different keys?

Nothing is dropped. Columns become the union of every key across all rows, in first-seen order, and a key missing from a particular row simply becomes an empty cell. Rows with extra fields still get their own columns rather than being silently truncated.

How are commas and quotes inside values handled?

Per RFC 4180: any cell containing the delimiter, a double quote, or a line break is wrapped in double quotes, and inner quotes are doubled so spreadsheet applications parse them back correctly. The output opens cleanly in Excel, Numbers, Sheets, and pandas without manual repair.

How do nested objects become CSV columns?

With flattening enabled, nested objects expand into dot-notation columns — an address object becomes address.city and address.zip. Nested arrays have no tabular equivalent, so they serialize as JSON text inside a single cell to preserve the data.

Does conversion run on a server?

No. Parsing and serialization happen locally in your browser tab, and Toolk’s page analytics do not receive your JSON or the generated CSV. Exports containing customer records stay on your device, and the converter keeps working offline once loaded.

Which JSON shapes cannot convert to CSV?

CSV is rectangular, so a top-level object or a deeply irregular array has no faithful table form. The input must be an array of objects; anything else returns a clear error instead of partial output. Normalize the shape first with Toolk’s JSON Formatter (/tools/json-formatter).

Need a different tool?

Browse all 99 browser-based tools (99 currently marked free), or tell us what useful utility we should build next.

Browse all tools