Convert JSON to CSV Online
Convert JSON files to CSV format directly in your browser. No upload required — your data never leaves your device.
About converting JSON to CSV
JSON to CSV is the usual route from an API response to a spreadsheet. Most exports arrive as a JSON array of objects: a page of Stripe charges, a GitHub issues dump, or a mongoexport run with --jsonArray. Each object becomes one CSV row and each key becomes a column header. The header is the union of keys across all records, in the order they first appear, so a key that only some records carry still gets its own column.
The main trap is the wrapper object. Many APIs return {"data": [...], "next": "..."} rather than a bare array, and AWS CloudTrail files wrap everything in {"Records": [...]}. A wrapped file converts to a single row with one column per top-level key, not one row per record. Save only the inner array, or open the file in the SQL Query tool, run SELECT UNNEST(data, recursive := true) against the table named after your file, and export that result as CSV.
CSV cells hold flat text, so nested values are written as compact JSON inside a quoted field. An array like ["red","blue"] stays ["red","blue"], and an address object stays {"city":"Leeds","zip":"LS1"}. That keeps the data, but a spreadsheet user sees raw JSON. Run Flatten JSON first to split one level of objects into columns such as address_city, or select the nested fields you need with SQL before converting.
Not sure which format you need? Read the JSON vs CSV comparison.
Worked example
A small sample file, converted with the default settings.
Input (JSON)
[
{
"id": 4101,
"title": "Login fails on Safari 17",
"state": "open",
"comments": 3,
"created": "2026-03-02",
"assignee": "maria"
},
{
"id": 4102,
"title": "Export slow, then times out",
"state": "closed",
"comments": 8,
"created": "2026-03-03",
"assignee": null
},
{
"id": 4103,
"title": "Add dark mode",
"state": "open",
"comments": 12,
"created": "2026-03-05",
"assignee": "dev-team"
},
{
"id": 4104,
"title": "Crash on empty file",
"state": "closed",
"comments": 0,
"created": "2026-03-06",
"assignee": "li.wei"
}
]Output (CSV)
id,title,state,comments,created,assignee
4101,Login fails on Safari 17,open,3,2026-03-02,maria
4102,"Export slow, then times out",closed,8,2026-03-03,
4103,Add dark mode,open,12,2026-03-05,dev-team
4104,Crash on empty file,closed,0,2026-03-06,li.weiWhat changes when you convert JSON to CSV
- Each key becomes a column header. The id, title, state, comments, created and assignee keys in the example become the six CSV columns.
- The title "Export slow, then times out" contains a comma, so it is wrapped in double quotes. Any double quote inside a value is doubled.
- JSON null and keys missing from a record both become empty fields. Issue 4102 has no assignee, so its row ends with a bare comma.
- Numbers and some timestamps are rewritten from their parsed value: 249.50 becomes 249.5, and 2026-03-02T09:14:00Z becomes 2026-03-02 09:14:00. Values with milliseconds are copied as they are.
- A key that holds a number in some records and a string in others is kept as raw JSON text, so its string values keep their quote marks.
- Nested objects and arrays come out as compact JSON text in one cell. Flatten them first if you want separate columns.
Your file is processed locally in your browser and is never uploaded. The free limit is 50 MB per file; larger files work if your device has the memory for them.
Frequently Asked Questions
Why does my CSV have only one row?
Your JSON is an object that wraps the records, such as {"results": [...]} or {"items": [...], "total": 250}. The converter turns each top-level object into a row, so a wrapper gives you one row. Extract the inner array into its own file, or unnest it with the SQL Query tool and export the result as CSV.
Why do some cells contain JSON like {"city":"Leeds"}?
That column held a nested object or array, and CSV has no way to nest values, so it is kept as JSON text. Flatten JSON expands one level of objects into separate columns named parent_child. Run it again for deeper levels. Arrays are not expanded by Flatten; use UNNEST in the SQL Query tool to get one row per array element.
Will long numeric IDs survive the conversion?
Integers that fit in 64 bits, up to 9,223,372,036,854,775,807, are held exactly and written to the CSV in full. The risk comes later: Excel shows numbers longer than 15 digits in scientific notation and replaces the trailing digits with zeros when it opens a CSV. Import that column as Text, or keep IDs as strings in the source JSON.
What is CSV format?
CSV (Comma-Separated Values) is a plain-text tabular format supported by virtually every data tool, spreadsheet app, and programming language.
Related Tools
Convert CSV to JSON Online
Convert CSV files to JSON format directly in your browser. No upload required — your data never leaves your device.
CSV Viewer Online
View and inspect CSV files directly in your browser. Browse rows, check column names and data types — no upload required, your data stays on your device.
JSON Viewer Online
View and inspect JSON files directly in your browser. Browse rows, check column names and data types — no upload required, your data stays on your device.
Validate JSON Files Online
Validate JSON file structure in your browser. Check null counts, distinct values, and data types for every column — no upload required.
Deduplicate JSON Files Online
Remove duplicate rows from JSON files instantly in your browser. No upload, no server — 100% private.
Filter CSV Files Online
Filter rows in CSV files by column value, directly in your browser. Your data stays on your device.
Convert JSON to Parquet Online
Convert JSON files to Parquet format directly in your browser. No upload required — your data never leaves your device.
Convert JSON to Excel Online
Convert JSON files to Excel format directly in your browser. No upload required — your data never leaves your device.