JSON to CSV Converter
Convert JSON to CSV online. Flatten nested objects into dotted columns, control how arrays expand, and download clean, Excel-ready CSV — all in your browser.
What was produced
Inferred columns (blue = from flattening)
Import from File
Drag & drop a file here
or
Supports .txt, .csv, .log, .json and other text files
All conversion happens locally in your browser. No data is sent to any server. Your JSON stays completely private.
What It Does
This tool turns JSON into a flat CSV table you can open in a spreadsheet or import into a database. The natural shape for CSV is an array of objects: each object becomes a row, and each key becomes a column. Real-world JSON is rarely that tidy, though — it nests objects inside objects and buries lists inside fields. So the converter flattens nested objects into dotted column names (order.customer.email) and lets you decide how arrays should be unpacked. It also inspects the result and tells you what it produced: how many rows and columns, which columns were created by flattening, how your arrays were expanded, and whether some rows were missing fields. The conversion is strict about correctness — values containing commas, quotes, or newlines are quoted and escaped per the CSV standard so your columns never drift.
When to Use It
- An API returned a JSON array and you need it as a spreadsheet to share with a non-technical colleague or drop into Excel.
- You're importing data into a database or BI tool that expects CSV and you want nested fields flattened into clean, named columns.
- You exported records from one system as JSON and the next system only accepts CSV or TSV.
- You want to eyeball a large JSON array as a table to spot missing fields, inconsistent keys, or unexpected array values.
Worked Examples
[{"name":"Ada","age":36},{"name":"Alan","age":41}]
The simplest case: an array of flat objects. Each object becomes a row and the keys (name, age) become the two columns — a clean 2-row CSV with a header.
[{"id":1,"user":{"name":"Ada","city":"London"}},{"id":2,"user":{"name":"Alan"}}]
Nested objects are flattened to dotted columns: id, user.name, user.city. The second row has no city, so that cell is left empty and the dataset is flagged as ragged.
[{"name":"Ada","tags":["math","logic"]},{"name":"Alan","tags":["code"]}]
Shows how arrays are expanded. With 'Index columns' the tags list becomes tags.0 and tags.1; switch to 'Join values' to get a single tags cell like "math;logic" instead.
Features
How to Use
1. Paste or upload a JSON array of objects in the input area. 2. Choose whether to flatten nested objects and how arrays should be expanded. 3. Pick a delimiter and whether to include a header row. 4. The CSV appears instantly, with a panel describing the inferred columns and any warnings. 5. Click Copy or Download to save the result.
Common Mistakes
- Feeding in a single object and expecting many rows. One JSON object is one row. To get multiple rows you need an array of objects — the tool will still convert a lone object, but it becomes a single-row CSV.
- Assuming every object has the same keys. Optional or inconsistent fields produce empty cells; the tool flags this as 'ragged' so you can decide whether that's expected before importing.
- Opening comma-delimited CSV in a European locale. Where the comma is the decimal separator, a spreadsheet may push everything into one column — switch the delimiter to semicolon or tab instead.
- Forgetting that arrays of objects inside a row can't become tidy columns. A list of objects is expanded by index (items.0.price) or kept as JSON; if you need those as their own rows, extract that array and convert it separately.