Skip to main content

JSON to CSV Converter — Flatten, Escape, Export

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.
CSV output

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. 1. Input

    Paste or drop your content into the tool panel.

  2. 2. Process

    Click the button. All processing is local in your browser.

  3. 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. 1 CSV ⇄ JSON Converter Convert CSV to JSON or JSON to CSV — handles quoted commas, newlines in cells, custom delimiter — browser-only Open
  2. 2 JSON Formatter & Validator Format, validate, and minify JSON instantly — right in your browser. Open
  3. 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.

Made by Toolora · 100% client-side · Updated 2026-05-29