JSON to CSV Converter
Turn JSON into a spreadsheet-ready CSV, or CSV back into JSON: nested objects flatten to dot-notation columns, fields escape per RFC 4180, delimiters, header rows and Excel-safe UTF-8 BOM included, all in your browser.
Your converted output will appear here. Paste input and press Convert.
Privacy: conversion runs locally in your browser. Nothing you paste is uploaded or logged.
More developer tools:
How this calculator works
JSON and CSV are the two shapes tabular data travels in: APIs hand you JSON, spreadsheets and databases want CSV. Converting by hand means flattening nested objects, quoting fields that contain commas, and guessing at delimiters, and every one of those steps is a chance to corrupt a row. This tool does the conversion both ways, entirely in your browser. Paste a JSON array of objects and get a CSV; paste CSV and get JSON back.
JSON to CSV works like this. Each object becomes one row and each key becomes a column, in first-seen order. Nested objects flatten with dot notation, so {"user": {"name": "Ana", "city": "Austin"}} becomes the columns user.name and user.city, which is how spreadsheet users actually want nested API data. Arrays inside a record are joined into one cell with "; " so no data is lost, and wrapped API responses are handled too: if you paste {"data": [...], "meta": {...}}, the tool finds the array under data and converts its records. Fields are escaped per RFC 4180: any field containing the delimiter, a double quote or a line break is wrapped in double quotes, and every literal quote inside is doubled, so the output opens cleanly in Excel, Google Sheets, LibreOffice and pandas. Worked example: [{"id": 1, "name": "Ana Torres", "note": "She said "hi""}] becomes id,name,note on the header row and 1,Ana Torres,"She said ""hi""" on the data row.
Three details decide whether a CSV survives Excel. First, the delimiter: comma is standard, but European locales and some exports use semicolons, and tab-separated values suit pasting into sheets; pick the one your target expects, or let Auto-detect read it from the header row. Second, the UTF-8 BOM: Excel on Windows historically opens CSV as Windows-1252 and mangles accented characters, so the download includes a UTF-8 byte-order mark by default, which tells Excel the file is UTF-8 and keeps é, ñ and Chinese characters intact. Third, line endings: the output uses plain LF, which Excel, Sheets and pandas all accept. Going the other way, CSV to JSON parses quoted fields properly, so a field like "Austin, TX" stays one value, detects the delimiter from the header row, and optionally infers numbers and booleans so age 30 arrives as 30, not "30". Nothing you paste leaves your machine in either direction, which is why the tool is safe for API responses that contain real customer rows.
