Real nested flattening
API responses are nested: customer contains address, address contains city. We resolve that into dot paths: customer.address.city. Every property gets its own CSV column — perfect for Excel filters or pivot tables.
Nested objects (customer.address.city) are resolved into flat columns. Arrays become JSON strings or get expanded by index. NDJSON input is auto-detected. Stripe, PayPal, Firebase, and MongoDB exports turn into Excel-ready CSV — with no upload.
Drop JSON, pick flattening + delimiter, get Excel-ready CSV.
or click to browse — .json, .jsonl, .ndjson
The tool that can actually handle API responses — not just flat sample data.
API responses are nested: customer contains address, address contains city. We resolve that into dot paths: customer.address.city. Every property gets its own CSV column — perfect for Excel filters or pivot tables.
If the file starts with { instead of [, we parse line-by-line. Loki logs, BigQuery exports, MongoDB backups (mongoexport), OpenAI batch outputs — all work without pre-conversion.
Arrays inside a record can be (a) saved as JSON string in one column, (b) expanded by index (items.0.qty…), or (c) joined with pipe ("tag1|tag2|tag3"). You pick — matching your Excel or BI pipeline.
Some records have fields others don't (optional fields, varying schema). We build the union of all keys and fill missing values as empty — no data loss, no inconsistent columns.
Enable the BOM option if the CSV will be double-click opened in Excel — accented characters will be reliably detected. For modern web and data tools, leave BOM off.
Stripe payouts, Firebase user tables, MongoDB orders — JSON exports often contain PII. With BrowserCrunch nothing leaves the browser. No data-processor relationship, no third-country transfer.
Three steps with preview.
Array, single object, NDJSON, or wrapped {data:[...]} — all variants supported.
Auto-flatten nested objects, pick array strategy, pick delimiter for target app.
Check the preview, download, import to Excel or BI tool.
Where JSON-to-CSV shows up most.
Stripe and PayPal API responses are deeply nested: payout.balance_transaction.fee_details is everyday. Accounting wants a flat Excel table for sales tax and 1099 prep. Flattening solves it in one step.
Firestore exports collections as JSON. For internal reports (conversion rates, daily-active-users, churn tracking) the data goes into an Excel dashboard or Google Sheet. Flatten + CSV download, done.
mongoexport --type=json produces NDJSON or JSON array that Excel can't open. The tool turns it into a flat CSV — useful for analytics, stakeholder reports, or relational DB migration.
Inbound webhooks (Shopify orders, Slack events, GitHub hooks) are often logged as JSON. For analysis ("how many orders on Black Friday?") CSV + pivot in Excel is way faster than jq pipes.
BI tools handle JSON only partially — flat CSV is universal. Quick ad-hoc analyses without data modeling in the Power Query Editor.
OpenAI and Anthropic batch outputs are NDJSON. Want to review 1000 generated texts in Excel (column: prompt, completion, token count, model)? Convert NDJSON here and annotate with a status column directly in Excel.
With flattening enabled, nested objects are resolved to dot notation. {customer:{name:'Anna',address:{city:'Austin'}}} becomes customer.name and customer.address.city. Every deeply nested property ends up in its own CSV column. With flattening off, nested objects are written as JSON strings into a single column.
Three modes: (a) as JSON string in one column — compact, preserves structure. (b) Expanded by index (items.0.name, items.0.qty, items.1.name…) — good for homogeneous arrays. (c) Joined with pipe — for pure string lists like tags or labels.
Yes. NDJSON (one JSON line per record, no wrapping array) is auto-detected — if the first line starts with { instead of [, parsing is line-by-line. Useful for logs, BigQuery exports, MongoDB backups.
We build the union of all keys across all records. If record 1 has name+age and record 2 has name+age+email, the CSV has all three columns and record 1 gets an empty cell in the email column.
If the JSON file contains a single object instead of an array, it's wrapped into a 1-element array — you get a CSV with header and one data row. Some APIs wrap data like {data:[...]}; in that case we automatically extract the first array-valued field as the record list.
Up to about 50 MB JSON runs smoothly. Over 200 MB you should switch to jq + miller on the terminal because browser memory will get tight. NDJSON is more memory-efficient than big arrays because we can stream line-by-line.
Default: null becomes an empty cell, true/false written as "true"/"false". Excel and PostgreSQL import that sensibly.
No. Parsing and CSV generation runs in your browser. Especially important for Stripe, PayPal, and Firebase exports that often contain sensitive customer or payment data — it stays local.
APIs speak JSON, accounting speaks Excel. Anyone regularly piping Stripe, PayPal, Firebase, MongoDB, or internal REST data into an Excel report knows the pain: the response is three levels deep, contains arrays of sub-objects, and a few optional fields that come and go. Standard online converters fail on exactly those three points — we solve all three.
A typical Stripe charge response has: id, amount, currency, customer.id, customer.name, customer.address.city, customer.address.postal_code, payment_method_details.card.brand, payment_method_details.card.last4, balance_transaction.fee_details[0].amount, …. Naive converters write only top-level fields. We walk the entire tree recursively and produce one column per leaf path. The Excel user can filter by city, group by card brand — directly in a pivot.
Arrays are tricky: an order record can have 1, 5, or 20 line items. Three sensible strategies: (a) array as JSON string in one column — compact, keeps structure, visible as text in Excel. (b) Expanded by index — items.0.qty, items.0.price, items.1.qty, … — good when all arrays are roughly the same size. (c) Joined by pipe for pure string arrays — tags "red|green|blue" in one cell. Pick per export.
NDJSON (Newline-Delimited JSON) is the standard format for logs, BigQuery exports, mongoexport output, and LLM batch results. Instead of a wrapping array, one JSON object per line. We detect the format from the first character (opening curly brace instead of square) and parse accordingly. More memory-efficient than a giant array — and for million-record datasets the only practical browser option.
Real-world JSON is rarely schema-consistent: optional fields drop, new fields appear, old ones get omitted. We scan all records and build the union of all paths. Columns get created for every ever-occurring field, missing values are written as empty cells. Excel reports don't break just because record 47 suddenly has a refund_reason field.
If the CSV will be opened in Excel double-click, a UTF-8 BOM at the file start helps so accented characters in names and addresses are rendered correctly. For modern web tools, Google Sheets, or DB imports, omit the BOM — that's today's clean default. One checkbox, no more headerless frustration.
API responses usually contain PII — Stripe customers, Firebase users, MongoDB orders. Running them through a foreign cloud converter is risky legally (GDPR Art. 28, possibly third-country transfer to the US). BrowserCrunch processes purely in your browser. Bonus: works offline once the page is loaded.
Other direction? Our CSV-to-JSON converter with type sniffing and NDJSON output. For office workflows: Excel to CSV and CSV to Excel. For reports: CSV as PDF table.