JSON to CSV Converter
Convert JSON arrays or objects to CSV in your browser. Flattens nested keys to dot notation, handles quoting per RFC 4180. Free, private, no upload.
About this tool
Paste a JSON array of objects (an API response, a database export, a log dump) and get a spreadsheet-ready CSV back instantly. Nested objects are flattened to dot-notation columns like `user.address.city`, and arrays inside rows are kept as JSON strings so no data is silently dropped.
Everything runs client-side: your JSON is parsed and re-serialized by JavaScript in this tab, which makes it safe for data you would not want to paste into a random upload form.
Common uses
- Turn a REST API response into a CSV you can open in Excel or Google Sheets.
- Convert a MongoDB or Firestore JSON export into a flat file for a BI tool.
- Hand a non-technical teammate a spreadsheet instead of a JSON blob.
Automate via API
The same conversion is available as a REST endpoint for scripts, pipelines, and backends:
curl -X POST https://payloadly.com/api/v1/tools/json-to-csv \ -H "Content-Type: text/plain" \ -H "X-Api-Key: YOUR_API_KEY" \ --data-binary @input.json
Worked examples
Real payloads from tools people use daily, with the exact output this converter produces. Every example runs in your browser, so you can load one and adapt it to your own data.
Convert a Stripe webhook to CSV
Stripe event payloads bury the useful fields under data.object, so the flattener turns them into readable dot-notation columns like data.object.amount.
{
"id": "evt_1PabcXYZ",
"type": "charge.succeeded",
"created": 1716242622,
"data": {
"object": {
"id": "ch_3PabcXYZ",
"amount": 2000,
"currency": "usd",
"customer": "cus_QabcXYZ",
"status": "succeeded"
}
}
}id,type,created,data.object.id,data.object.amount,data.object.currency,data.object.customer,data.object.status evt_1PabcXYZ,charge.succeeded,1716242622,ch_3PabcXYZ,2000,usd,cus_QabcXYZ,succeeded
Convert a Shopify order webhook to CSV
Shopify wraps collections under a key such as orders; the tool unwraps a single top-level array automatically so you get one row per order.
{
"orders": [
{ "id": 4567, "name": "#1001", "email": "ada@example.com", "total_price": "49.90", "financial_status": "paid" },
{ "id": 4568, "name": "#1002", "email": "grace@example.com", "total_price": "18.00", "financial_status": "pending" }
]
}id,name,email,total_price,financial_status 4567,#1001,ada@example.com,49.90,paid 4568,#1002,grace@example.com,18.00,pending
Convert a Notion API response to CSV
Notion returns matching pages under results, each with a nested properties object that becomes properties.* columns.
{
"results": [
{ "id": "a1b2", "properties": { "Name": "Launch plan", "Status": "In progress" } },
{ "id": "c3d4", "properties": { "Name": "Q3 roadmap", "Status": "Done" } }
]
}id,properties.Name,properties.Status a1b2,Launch plan,In progress c3d4,Q3 roadmap,Done
Convert HubSpot contacts to CSV
HubSpot nests fields under a properties object; flattening produces one column per contact property.
{
"results": [
{ "id": "701", "properties": { "email": "grace@example.com", "firstname": "Grace", "lastname": "Hopper" } },
{ "id": "702", "properties": { "email": "ada@example.com", "firstname": "Ada", "lastname": "Lovelace" } }
]
}id,properties.email,properties.firstname,properties.lastname 701,grace@example.com,Grace,Hopper 702,ada@example.com,Ada,Lovelace
JSON notes
JSON (JavaScript Object Notation) is the standard interchange format for web APIs, config files, and log pipelines. It is strict: keys must be double-quoted, trailing commas are invalid, and comments are not allowed.
- JSON does not support comments; they are stripped or rejected by parsers.
- Trailing commas after the last element are invalid JSON.
- Integers beyond 2^53 lose precision in JavaScript-based parsers.
CSV notes
CSV (comma-separated values) is the lingua franca of spreadsheets, analytics exports, and bulk imports. It is tabular and flat: every row shares one set of columns, so nested structures must be flattened.
- Fields containing commas, quotes, or newlines must be quoted per RFC 4180.
- CSV has no type system; numbers and booleans are inferred on import.
- Nested objects are flattened to dot-notation columns (e.g. `user.name`).
Frequently asked questions
Is my data uploaded to a server?
No. This tool runs entirely in your browser using JavaScript, and there are no ads on the page. Nothing you paste or drop here is uploaded, logged, or stored, and you can verify that yourself: open your browser's developer tools and watch the Network tab while you convert (no requests leave the page), or disconnect from the internet after the page loads and keep working.
What should I watch out for when converting JSON to CSV?
JSON does not support comments; they are stripped or rejected by parsers. Trailing commas after the last element are invalid JSON. Fields containing commas, quotes, or newlines must be quoted per RFC 4180. CSV has no type system; numbers and booleans are inferred on import.
How are nested objects handled?
Nested objects become dot-notation columns: {"user": {"name": "Ada"}} produces a column called user.name. Arrays inside a row are serialized as JSON strings so the row stays rectangular without losing data.
Why does Excel show broken characters like é when I open a CSV?
Excel only detects UTF-8 on double-click when the file starts with a byte order mark (BOM). CSV files downloaded from this tool include the BOM automatically, so accents, emoji, and non-Latin scripts open correctly. If your regional Excel expects semicolon-separated files, set the delimiter option to semicolon before converting.
Is there a size limit or a fee?
The browser tool is free with no signup and comfortably handles files up to tens of megabytes (limited by your device's memory). For automated or bulk processing inside your own scripts and pipelines, use the paid REST API.
Related tools
Convert CSV to a JSON array of objects in your browser. Header row becomes keys, numbers and booleans are typed automatically. Free and private.
Flatten nested JSON to single-level dot-notation keys in your browser. Ideal for CSV prep, diffing, and key inventories. Free, no upload.
Format and beautify JSON in your browser with 2-space, 4-space, or tab indentation. Errors reported with line and column. Free, no upload.
Minify JSON in your browser: strip all whitespace for smaller payloads and env vars. Shows size savings. Free, private, no upload.