Skip to content
Free tool

Convert JSON to CSV – JSON to CSV Converter

Convert JSON to CSV and CSV back to JSON directly in your browser. The tool flattens nested objects, detects the delimiter, reads quoted fields and line breaks according to RFC 4180, and also displays the result as a table. Includes an Excel preset (semicolons, decimal commas, BOM), downloads and support for files up to 5 MB. Free, with no sign-up required: your data stays in your browser and nothing is uploaded.

Built by Dimitri Heissler

Building something of your own? Host it on a VPS with full control.

Preset

More options

Your data stays in your browser: it is neither uploaded nor saved. Files up to 5 MB.

Lines
0
Columns
0
Size
0 Bytes

Example result

What this JSON to CSV Converter shows you

Paste JSON or CSV and instantly get the other format: a result ready to copy or download, with the data displayed as a table below. Three examples:

Example 1: Convert JSON to CSV

Input (two objects with different keys):

[
  {"id": 1, "name": "Anna Müller", "address": {"city": "Köln", "zip": "50667"}, "tags": ["admin", "dev"], "price": 19.9},
  {"id": 2, "name": "Ben \"Bo\" Schulz, Jr.", "address": {"city": "Bonn"}, "tags": [], "active": true}
]

Output (default: comma, arrays as JSON text):

id,name,address.city,address.zip,tags,price,active
1,Anna Müller,Köln,50667,"[""admin"",""dev""]",19.9,
2,"Ben ""Bo"" Schulz, Jr.",Bonn,,[],,true
The result of the first example as a table
idnameaddress.cityaddress.ziptagspriceactive
1Anna MüllerKöln50667["admin","dev"]19.9
2Ben "Bo" Schulz, Jr.Bonn[]true

In words: Two objects become 2 data rows and 7 columns. The columns combine all keys, the nested object becomes “address.city” and “address.zip”, and fields missing from an object are left empty. The name containing a comma and quotation marks is quoted, and the quotation mark inside it is doubled (RFC 4180). The “tags” array appears as JSON text in one cell. The postal code remains “50667”, and the number 19.9 remains 19.9.

Example 2: Convert CSV from Excel to JSON

Input (semicolon separator, comma decimals, a quoted field with a line break):

id;name;price;active;note
1;Anna Müller;19,90;true;
2;"Ben ""Bo"" Schulz";5;false;"Zeile 1
Zeile 2"

Output (delimiter detected automatically, comma decimal separator):

[
  {
    "id": 1,
    "name": "Anna Müller",
    "price": 19.90,
    "active": true,
    "note": ""
  },
  {
    "id": 2,
    "name": "Ben \"Bo\" Schulz",
    "price": 5,
    "active": false,
    "note": "Zeile 1\nZeile 2"
  }
]

In words: The tool detects the semicolon as the delimiter and turns each row into an object using the header names. “19,90” becomes the number 19.90, “5” becomes the number 5, and “true” becomes a JSON boolean. The field containing a line break remains a single string with \n, and doubled quotation marks become a single quotation mark. The empty last cell of the first row becomes an empty string.

Example 3: Nested data and arrays

Input:

[{"id": 1, "user": {"name": "Anna", "address": {"city": "Köln"}}, "tags": ["admin", "dev"]}, {"id": 2, "user": {"name": "Ben"}, "tags": ["dev"]}]

Arrays as JSON text:

id,user.name,user.address.city,tags
1,Anna,Köln,"[""admin"",""dev""]"
2,Ben,,"[""dev""]"

Expanded arrays:

id,user.name,user.address.city,tags.0,tags.1
1,Anna,Köln,admin,dev
2,Ben,,dev,

In words: Nested objects are flattened using dot notation: “user” and “address” become “user.address.city”. For arrays, you have a choice: As JSON text, the number of columns stays the same and nothing is lost. When expanded, each element gets its own column (“tags.0”, “tags.1”), and the row with only one tag leaves the second column empty.

How it works

How to convert JSON to CSV and CSV back to JSON

Four steps from raw data to a finished file—no account, no upload.

Step 1

Choose direction and enter data

Select “JSON to CSV” or “CSV to JSON” and paste your data, drag a file onto the input field, or click “Open file.” The result appears instantly, with no button to press.

Step 2

Set options

Set the delimiter, decimal separator and how arrays are handled. For Excel with semicolons and decimal commas, as with German regional settings, choose the “Excel (Germany)” preset: semicolons, decimal commas and a BOM.

Step 3

Check result and table

Below the result, a table shows how the data was read. Warnings appear for invalid JSON with line and column numbers, unclosed quotation marks, rows with the wrong number of fields, and numbers containing commas.

Step 4

Copy or download

Copy the result to your clipboard or download it as a file. Use “Back to JSON” or “Back to CSV” to check whether the conversion was lossless.

Conversion rules

How JSON values become CSV cells and vice versa

The two tables are not claims; they are the tool's own output. Every row was calculated using the same code you used above.

JSON value to CSV cell

