JSON to CSV Converter

Turn JSON arrays or objects into clean CSV rows. Paste or upload JSON, flatten nested fields, choose a delimiter, and copy or download the result — all in your browser.

100% Client-Side Processing

Your JSON is parsed and converted entirely in your browser. Nothing is uploaded to a server.

Options

CSV output
Rows: 0 Columns: 0 Characters: 0

What is a JSON to CSV Converter?

A JSON to CSV converter takes structured JSON data — an array of objects, or a single object — and rewrites it as CSV (comma-separated values), the row-and-column plain-text format used by spreadsheets, databases, and data-import tools like Excel, Google Sheets, and Airtable.

The converter reads each JSON object as one row, turns its keys into column headers, and flattens nested objects and arrays into dot-notation columns like `address.city` or `tags[0]` so the result fits neatly into a flat table — the shape most spreadsheet and database tools expect.

How it Works

  • Add your JSON: Paste JSON directly into the editor, or upload a .json file.
  • Choose your options: Pick a delimiter (comma, semicolon, tab, or pipe), whether to include a header row, whether to flatten nested objects and arrays, and whether to quote every field.
  • Read the result instantly: The tool parses your JSON in your browser and shows the converted CSV as you type, along with row, column, and character counts.
  • Copy or download: Copy the CSV to your clipboard or download it as a .csv file.

Features

  • Paste JSON or upload a .json file
  • Instant, live conversion as you type — no button to click
  • Works with a single JSON object or an array of objects
  • Flattens nested objects into dot-notation columns (e.g. address.city)
  • Flattens nested arrays into indexed columns (e.g. tags[0], tags[1])
  • Automatically builds a header row from the union of all keys
  • Choose comma, semicolon, tab, or pipe as the delimiter
  • Optional quote-all-fields mode for stricter CSV compatibility
  • Live row, column, and character counts
  • Copy to clipboard or download as .csv
  • 100% client-side processing for privacy

Best Practices

  • Use an array of objects with consistent keys: CSV works best when every object has roughly the same fields — missing keys just produce empty cells, but wildly different objects produce a very wide, sparse table.
  • Turn on flattening for nested data: if your JSON has nested objects or arrays, keep "Flatten nested objects/arrays" on so each value gets its own column instead of a raw JSON string.
  • Pick a delimiter that matches your target tool: some regional Excel builds expect a semicolon instead of a comma — check your spreadsheet app's import settings if columns come in wrong.
  • Quote all fields for maximum compatibility: if you're importing into a strict or older CSV parser, enable "Quote all fields" so every value is wrapped in double quotes regardless of content.
  • Double-check numbers and booleans after import: CSV has no native types, so values like true, false, and 42 are written as plain text and may need to be re-typed by the tool that imports them.

Troubleshooting

It says my JSON is invalid

Check for a trailing comma after the last item in an array or object, unquoted keys, single quotes instead of double quotes, or an unclosed bracket — these are the most common reasons JSON fails to parse.

Nested fields show up as raw JSON text like {"city":"London"}

Turn on "Flatten nested objects/arrays" so nested values are split into their own dot-notation columns instead of being kept as a single JSON string.

The CSV has far more columns than I expected

This usually happens when objects in the array have different shapes, or when an array field flattens into one column per item (tags[0], tags[1], tags[2]…). Consider disabling flattening for that field, or normalizing your JSON first.

A spreadsheet app splits a column oddly, or numbers lose leading zeros

This is a spreadsheet import setting, not a CSV problem — check the delimiter matches what your app expects, and import numeric-looking text columns as "Text" if you need to preserve leading zeros or long ID numbers.

Common Use Cases

  • Importing API data into a spreadsheet: convert a JSON response from a REST API into CSV so you can open, sort, and filter it in Excel or Google Sheets.
  • Preparing data for import tools: many CRMs, email platforms, and databases accept bulk imports as CSV but not JSON — convert once and upload.
  • Sharing data with non-technical teammates: a CSV file opens directly in a spreadsheet app, while raw JSON usually doesn't mean much to non-developers.
  • Feeding data into BI and analytics tools: many reporting and analytics tools expect flat, tabular CSV input rather than nested JSON.
  • Archiving or backing up exported data: CSV is a stable, widely supported format for long-term storage of tabular records.

Frequently Asked Questions

Does it work with a single JSON object, not just an array?

Yes. A single object is treated as one row. An array of objects becomes one row per object.

What happens to nested objects and arrays?

With "Flatten nested objects/arrays" on (the default), nested objects become dot-notation columns like address.city, and nested arrays become indexed columns like tags[0]. With it off, nested values are kept as a single JSON string in one cell.

What if my objects don't all have the same keys?

The header row includes every key found across all objects, in the order it first appears. Rows missing a given key simply get an empty cell for that column.

Which delimiter should I use?

Comma is the standard CSV delimiter and works with almost every tool. Use semicolon if your spreadsheet app is set to a locale that treats comma as a decimal separator, or tab/pipe if your target system expects those instead.

Why does the tool quote some values but not others?

By default, a value is only wrapped in double quotes when it contains the delimiter, a quote character, or a line break — this keeps the output compact. Enable "Quote all fields" to quote every value regardless.

Do you store my JSON or the converted CSV?

No. Everything happens locally in your browser, and nothing is uploaded or saved.

Is there a size limit?

The converter runs in your browser's memory, so very large JSON files (tens of megabytes or more) may be slow or use a lot of memory depending on your device.

Share this tool

Share a direct link or embed this tool on your site. Keep the Tooladex attribution link to support the project.