Skip to content

JSON to CSV Converter

Paste a JSON array (or an API response that contains one) and get a CSV you can open in Excel or Google Sheets. Nested objects become dotted column names, arrays stay as JSON text in their cell, and nothing leaves your browser.

Loading editor...
Paste or type JSON
Loading editor...
CSV output
Auto-run ON

How to convert JSON to CSV

  1. Paste your JSON into the left panel, upload a .json file, or load it from a URL.
  2. The CSV appears on the right as you type. Pick a delimiter (comma, semicolon, tab, or pipe) if your spreadsheet expects something other than a comma.
  3. Tick Excel BOM if you will open the file in Microsoft Excel and it contains non-ASCII text.
  4. Click Copy or Download .csv.

If the input is not valid JSON, the error bar shows the line and column. Click Fix to repair common problems such as trailing commas or single quotes before converting.

What the output looks like

Input:

[
  { "id": 1, "user": { "name": "Maya", "city": "Pune" }, "tags": ["vip", "new"] },
  { "id": 2, "user": { "name": "Lee, Jordan" } }
]

Output:

id,user.name,user.city,tags
1,Maya,Pune,"[""vip"",""new""]"
2,"Lee, Jordan",,

Columns are the union of every key seen, in first-seen order. Missing values are empty cells.

Limits and notes

  • Files up to 5 MB. Larger exports are better handled with a script; see the Python and Node examples in how to convert JSON to CSV.
  • Arrays of arrays are not tabular. Flatten them first or convert each inner array separately.
  • Numbers are written as JSON prints them. Large integer IDs over 2^53 should already be strings in your JSON; see JSON number precision.
  • Dates stay as the strings they were. Spreadsheets will parse ISO 8601 dates such as 2026-06-23T14:30:00Z automatically.

Frequently Asked Questions

What JSON shape does the converter expect?
An array of objects works best: each object becomes a row and each key a column. A single object becomes one row. If you paste an API envelope such as {"data": [...]}, the first array of objects inside it is used.
How are nested objects handled?
They are flattened with dot notation. {"user": {"name": "Maya"}} becomes a column called user.name. Arrays inside a row are kept as JSON text in a single cell so no data is lost.
Why do some cells have quotes around them?
Any value containing the delimiter, a double quote, or a line break is wrapped in double quotes and inner quotes are doubled, as RFC 4180 requires. Spreadsheets read this correctly.
Excel shows accented characters as garbage. What do I do?
Turn on the Excel BOM option before converting. It prefixes a UTF-8 byte order mark that tells Excel the file is UTF-8. Google Sheets and most tools do not need it.
Is my data uploaded?
No. Parsing and conversion run as JavaScript in your browser tab. You can disconnect from the network after the page loads and the tool keeps working.

Guides that go with this tool

More JSON tools

JSON Viewer (Tree View)

Explore any JSON document as a collapsible tree in your browser. Click a key to copy its JSONPath, click a value to copy it, and page through large arrays without freezing the tab.

JSON Fixer: Repair Invalid JSON

Repair broken JSON in your browser. Strips markdown fences and prose, fixes trailing commas, single quotes, comments, unquoted keys, Python literals and unclosed brackets, and lists every problem it detected.

CSV to JSON Converter

Convert CSV with a header row into a JSON array of objects in your browser. Numbers and booleans are detected, leading-zero codes stay strings, and the delimiter is picked up automatically.

JSON to YAML Converter

Convert JSON to clean YAML in your browser with 2, 3 or 4 space indentation. Strings that a YAML parser would read as numbers, booleans or dates are quoted so they survive the round trip.

YAML to JSON Converter

Convert YAML to JSON in your browser. Multi-document files become an array, anchors and aliases are resolved, and only null, true, false and plain numbers are typed, so yes, NO and dates stay strings.

JSON to XML Converter

Convert JSON to XML in your browser. Choose the root and array item element names, nulls become xsi:nil, keys are sanitised into valid XML names, and text is escaped.

XML to JSON Converter

Convert XML to JSON in your browser. Attributes are kept as @_name keys, repeated tags become arrays, numbers and booleans are detected, and invalid XML reports the line and column.

JSON Compare (Diff)

Compare two JSON documents in your browser and get a structural diff that lists every changed, added, and removed value with its JSONPath. Key order and whitespace are ignored.

JSONPath Query Tester

Test JSONPath expressions against your JSON in the browser. Pick an expression, see the matches as a JSON array with a count, and explore the results in tree view.

JSON Escape / Unescape

Escape text into a JSON string literal, unescape one back to plain text, or stringify a whole JSON document to embed it inside another JSON value or in source code.