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 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 convert JSON to CSV

  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.

Frequently asked questions

Is this JSON to CSV converter free?

Yes — 100% free with no signup and no usage cap. Convert as many JSON arrays as you like and use the CSV in any project.

Does it run in my browser?

Yes. Conversion runs entirely in your browser, so your JSON never touches a server. It also works offline after the page loads.

What if my rows have different keys?

Columns are the union of every key across all rows in first-seen order. Keys missing from a row become empty cells, so no field is ever dropped.

How do I convert CSV back to JSON?

Use the reverse CSV to JSON converter, or the bidirectional CSV ↔ JSON tool that does both directions.

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

Need a different tool?

Browse all 89 free, in-browser tools — or tell us what we should build next.

Browse all tools