JSON to CSV Converter Online Free
Paste any JSON array and get a clean CSV instantly. Handles nested objects, custom delimiters, header control, and quoted fields. Everything runs in your browser.
Flattening nested JSON into a proper CSV, header union and all
The hard part of JSON to CSV conversion is never the delimiter. It is deciding what to do with nested objects, arrays, and rows that do not all share the same fields. This tool solves that with two distinct passes: a dot notation flattener that turns nested objects into flat keys like address.city, and a header union step that scans every row before writing a single line, so no column is ever silently dropped just because it was missing from the first object.
Conversion happens entirely client side. There is no fetch or XHR call in the script, so your JSON and the resulting CSV never leave the browser tab.
The flattening algorithm
Every object is walked recursively. A nested object becomes a set of dot joined keys at the parent level. An array is not recursed into at all, it is serialized whole with JSON.stringify and placed in a single cell, since arrays do not have a natural column mapping the way nested objects do.
That escaping rule matches the convention documented in RFC 4180: a field is wrapped in double quotes if it contains the delimiter, a quote character, or a line break, and any quote inside the field is doubled rather than backslash-escaped. That is the same escaping rule Excel, Google Sheets, and pandas all expect on import.
Flatten depth and what each level means
| Depth setting | Effect |
|---|---|
| 1 level | Only top-level nested objects are expanded, anything nested two levels deep is stringified as JSON in one cell |
| 2 levels | Two levels of nesting produce dot-joined column names before stringification kicks in |
| Unlimited | Recursion continues at every depth, so deeply nested config-style objects fully expand into columns |
Delimiter and encoding options
Custom delimiter
Comma, semicolon, tab, or a custom character you type in. Semicolon is the practical default for European locales where Excel treats comma as a decimal separator and misreads comma-delimited files.
UTF-8 BOM
Optionally prepends the byte order mark to the output. Excel on Windows uses this marker to detect UTF-8 encoding correctly, otherwise it may misinterpret accented characters using the system default codepage.
Format specifications and libraries
- RFC 4180 is the closest thing CSV has to a formal specification, and the source of the quoting rules this tool implements.
- PapaParse is the standard JavaScript CSV parsing and generation library if you need this logic at scale in an application.
- pandas.json_normalize performs the equivalent dot-notation flattening server side in Python, useful for comparing behavior on the same dataset.
- Byte order mark explains why the BOM option matters specifically for Excel on Windows.
Getting JSON into a spreadsheet
Turning a REST API response into a spreadsheet for a nontechnical teammate, preparing JSON log exports for a pivot table, converting a MongoDB export into a format an accounting tool can import, and flattening nested configuration or survey data into a single tabular file for quick analysis in Excel or Google Sheets.
FAQ: JSON to CSV Converter Online Free
Yes. No account, no signup, and no payment ever required. The tool is free permanently.
No. All processing runs inside your browser. Nothing is sent anywhere. You can safely convert sensitive or proprietary JSON data.
Nested objects get flattened using dot notation. For example, user.name and user.email become two separate columns. You can control how many levels deep the flattening goes using the Flatten depth option.
Yes. Choose from comma, semicolon, tab, pipe, or enter any custom character. Semicolon is useful for European locales where comma is the decimal separator.
Enable the Add BOM option before downloading. This adds a byte order mark that tells Excel the file is UTF-8 encoded, preventing character encoding issues with special characters and non-Latin text.
Not necessarily. A single JSON object is also accepted and will produce a one-row CSV. An array of objects produces one row per object, which is the most common use case.
From the blog
Deep dives on the things these tools touch
Minification, UUID collisions, diffing API responses, and the other questions that come up around this toolset.