Browser-local data converter

JSON to CSV Converter

Turn an array of JSON records into a flat comma-separated table without uploading your data.

JSON to CSV

Processed in this browser
Paste JSON
Ready to copy

How to use it

A short path from source data to a usable local result.

01

Add JSON

Paste an array of records, or one object that holds a single array.

02

Run the conversion

Nested keys are flattened with dotted names and arrays stay inside one cell.

03

Take the CSV

Copy the table or download it as converted.csv.

Common questions

Details that matter when moving data between formats.

Does this upload my JSON?

No. The JSON is parsed in this tab and is never sent to a server.

What happens to nested objects?

Nested keys become dotted column names such as customer.city, so the table stays flat.

How are arrays handled?

An array inside a record is written as JSON text inside a single quoted cell.

What if the array is empty?

The page reports that there are no rows to write instead of producing an empty file.

Related tools

Other focused converters that are already available.

When is JSON to CSV useful?

JSON to CSV is the step you take when an API response, a log export, or a database dump has to become something a spreadsheet can open. Records in JSON are usually nested: an order carries a customer object, a line item carries a price object, and a list of tags sits beside both. A spreadsheet has no concept of nesting, so a flat table is the shared format that survives the trip. This page converts inside the browser tab, which matters when the JSON holds customer names, addresses, or anything else you would rather not upload to a stranger. Nothing is posted to a server and nothing is kept after the tab closes.

The rules are simple and predictable. Every record becomes one row and every leaf value becomes one cell. A nested key is joined with a dot, so a record with a customer object holding a city field produces a column named customer.city. An array stays in one cell as JSON text, because spreading it across columns would silently change the number of fields per row. Columns are collected from every record in order of first appearance, so a key that only appears in the third record still gets a column and the earlier rows leave it empty. Values containing a comma, a quote, or a line break are wrapped in double quotes with embedded quotes doubled, which is the form spreadsheets expect.

Watch for the cases that make a flat table lie. Deeply nested structures produce very long column names and many empty cells, which is a sign that the data wants a relational shape rather than a spreadsheet. Mixed types under one key, such as a number in one record and text in another, all arrive as text. Dates stay exactly as written, so a timestamp in ISO form remains a string until the spreadsheet parses it. A record that is not an object has no column names, and the page reports which record broke instead of skipping it quietly. The page does not validate your data and does not guess a schema.