JSON to CSV Converter

Securely flatten complex nested JSON into production-ready CSV tables entirely in your browser.

100% Browser-Based • Local Processing
Delimiter
Also
Your JSON
Table preview 0 rows

Waiting for JSON Rows 0 Columns 0 Delimiter , Size 0 B

Privacy Focused

🔒 Local Processing. Your code never leaves your device.

Instant Results

🌐 Fully Client-Side. Runs instantly in your browser.

No Signup

⚡ No accounts. No API keys. Just open and use.

Browser Based

🚀 No installs, no CLI, no build step.

Convert JSON to CSV — privately

JSON to CSV converts a JSON array of objects into tabular CSV. The object keys become the header row, and each object becomes a row. This one runs entirely in your browser — your JSON is never uploaded — and it flattens nested values so they fit a table.

When you need to open API data in a spreadsheet or hand it to someone who lives in Excel, you need CSV. This converter takes a JSON array of objects and turns it into a table: the keys become the header row, and each object becomes a row, with values in the matching columns.

Paste your JSON or load a local file, choose your delimiter (comma, semicolon, tab, pipe, or one you type), decide how to handle nested data, and pick or reorder the columns you want. The output uses RFC 4180 quoting, so any field containing a comma, quote, or newline is safely wrapped in quotes. Copy or download the CSV, with a row/column count shown.

The Columns view of the JSON to CSV converter, listing id, name, address.city, address.zip, tags and active as rows with a checkbox and two move arrows each. The tags checkbox is off and the status line reads 3 rows, 6 columns, 1 column left out.
Every key is a switch, and the two arrows set the order the CSV is written in.

Privacy is the point, as always. Everything runs in your browser — no server, no upload, no logging, no tracking. JSON exports often contain real records; here nothing leaves your device, and the tool works offline once loaded.

The honest part is important, because CSV is flat and JSON isn't. A table has no natural place for a nested object or an array, so the tool either flattens nested values into dot-notation columns (address.city, address.zip) or JSON-stringifies them into a single cell — your choice. Deeply nested JSON may still need manual mapping, and this flattening is a simplification, not a perfect round-trip. If your objects have different keys, the header is the union of all keys and missing fields become empty cells. Finally, watch the Excel/locale gotchas: some locales expect a semicolon delimiter, and a UTF-8 BOM can help Excel show accented characters correctly — the tool offers options for these.

For the reverse, see CSV to JSON; to inspect the input, the JSON Formatter.

When JSON to CSV helps

  • Open in a spreadsheet. Turn API data into an Excel/Sheets-friendly table.
  • Share with non-devs. Hand data to people who work in spreadsheets.
  • Reporting. Export records for analysis or a report.
  • Flatten nested data. Get dotted columns from nested JSON.
  • Sensitive records. Convert real data without uploading it.

How to convert JSON to CSV

Paste or load your JSON

An array of objects works best (read in-browser, not uploaded).

Set the delimiter

Comma, semicolon, tab, pipe, or a character you type under Custom — match how you'll open the file.

Choose nested handling and columns

Dot, Bracket or Snake spelling for nested keys, or Keep as JSON to leave the value in one cell. Then open Columns and switch off or reorder any of them.

Convert

The tool builds the header from the keys and one row per object.

The converter holding a JSON array that stops after its second object. The table pane reads No rows and the status line under it reads Line 3, column 32. The array opened on line 1 is never closed.
A document that does not parse gets a line and a column, and hands out nothing.
Copy or download

Grab the CSV. Nothing is sent anywhere.

The CSV view showing four lines of output. The header is id,name,address.city,address.zip,tags,active,note and the second row reads 2,Grace Hopper, then New York, NY in quotes, then 10004. The status line reads 3 rows, 7 columns and Size 222 B.
Only the fields that need quoting get it: New York, NY is wrapped, 10004 is not.
Realistic example

[{"name":"Ada","age":36},{"name":"Grace","age":45}] becomes:

Advanced tip

If a spreadsheet mangles accented text, enable the UTF-8 BOM option; if columns land in one cell, switch the delimiter to semicolon.

Common mistake to avoid

Don't expect deeply nested JSON to become a clean table — flatten or stringify it, and remember the result is a simplification.

Related

To go back, use CSV to JSON.

What to keep in mind

  • Zero-knowledge and private. Conversion runs in your browser — nothing uploaded, logged, or tracked, and it works offline.
  • CSV is flat. Nested objects/arrays are flattened to dotted columns or stringified; deeply nested JSON may need manual mapping and isn't a perfect round-trip.
  • Uneven objects. Different keys produce a union header with empty cells for missing fields.
  • Excel/locale caveats. Use a semicolon delimiter and/or UTF-8 BOM if your spreadsheet needs them.
  • Large files run locally. Very big JSON is limited by your device, since there's no server.
