JSON → CSV
Convert JSON to CSV online
Flatten any JSON array of objects into a clean CSV. Choose delimiter, header row, and how to handle nested fields. Free, in-browser, no upload.
Last updated:
[object Object]
[object Object]
[object Object]
Open the JSON → CSV converter
Runs entirely in your browser. No signup, no upload.
Launch converter →Example: JSON → CSV
Input (.json)
[
{ "id": 1, "name": "Alice", "email": "[email protected]", "orders": 3 },
{ "id": 2, "name": "Bob", "email": "[email protected]", "orders": 0 },
{ "id": 3, "name": "Ciaran","email": "[email protected]","orders": 12 }
] Output (.csv)
id,name,email,orders
1,Alice,[email protected],3
2,Bob,[email protected],0
3,Ciaran,[email protected],12 How to convert JSON to CSV manually
Prefer scripting this in a pipeline? Here are the most common CLI and library approaches.
Python with pandas
import pandas as pd, json
pd.read_json('in.json').to_csv('out.csv', index=False) Node.js with papaparse
const Papa = require('papaparse');
const data = require('./in.json');
require('fs').writeFileSync('out.csv', Papa.unparse(data)); jq one-liner (header + rows)
jq -r '(.[0] | keys_unsorted) as $k | $k, map([.[ $k[] ]])[] | @csv' in.json > out.csv Frequently asked questions
What if my JSON has nested objects?
We flatten them with dot notation. `{ "user": { "name": "A", "age": 30 } }` becomes columns `user.name` and `user.age`. You can toggle between dot notation and underscore (`user_name`, `user_age`) in the options.
Excel is opening my CSV with everything in one column. Why?
Excel uses the system locale to guess the delimiter — on European systems it expects `;` not `,`. Either re-export with `;` (use the delimiter selector) or use Excel's Data → From Text/CSV import wizard to pick the delimiter explicitly.
How are null values represented?
By default, `null` becomes an empty field. You can toggle this to output the literal string `null` if your downstream tool distinguishes between empty and null.
Does the output include a BOM?
Optional. A UTF-8 BOM helps Excel correctly detect UTF-8 encoding (fixing garbled accented characters), but can break some Unix pipelines. Toggle the BOM switch based on your target consumer.
What about arrays of arrays or mixed schemas?
Arrays of arrays: each inner array becomes a row; the outer index becomes the first column if you want one. Mixed schemas (different keys per object): we take the union of all keys and emit empty fields where a key is missing.
