What This Tool Does
The JSON to CSV Converter turns a JSON file into a real CSV spreadsheet you can open in Excel, Google Sheets, or any data pipeline that expects tabular input. It parses your JSON, flattens nested objects into flat column names, lets you decide how arrays should be represented, and shows you a live preview before you download anything.
How to Convert JSON to CSV
- Upload: Drop one or more .json files onto the drop zone, or click browse files.
- Check for errors: If a file isn't valid JSON, a plain-language error naming the problem and its line and column appears instead of a preview.
- Choose the record source: If your JSON is an object wrapping a list (like
{ "data": [...] }), the tool detects it automatically - or pick a different array from the Records dropdown. - Set flattening and array handling: Turn nested-object flattening on or off, pick a key separator, and decide whether arrays should be joined into one cell, expanded into indexed columns, or expanded into separate rows.
- Pick your fields: Use the field checklist to include or exclude columns - handy for dropping fields you don't need before export.
- Review the preview: Scroll the data preview to confirm the columns and values look right.
- Convert and download: Click Convert, then download each CSV individually or as a ZIP.
Flattening Nested Objects
Real-world JSON is rarely flat - a "user" object might contain a nested "address" object with its own "city" and "zip" fields. With flattening turned on, those become their own columns, named with your chosen separator: address.city, address.zip, and so on. Turn flattening off and nested objects are instead written as a single JSON string in one cell, which is useful if a downstream tool expects the raw structure preserved.
Array Handling Options
Arrays don't map to a spreadsheet cell as cleanly as objects do, so the tool gives you three ways to handle them. Join values in one cell concatenates array items with a semicolon, keeping one row per JSON record - good for short tag lists. Expand into columns turns an array like tags: ["a", "b"] into tags.0 and tags.1 columns, useful when arrays have a consistent, small length. Expand into rows duplicates every other field and gives each array item its own row - the standard approach for turning a record with a line-item array (like an order's products) into a proper table.
Selectable Fields and Detected Record Lists
Once a file is parsed, every flattened column appears in a checklist above the preview - uncheck anything you don't want in the exported CSV, or use Select all / Select none to start from either end. If your JSON is a single object with one or more array-valued properties (a common API response shape like { "results": [...], "page": 1 }), the tool automatically offers that array as the record source instead of treating the whole object as one row.
JSON Validation
Invalid JSON is caught before anything else runs. Instead of a raw JSON.parse error, you get a message that names the problem and points to the exact line and column, so you know where to look in your source file.
Batch Conversion
Drop multiple files at once. Each gets its own row showing its row and field counts. Download files individually as they finish, or grab everything at once as a ZIP.
Privacy & Security
Your JSON file never leaves your device. Parsing, flattening, and the CSV file itself are all generated entirely inside your browser - no files are uploaded to any server, no account is needed, and there are no usage limits.
Frequently Asked Questions
Can I convert a JSON file that's just an array of objects?
Yes - that's the most common case. Each object in the array becomes one row, and its keys become columns automatically.
What if my JSON is a single object, not an array?
It's converted into a single-row CSV with one column per (flattened) key, unless the object contains an array-valued property the tool detects and offers as the record source instead.
Will deeply nested data work?
Yes. Flattening recurses through nested objects at any depth, joining each level with your chosen separator, so a field three levels deep becomes something like shipping.address.zip.
Is there a row or file size limit?
No artificial limit on file size - the practical limit is your device's memory. Very large results are capped at 20,000 rows and 200 columns to keep the browser responsive, with a warning shown if either limit is reached.
Can I convert multiple JSON files at once?
Yes. Drop as many files as you like, convert them into separate CSV files, and download them individually or as a ZIP.