The JSON to CSV converter on a phone. The nesting control, the five delimiter buttons and the three option toggles sit in three rows above a JSON and CSV tab pair, with the CSV tab open on the table preview.
On a phone the two panes become tabs and the bar keeps every control.

Frequently Asked Questions

How do I convert JSON to CSV?

Paste your JSON (or load a local file) — ideally an array of objects — choose your delimiter and nested-data handling, and the tool builds a header row from the object keys and one row per object. Nested values are flattened or stringified, and fields are quoted where needed. Then copy or download the CSV. Everything happens in your browser; nothing is uploaded.

Does this upload my JSON, and does it work offline?

No upload, and yes it works offline. All processing happens in your browser using JavaScript — there's no server receiving your data, no logging, and no tracking. That matters because JSON exports often hold real records. Once the page has loaded it keeps working with no internet connection, which you can confirm in your browser's network tab.

What JSON shape does it expect?

An array of objects works best — [{...}, {...}] — where each object is a row and its keys are the columns. That maps cleanly to a table. A single object can be treated as one row, and other shapes may need adjusting. If your JSON is one big object that wraps a list of records, the tool takes the array inside it and the status line names the key it used — that only happens when there is exactly one array to choose, so a document holding two lists is never guessed at. An array of plain values becomes a single value column.

How does it handle nested objects and arrays?

Since CSV is flat, nested values can't sit in a single column naturally. You get two choices: flatten them into dot-notation columns (so {"address":{"city":"NYC"}} becomes an address.city column), or JSON-stringify the nested value into one cell. Flattening is cleaner for shallow nesting; stringifying keeps complex structures in a single field. Deeply nested JSON may still need manual mapping.

What if my objects have different keys?

The tool builds the header from the union of all keys across your objects, so every field that appears anywhere gets a column. Where an object doesn't have a particular key, that cell is left empty. This keeps the table complete and rectangular even when your records aren't perfectly uniform — a common situation with real-world JSON.

My CSV won't open right in Excel — why?

Usually a locale or encoding issue. Some locales (and Excel installs) expect a semicolon delimiter rather than a comma, so switch the delimiter to match. Accented or non-Latin characters can look wrong unless the file has a UTF-8 BOM — the UTF-8 BOM toggle adds one to the file you download. It is deliberately not added to a copied CSV, because an invisible U+FEFF pasted into a cell is its own bug. And very large files may open slowly. These are Excel/CSV quirks, not errors in the conversion itself.

Can I choose the delimiter (semicolon, tab)?

Yes. Pick comma, semicolon, tab or pipe, or type your own character under Custom, to match how you'll open the file. Comma is standard CSV; semicolon suits many European locales where the comma is a decimal separator; tab (TSV) avoids delimiter clashes with commas in your data. Whatever you choose, only the fields that need it are quoted, so a column of numbers still arrives in the spreadsheet as numbers.

Can I pick or reorder which columns to export?

Yes. You can select which keys become columns and set their order, rather than exporting every field in whatever order it appears. This is handy for producing a clean report with just the columns you care about, in a sensible sequence. Deselected keys are simply omitted from the CSV.

Does it quote fields with commas or newlines?

Yes. The output follows RFC 4180: any field containing the delimiter, a double quote, or a newline is wrapped in double quotes, and quotes inside a field are escaped by doubling them (""). Nothing else is quoted, so numbers and booleans arrive in a spreadsheet as numbers and booleans. If you need the older, blunter style — every field wrapped, whatever it holds — turn on Quote all. Records end with a CRLF, as the RFC specifies, and the CSV to JSON tool on this site reads either ending.

Can I load a JSON file instead of pasting?

Yes. You can open a local .json file and the tool reads it directly in your browser with the FileReader API — the contents load into the editor without being uploaded anywhere. This is ideal for larger exports or ones you'd rather not copy and paste, and it's exactly as private as pasting the JSON by hand.

Can it handle large JSON?

Usually yes. Because it runs locally, the limit is your device's memory and CPU rather than a server cap, and modern browsers handle arrays with tens of thousands of objects well. The table preview draws the first 200 rows and says so beside the pane title; the CSV, the copy and the download always carry every row. Very large files (hundreds of MB) can be slow or hit memory limits, since everything is in-browser — but nothing is uploaded, and there's no server-imposed size cap.

Is it free, and are there limits?

Yes, completely free — no payment, no signup, no account, and no usage caps or watermarks. Since everything runs in your browser, there's nothing for us to meter; the only practical limit is your device's performance on very large files. Use it as much as you like, including offline once the page has loaded.

Still have questions?

If you can't find the answer you're looking for, feel free to contact our support team.

Contact Us