Emergency server help: get in touch

JSON to CSV Converter (and CSV to JSON)

Turn JSON arrays into spreadsheet-ready CSV, or CSV into JSON, with correct quoting and nested fields.

Where it runs
Runs in your browser
Last updated
October 9, 2026

This JSON to CSV converter turns a JSON array of objects into CSV for Excel, LibreOffice or a database import. You can also turn CSV back into JSON. Nested objects become dot-path columns, every key gets a column, and fields are quoted to RFC 4180. The CSV reader handles quoted commas, quotes and line breaks. Everything runs in your browser and nothing is uploaded.

Loading the tool… It runs in your browser and needs JavaScript.

JSON to CSV: how columns are built

Paste a JSON array (or a single object) or open a file of up to 5 MB. The header is the union of all keys, in the order they first appear, so records with missing fields still line up and their empty cells stay blank. With Flatten nested objects ticked, {"os": {"name": "AlmaLinux"}} becomes a column called os.name. Arrays are written as JSON text in a single cell, so the number of columns stays stable. An array of plain values becomes one column called value, and an array of arrays is written row by row.

CSV quoting and delimiters

RFC 4180 is the closest thing CSV has to a standard. The converter follows it: records end with CRLF by default, and fields containing the delimiter, a double quote or a line break are wrapped in double quotes, with inner quotes doubled ("say ""hi"""). Fields with leading or trailing spaces are quoted too, so spreadsheets do not trim them.

Choose a semicolon if your Excel uses a comma as the decimal separator (common in much of Europe), or tab for TSV. Tick Add UTF-8 BOM if Excel shows accented characters wrongly when you open the download.

CSV to JSON

The parser reads quoted fields properly, including commas, doubled quotes and line breaks inside quotes. It also reports an unclosed quote with its line number. The delimiter is detected from the first line unless you choose one. Empty header cells become column_1, column_2 and so on, and repeated names get _2 appended. Rows that are too short are padded with empty values.

Detect numbers, true/false and empty turns 42 and 3.5 into numbers, true/false into booleans and empty cells into null. Values with leading zeros, such as 007 or postcodes, stay strings. Rebuild nested objects reverses the flattening, so os.name becomes {"os": {"name": ...}}.

Spreadsheet formula safety

If a cell starts with =, +, - or @, Excel and similar programs may run it as a formula when the file is opened. With exported user data this can be abused (CSV or formula injection). Tick Neutralise spreadsheet formulas to prefix such text cells with an apostrophe. Numbers are never changed.

For server admins: the command-line way

jq -r '(.[0] | keys_unsorted) as $k | $k, (.[] | [.[$k[]]]) | @csv' data.json > data.csv
mlr --icsv --ojson cat data.csv > data.json      # Miller

The jq line takes its columns from the first object only. This page uses every key from every record.

JSON to CSV at a glance

JSON to CSV – short answer
In short: Turn JSON arrays into spreadsheet-ready CSV, or CSV into JSON, with correct quoting and nested fields.
JSON to CSV – what this tool covers
JSON to CSV: what this tool covers.
JSON to CSV – questions answered
JSON to CSV: the questions this tool answers.

Related tools: JSON Formatter and Validator · JSON to YAML Converter (and YAML to JSON) · Diff Checker: Compare Two Texts.

Official documentation (checked 9 October 2026): RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Files

Frequently asked questions

Is my data uploaded?

No. Parsing and conversion run in your browser; the download is created locally as well.

How are nested objects handled?

With flattening on, nested keys become dot-path columns such as os.name. Arrays are kept as JSON text in one cell.

Why does Excel put everything in one column?

Your Excel probably expects semicolons. Choose the semicolon delimiter, or import the file through the Data menu and pick the delimiter there.

Share this tool

Free website test

Is your website set up right?

Check SSL, security headers, redirects, robots.txt, sitemap, llms.txt and security.txt in one test. It takes about 30 seconds.