JSON to CSV Converter
Convert JSON arrays or objects to CSV format instantly in your browser. Supports custom delimiters, quotes, and large datasets.
Convert JSON arrays or objects to CSV format instantly in your browser. Supports custom delimiters, quotes, and large datasets.
Going from JSON to CSV flattens hierarchical data into a tabular form. JSON's strength is that it can describe nested objects, arrays of varying length, and rich type information; CSV's simpler structure cannot express any of that natively. The conversion therefore involves choices: which fields become columns, how nested objects are flattened (using dot notation like address.city), and what to do with arrays inside records.
This converter handles the common case — an array of flat objects with consistent keys — directly: each object becomes a row, the union of keys across all objects becomes the column set, and missing fields become empty cells. For nested data, the converter offers a flatten option that joins nested keys with dots, producing column headers like user.name, user.email, address.zip.
PapaParse generates the CSV output, applying proper quoting for fields containing commas, newlines, or quote characters. The output is RFC 4180 compliant and opens cleanly in Excel, Google Sheets, and any other CSV-aware tool.
Spreadsheets are still the universal data format for non-developers. Sales teams, finance teams, marketing teams, and most other business functions live in Excel or Google Sheets, and asking them to consume JSON directly is asking them to read a programmer's data format. Converting JSON to CSV bridges from API outputs and database exports into the form business users actually open.
CSV is also the most reliable format for importing into legacy systems. Older CRM imports, accounting software, and analytics tools accept CSV but not JSON. Converting before import is often the only path.
Paste or upload JSON, choose flattening, get CSV.
The converter expects a JSON array of objects. For each object, the union of all keys across the array is computed and used as the column header set. Each object is written as one row, with empty values for keys it does not contain.
When flattening is enabled, nested objects are recursively walked: { user: { name: 'A', email: 'B' } } becomes columns user.name and user.email. Arrays inside objects are stringified (turned back into JSON text) since CSV cannot natively represent multiple values per cell.
PapaParse's unparse function generates the CSV output. Fields containing commas, newlines, or quotes are wrapped in double quotes, with internal quotes escaped by doubling. The output uses CRLF line endings and includes the header row by default.