Skip to content

Convert JSON to CSV online

Flatten nested JSON into a spreadsheet-ready CSV or TSV with dotted column names, custom column order and full quote control. Runs offline.

  • Runs in your browser
  • Files are never uploaded
  • Free, no account
Conversion options
Nested objects become dotted column names.

Comma-separated. Columns you leave out are appended in source order.

contact.email instead of dropping the nesting.

skills.0, skills.1 … instead of one JSON-encoded cell.

Off = quote only when the value contains a delimiter, quote or newline.

Use CRLF, which some legacy importers require.

Makes Excel open accented characters correctly.

JSON input

CSV output

How to convert JSON to CSV

  1. Paste or drop your JSON. An array of objects is the usual input, but single objects, arrays of arrays and column-array objects are all recognised automatically.
  2. Pick a delimiter. Comma is standard; semicolon suits many European Excel installs; tab produces a TSV that pastes straight into a spreadsheet.
  3. Decide how deep to flatten. Nested objects become dotted columns. Arrays either stay as one JSON-encoded cell or fan out into indexed columns.
  4. Order the columns. Keep source order, sort alphabetically, or type an exact list — anything you omit is appended afterwards.
  5. Download. Add the UTF-8 BOM if the file is going straight into Excel, then download the .csv or .tsv.

How each JSON shape becomes a table

Input Result
[{a:1}, {a:2}] One row per object; keys become the header
{a:[1,2], b:[3,4]} Column arrays are transposed into two rows
{a:1, b:2} A single object becomes a single row
[[1,2],[3,4]] Raw grid; columns are named column_1, column_2…
[1, 2, 3] A single “value” column with one row per item

Flattening rules

Every leaf of the document becomes exactly one column, named by its path. Given { "contact": { "email": "a@b.c" }, "skills": ["go", "sql"] } you get:

  • contact.email — always, when flattening is on.
  • skills containing ["go","sql"] — the default, which keeps the array intact and re-importable.
  • skills.0 and skills.1 — when “Split arrays into columns” is on, which is better for pivot tables and filtering.

Records with different keys are unioned: the header contains every column that appears anywhere, and rows missing a field get an empty cell. Column order follows first appearance in the document unless you change it.

Quoting and escaping

By default a field is quoted only when it needs to be — that is, when it contains the delimiter, a double quote, a carriage return or a newline. Quotes inside a quoted field are doubled, per RFC 4180, so She said "hi" is written as "She said ""hi""". Switch on “Quote every field” when the receiving system is strict about types and you want it to treat everything as text.

Getting a clean import into Excel

Two settings matter. First, the UTF-8 BOM: without those three leading bytes Excel assumes the local code page and turns José into José. Second, the delimiter: Excel uses your Windows list separator, which is a semicolon in much of Europe. If double-clicking the file dumps every row into column A, re-export with semicolons — or use the CSV to Excel converter, which sidesteps the problem by writing a real .xlsx workbook.

Everything stays on your device

API dumps routinely contain email addresses, tokens and order histories. This page never sends them anywhere: the JSON is parsed and the CSV assembled by Papa Parse running in your tab, and the download is created from an in-memory blob. Nothing is logged, queued or retained.

Questions

What JSON shapes are supported?

An array of objects is the usual input, but a single object, an array of arrays, and an object whose values are all arrays (column format) are all handled automatically.

How are nested objects turned into columns?

They are flattened with dots: { "contact": { "email": "a@b.c" } } becomes a column named contact.email. Switch flattening off to JSON-encode the nested value in a single cell instead.

What happens to arrays inside a record?

By default an array becomes one JSON-encoded cell such as ["a","b"]. Turn on “Split arrays into columns” to get skills.0, skills.1 and so on.

Why does Excel mangle my accented characters?

Excel assumes the system code page unless the file starts with a UTF-8 byte order mark. Enable “Add UTF-8 BOM” and the accents open correctly.

Can I control the column order?

Yes — keep source order, sort alphabetically, or type an exact comma-separated list. Columns you leave out of the list are appended in their original order.