Which CSV cell comes from which JSON value
JSON valueCell in the CSV
"Köln"Köln
19.9019.90
truetrue
null""
"a,b""a,b"
"\"GG\" wp""""GG"" wp"
["a","b"]"[""a"",""b""]"
{"x":1}1

Numbers are written exactly as they appear in the JSON: 19.90 stays 19.90, and a 20-digit ID loses no digits. Text containing a comma, quotation marks, or a line break is enclosed in quotation marks.

CSV cell to JSON value (detect types)

Which JSON value comes from which CSV cell
CellDecimal separatorJSON value
42Dot42
19.90Dot19.90
19,90Comma19.90
19,90Dot"19,90"(remains text)
TRUEDottrue
NULLDotnull
007Dot"007"(remains text)
12345678901234567Dot"12345678901234567"(remains text)

Only unambiguous numbers are converted to numbers. Leading zeros (007, postal codes) and integers with more than 15 digits (IDs, card numbers) remain text so nothing is lost. If you turn off type detection, everything remains text.

Excel

Open JSON in Excel: convert JSON to CSV for Excel

Double-clicking opens a CSV file directly as a table in Excel, but not a JSON file. Here's how to turn JSON into a file that opens in Excel with semicolons and decimal commas, as in German regional settings, without any extra work.

Step 1

Load JSON

Paste the JSON or open the .json file with “Open file”. Leave the direction set to “JSON to CSV”.

Step 2

Choose Excel preset

Click “Excel (Germany).” This sets the separator to a semicolon, uses a decimal comma, and adds a BOM to the download.

Step 3

Download and open CSV

Download the file and double-click it to open it in Excel. You can then save it as .xlsx if needed.

Input (JSON):

[{"produkt": "Server", "preis": 19.9, "stadt": "Köln"}, {"produkt": "Domain", "preis": 1.5, "stadt": "Münster"}]

Result with “Excel (Germany)”, as Excel reads the rows:

produkt;preis;stadt
Server;19,9;Köln
Domain;1,5;Münster

The tool creates CSV files, not .xlsx files. For a direct import, Excel offers “From JSON” under “Data” → “Get Data” → “From File”.

Discover more

More tools

FAQ

Frequently asked questions

Quick answers about JSON, CSV, Excel, and this tool.

Paste the JSON above or open the .json file with “Open file”, then select “JSON to CSV”. The tool expects a list of objects, such as [{"id": 1, "name": "Anna"}, {"id": 2, "name": "Ben"}]. This produces a header row, “id,name”, and one row per object. The columns include every key; if an object lacks a key, its cell stays empty. The tool also reads a single object, JSON Lines and a list inside an object such as {"data": [...]}. Copy the result or download it as a .csv file.

Select “CSV to JSON” and paste CSV with a header row, or open a file. “id;name” followed by the row “1;Anna” becomes [{"id": 1, "name": "Anna"}]. The tool detects the delimiter (comma, semicolon, tab or pipe) automatically, but you can set it yourself. Without a header row, you get a list of arrays; with JSON Lines, you get one line per record. First save an Excel spreadsheet as “CSV UTF-8” in Excel. If it contains numbers with decimal commas, such as “19,90”, set the decimal separator to comma so the value becomes the number 19.90.

Select “JSON to CSV,” open your .json file with “Open file,” and choose the “Excel (Germany)” preset. Download the result as a .csv and double-click to open it in Excel: semicolons separate columns, umlauts are preserved, and numbers use decimal commas. The tool creates CSV, not an .xlsx file, but Excel opens CSV directly and you can then save it as .xlsx. Alternatively, use Excel’s “Data” > “Get Data” > “From File” > “From JSON” import (Power Query).

If your Excel uses a comma as its decimal separator, as with German regional settings, it expects a semicolon as the field delimiter. Excel also reads a CSV file as UTF-8 only if it has a BOM (Byte Order Mark); otherwise, accented characters may appear corrupted. Choose the “Excel (Germany)” preset: semicolons, decimal commas, Windows line endings and a BOM in the download. “19.9” then becomes “19,9”, while “Müller” stays “Müller”. For Excel using a period as the decimal separator, as with English regional settings, the “Standard” preset is enough.

Click “Open file” or drag the file onto the input field. Below the result, the preview shows the data as a table: one row per object for JSON, or CSV as a spreadsheet program would read it. The preview shows the first 100 rows and 50 columns; copying and downloading include everything. Files are read up to 5 MB and are not uploaded. To make JSON easier to read with indentation, use the JSON Formatter.

CSV is flat, so nested objects are flattened using dot notation: {"address": {"city": "Köln"}} becomes the column “address.city”. You can write arrays in two ways. “As JSON text” puts the whole array in one cell, such as ["admin","dev"]. “Expanded” makes each element a column (“tags.0”, “tags.1”). To reverse the process when converting CSV to JSON, enable “Nest dot-notation columns”. Information CSV cannot represent, such as the difference between null and an empty string, is lost.

CSV is a flat table: a header row followed by one record per row, with fields separated by a delimiter. JSON stores objects and lists that can be nested, and has distinct types for numbers, booleans and null. CSV opens in any spreadsheet program and is compact; JSON is better suited to APIs and nested data. Converting JSON to CSV therefore flattens nested structures.

No. Reading, conversion, table preview and downloading all happen entirely in your browser. Your data is neither uploaded nor stored, including files you open or drag onto the field. The limit therefore depends on your device: the tool opens files up to 5 MB and rejects inputs with more than 5 million cells (or more than 5,000 columns when converting JSON to CSV) before the browser freezes. This matters for customer lists, database exports and API responses containing tokens.

Any more questions?

Contact Support
Building something of your own?

Your application needs a server that reliably serves its data

A ZAP-Hosting VPS reliably puts your application or project online.

4.4/5 Trustpilot32,000+ Active serversSince 2010

No setup. No risk. Online in seconds.

Flexible TermCancel anytimeOnline in 60 seconds

Looking for more tools? View all developer tools