Turn a JSON array (or object) into clean CSV — flattens nested keys, escapes per RFC 4180, custom delimiter, UTF-8 BOM for Excel — browser-only
- Runs locally
- Category Format Converter
- Best for Turning pasted content or local files into a handoff-friendly format.
What this tool does
Free online JSON to CSV converter. Paste a JSON array of objects → get a CSV with one column per key. Nested objects flatten to dotted columns (`address.city`), arrays export as a JSON string or a joined list, and the column order is the stable union of every object's keys so rows with missing fields still line up. RFC 4180 quoting (fields with commas, quotes, or newlines get wrapped and escaped), custom delimiter (comma / semicolon / tab / pipe), optional header row, and a UTF-8 BOM toggle that fixes Chinese/Japanese mojibake when Excel opens the file. Copy or download .csv. 100% client-side.
Tool details
- Input
- Files + Text + Structured content
- The page exposes text boxes, numeric controls, file pickers, or structured inputs depending on the tool.
- Output
- Live result + Copy + Download
- The result area focuses on usable output, with copy, download, or preview actions when supported.
- Privacy
- Browser-side processing
- The main tool logic does not call an external API, so inputs normally stay in the current tab.
- Save / share
- Shareable URL state
- Key settings are encoded in the URL so another person can reopen the same setup.
- Performance budget
- Initial JS <= 11 KB
- No WASM budget is declared, keeping the tool quick to open on mobile.
- Best fit
- Format Converter · Developer
- Category and role tags drive related tools, internal links, and quick fit checks.
How to use
-
1. Input
Paste or drop your content into the tool panel.
-
2. Process
Click the button. All processing is local in your browser.
-
3. Copy / Download
Copy the result or download to disk in one click.
How JSON to CSV Converter fits into your work
Use it when the main problem is getting content from one practical format into another.
Conversion jobs
- Turning pasted content or local files into a handoff-friendly format.
- Previewing a conversion before you use it in a larger workflow.
- Cleaning small format mismatches without opening a full editor.
Conversion checks
- Try a small sample first when the source format is messy.
- Check character encoding, separators, and line endings after conversion.
- Keep the source until the converted output has been reviewed.
Good next steps
These links move the current task into a more complete workflow.
- 1 CSV ⇄ JSON Converter Convert CSV to JSON or JSON to CSV — handles quoted commas, newlines in cells, custom delimiter — browser-only Open
- 2 JSON Formatter & Validator Format, validate, and minify JSON instantly — right in your browser. Open
- 3 CSV to Markdown Table Convert uploaded or pasted CSV into clean Markdown tables with quoted-cell support, locally in the browser. Open
Real-world use cases
Hand an API JSON dump to a non-technical teammate as a spreadsheet
Your `/api/orders` endpoint returns a JSON array and a colleague in ops needs it in Google Sheets. Copy the response body, paste it into the input, leave the delimiter on comma and the header row on. The tool reads the union of keys across all orders — so even orders that carry an optional `discount_code` field line up under one column with blanks where it's absent. Download the .csv, drag it into Sheets, done. No "can you export this for me" thread.
Flatten a nested config or settings object for diffing
You have two environments' settings as nested JSON and want a flat, line-by-line comparison. Paste each one with "Flatten nested objects" on — `{"db":{"pool":{"max":20}}}` becomes a `db.pool.max` column with value `20`. Now each setting is one row/column you can eyeball or drop into a spreadsheet to diff side by side, instead of squinting at two deeply indented JSON blobs.
Export survey or form responses with multi-select answers
A form library hands you responses where multi-select questions are JSON arrays: `"interests": ["design", "code", "ops"]`. Switch "Array values" to "Join with" and set the separator to a comma or pipe. Each respondent becomes one clean row and the multi-select reads as `design | code | ops` in a single cell — exactly the shape analysts expect when they pivot the table, instead of an unreadable JSON fragment.
Get a JSON list into Excel without the Chinese turning to mojibake
You're on Windows, the JSON has Chinese product names, and a naive export shows `鍟嗗搧` garbage when Excel opens it. Paste the JSON, tick "Add UTF-8 BOM", and hit Download .csv. The BOM forces Excel to read the file as UTF-8 so `商品名称` renders correctly. This single checkbox is the difference between a usable export and ten minutes of Data → From Text encoding-wizard fiddling.
Build a quick CSV fixture for a test from sample JSON
You're writing a test that ingests a CSV and you already have the equivalent sample as JSON. Paste it, pick the delimiter your parser uses (tab if your importer is tab-separated), and copy the output straight into your fixture file. The RFC 4180 escaping is handled, so a sample value like `he said "hi", ok` comes out correctly quoted and your test exercises the real edge cases instead of toy data.
Common pitfalls
Wrapping the JSON array in an extra object. If you paste `{"data": [ ... ]}` the tool treats the top-level object as a single row, not the inner array. Paste the array itself (`[ ... ]`), or if you only have the wrapper, drill into the `data` key first. A top-level array of objects is the shape that maps cleanly to CSV rows.
Forgetting the UTF-8 BOM for Excel and blaming the tool for "broken" Chinese. The CSV bytes are correct UTF-8 either way — Excel just mis-guesses the encoding without the BOM. Google Sheets, Numbers, and text editors read it fine without the BOM, so only tick the box when the target is Excel on Windows.
Choosing "Join with" for arrays that contain objects and expecting a flat string. Arrays of objects can't be losslessly joined into one cell, so the tool keeps them as JSON regardless of the join setting. If you truly need those nested fields as columns, restructure the JSON so each object's fields live at the row level before converting.
Privacy
Parsing the JSON (the browser's native `JSON.parse`), flattening nested keys, escaping per RFC 4180, and serializing the CSV are all plain JavaScript running in your tab. The data never leaves the page, nothing is logged, and the download is generated in-memory via a Blob — no upload, no round-trip. The one privacy caveat is the shareable URL: it encodes your JSON in the query string, but only when the input is under ~1500 characters; anything larger is kept local and never written to the URL. For sensitive records (customer PII, internal API dumps), copy the CSV manually rather than sharing the link, since URLs land in browser history and any recipient's server logs.
FAQ
Tool combos
Folks in your role tend to reach for these alongside this tool.
- Add Line Numbers Number every line of pasted text — set start, step and separator, zero-pad to align, skip blanks, or strip numbers back off — browser-only
- AES Text Encryptor Encrypt & decrypt text with a password — AES-256-GCM + PBKDF2 via WebCrypto — 100% in your browser, nothing uploaded
- Affine Cipher Encoder & Decoder Encrypt and decrypt the ax+b affine cipher with live modular-inverse check, browser-only
- Age Difference Calculator The exact gap between two birthdays — years/months/days, percentage, and the date one person is twice the other's age — browser-only