Best Free JSON to CSV Converter
Flatten a JSON array of objects into a spreadsheet-ready CSV — free, paste or upload, nothing stored.
How it works
- Provide JSON. Paste a JSON array of objects (or a single object), or upload a .json file.
- Convert. Press Convert — columns are built from the keys across all objects.
- Get CSV. Copy the CSV, or download it ready to open in a spreadsheet.
About this tool
JSON to CSV flattens a JSON array of objects into a spreadsheet-ready CSV. Paste the JSON or upload a .json file, and the tool builds the column headers from the union of every object's keys, so rows with different fields still line up. Nested objects and arrays are written as compact JSON inside their cell rather than being dropped. The result opens straight in Excel, Sheets or Numbers. Everything is parsed in the request and nothing is stored.
What people use it for
- Open an API’s JSON response in a spreadsheet
- Turn exported JSON into a CSV for Excel or Sheets
- Share structured data with non-technical colleagues
- Bulk-review JSON records as rows and columns
Developer API
Automate this tool from your own code. Send a POST request to the endpoint below and get the same result the web tool produces. It is rate-limited per IP and needs no signup — API keys for higher limits are coming.
https://best.free/api/tools/json-to-csv/
| Parameter | Example | Required | Notes |
|---|---|---|---|
text |
[{"name":"Ada","age":36}] |
Yes | A JSON array of objects. |
curl -X POST https://best.free/api/tools/json-to-csv/ \
-H 'Content-Type: application/json' \
-d '{"text": "[{\"name\":\"Ada\",\"age\":36}]"}'
import requests
r = requests.post(
"https://best.free/api/tools/json-to-csv/",
json={"text": "[{\"name\":\"Ada\",\"age\":36}]"},
)
print(r.json())
const r = await fetch("https://best.free/api/tools/json-to-csv/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text: "[{\"name\":\"Ada\",\"age\":36}]" }),
});
const data = await r.json();
console.log(data);
Response: JSON with the CSV text in "csv".
{"ok": true, "csv": "name,age\r\nAda,36\r\n"}