JSON to CSV Converter

Convert JSON arrays to CSV instantly. Choose delimiter, toggle headers, flatten nested objects with dot-notation. Also converts CSV back to JSON. Free, browser-based, no data uploaded.

Did we solve your problem today?

What Is JSON and Why Convert It to CSV?

JSON (JavaScript Object Notation) is the dominant format for web APIs, NoSQL databases, and configuration files. While JSON is ideal for machines, tabular data in JSON is often harder to inspect, share with non-technical teammates, or import into spreadsheet applications. Converting a JSON array to CSV bridges the gap: analysts get an Excel-ready file, and developers keep the original JSON workflow.

A typical JSON array:

[
  {"name": "Alice", "age": 30, "city": "Berlin"},
  {"name": "Bob",   "age": 25, "city": "Hamburg"}
]

Converts to CSV:

name,age,city
Alice,30,Berlin
Bob,25,Hamburg

What Is CSV?

CSV (Comma-Separated Values) is a plain-text tabular format. Each line represents one row, and values are separated by a delimiter character. It is the universal exchange format for spreadsheet applications like Microsoft Excel, Google Sheets, and LibreOffice Calc, as well as BI tools and data pipelines.

Delimiter Guide

DelimiterSymbolWhen to use
Comma,Default for English-locale exports
Semicolon;European Excel exports (decimal separator is , there)
Tab\tTSV files, copy-paste from spreadsheet cells

If your resulting CSV looks wrong when opened in Excel, try switching from comma to semicolon.

Flattening Nested Objects

Real-world JSON often contains nested structures:

[{"user": {"name": "Alice", "role": "admin"}, "active": true}]

Without flattening, the user field becomes a JSON string in a single cell. With Flatten nested objects enabled, the converter expands nested keys using dot-notation:

user.name,user.role,active
Alice,admin,true

This is useful when preparing data for SQL imports, BI dashboards, or any target that expects flat tables.

Arrays and Non-String Values

CSV has no type system — every cell is a string. Numbers and booleans are serialized as-is (30, true). Arrays inside objects (e.g., {"tags":["a","b"]}) are serialized as a JSON string in a single cell and properly quoted to comply with RFC 4180.

Bidirectional: CSV → JSON

Switch the direction selector to CSV → JSON to reverse the process. The first row is interpreted as the header, and each subsequent row becomes a JSON object with string values. This is handy when you receive a CSV export and need JSON for an API or script.

Missing Keys and Sparse Arrays

When objects in the array have different keys, the tool collects the union of all keys as the header row. Rows that are missing a key get an empty string for that column. This matches the behavior most spreadsheet tools expect.

RFC 4180 Quoting

The tool follows the RFC 4180 CSV standard for output:

Privacy

All processing runs in your browser. Your JSON and CSV data never reach any server, are never logged, and are never stored. You can use this tool entirely offline once the page has loaded.

FAQ

What kind of JSON can be converted to CSV?

The tool expects a JSON array of objects, such as [{"name":"Alice","age":30}]. Each object becomes a row in the CSV. If objects have different keys, the tool collects the union of all keys as the header row and pads missing values with empty strings.

What delimiters are supported?

Comma (,), semicolon (;), and tab (\t). Select the right delimiter for your target application. European spreadsheet exports often expect semicolons because commas are used as decimal separators in those locales.

What does "Flatten nested objects" do?

When enabled, nested objects are expanded using dot-notation. For example, {"user":{"name":"Alice","age":30}} becomes two columns: user.name and user.age. When disabled, nested objects are serialized as a JSON string in a single cell.

Can I convert CSV back to JSON?

Yes. Switch the direction to "CSV → JSON". The first row is treated as the header and each subsequent row becomes a JSON object. All values are strings (CSV has no type system).

Is my data sent to a server?

No. All processing runs locally in your browser using pure JavaScript. Your data never leaves your device and is not stored, logged, or shared anywhere.