Tech

JSON to CSV converter

Paste JSON (an array of objects, a single object or a list of values) and get CSV ready for Excel or Google Sheets. It flattens nested objects with dot notation, escapes quotes per RFC 4180 and lets you download the file instantly.

Instant🔒In your browserNo signup
Live
CSV

How the conversion works

JSON and CSV model data in very different ways: JSON is hierarchical and nested, CSV is a flat table of rows and columns. This converter bridges the two. Each object in the array becomes a row, and the columns are built as the union of every key found across all rows, keeping the order in which each key first appears. If a row is missing a key, that cell stays empty instead of shifting the table. The first line of the CSV is always the header with the column names. Everything runs locally: you paste the JSON, the CSV appears instantly, and one click downloads the file — nothing is uploaded anywhere. It is the fastest path from an API response to a spreadsheet you can actually read, filter and share.

Nested objects and arrays

When an object contains another object, the converter flattens them using dot notation: the city property inside address becomes the column address.city. Nested data stays readable and nothing gets dropped. Nested arrays have no natural single-column shape, so they are serialized as a JSON string inside the cell, with proper escaping. If you paste a single object instead of an array, it is treated as a one-row table; if you paste a list of plain values, they are exported under a column named value.

Comma or semicolon: which delimiter to pick

The detail that ruins the most Excel imports is the locale. Excel in Spanish, German, French and many other European locales uses the comma as the decimal separator (3,14), so it expects a semicolon between columns — feed it a comma-separated file and everything lands in a single column. US and UK Excel, Google Sheets and virtually every developer tool expect the standard comma. That is what the selector is for: keep the comma for Sheets, scripts and databases, and switch to semicolon when the target is Excel in a comma-decimal locale. The download also includes a UTF-8 BOM so Excel renders accented characters correctly.

What converting JSON to CSV is for

  • Opening an API response in Excel or Google Sheets to inspect it as a table.
  • Data analysis: most tools (pandas, R, Power BI) import CSV natively.
  • API migrations: exporting records from one system to import into another.
  • Building quick reports out of JSON logs or exports.
  • Loading data into databases or CRMs that only accept CSV files.

Reference: CSV escaping rules (RFC 4180)

CaseOriginal valueHow it looks in the CSV
Plain fieldhellohello — unchanged
Contains the delimiterhello, world"hello, world" — wrapped in double quotes
Contains double quotesshe said "hi""she said ""hi""" — inner quotes doubled
Contains a line breakline 1 ↵ line 2"line 1 ↵ line 2" — quoted, the break is preserved
Comma vs semicolonlocale-dependentExcel in comma-decimal locales (Spanish, German, French) expects ;; US/UK Excel, Sheets and dev tools expect ,

These rules guarantee that any standards-compliant CSV reader reconstructs the original values exactly — no shifted columns, no broken quotes.

FAQ

What kinds of JSON does the converter accept?

The main case is an array of objects (each object = one row). A single object becomes a one-row table, and an array of plain values is exported under a value column.

How are nested objects handled?

They are flattened with dot notation: the city property inside address becomes the address.city column. No data is lost.

What about arrays inside an object?

They are serialized as a JSON string inside the cell, properly escaped, since an array has no natural single-column shape.

When should I pick semicolon instead of comma?

When the target is Excel in a comma-decimal locale (Spanish, German, French): those versions expect ; between columns. For Sheets and dev tools, keep the comma.

Why do some values end up wrapped in double quotes?

That is RFC 4180 escaping: values containing the delimiter, quotes or line breaks are wrapped in double quotes, with inner quotes doubled.

What if rows have different keys?

Columns are the union of all keys, in order of first appearance. Missing keys just leave that cell empty.

What happens if my JSON is invalid?

You get a clear error describing the problem. Check for trailing commas, single quotes instead of double quotes, and unclosed braces.

Is my data uploaded to a server?

No, both the conversion and the download run 100% in your browser. Your data never leaves your device.

Was this generator useful?