Tool

Online JSON to CSV converter

Converts tabular JSON data to CSV or TSV without sending the content.

Your data is processed locally in your browser and is not sent to our servers.

Shortcut: Ctrl or ⌘ + Enter
Read only · CRLF rows
CSV options

Protection prefixes text that a spreadsheet could execute as a formula with an apostrophe. Disable it only if you need to preserve those strings exactly.

Enter a JSON object or an array of objects to create CSV.

Verifiable example

This array contains two rows with properties that do not always appear in the same object:

[
  { "id": 1, "name": "Ada", "active": true },
  { "id": 2, "name": "Linus", "note": "contains, comma" }
]

With the comma separator, the tool gathers the columns in order of first appearance and produces:

id,name,active,note
1,Ada,true,
2,Linus,,"usa, coma"

The note is cited because it contains the separator. Absentee ownership generates a empty cell.

How it works

Paste a JSON object or an array of objects and press Convert to CSV. Also you can use Ctrl/⌘ + Enter. An object produces a row; each object of a array produces a row in the same order.

The first level properties form the header. If a property appears for the first time in a subsequent row, its column is added at the end. The exit uses CRLF row endings and can separate fields with commas, semicolons, or tabulator.

You can then copy the result or download a .csv file with mark UTF-8 to facilitate opening accents and other Unicode characters in spreadsheets. Visible and copied text does not include that mark.

Nested objects and arrays

The tool does not flatten nested properties. A convention like profile.name could be confused with a literal key that already had that name. Instead, nested objects and arrays are preserved as JSON compact within a cell:

[{ "id": 1, "profile": { "team": "data" }, "roles": ["admin"] }]
id,perfil,roles
1,"{""team"":""data""}","[""admin""]"

This way the original structure is not lost and you can decide later how to treat that column.

CSV separator and escape

  • Comma: usual and default option.
  • Semicolon: useful for applications or locales that require they wait.
  • Tab: generates a TSV table that many editors and spreadsheets can matter.

A field is enclosed in double quotes when it contains the separator, quotes, line breaks or outer spaces. The inner quotes are they duplicate. These rules also apply to the header.

Spreadsheet protection

A spreadsheet can interpret a string that begins with =, +, - or @. The protection is activated by default and prepends a apostrophe to those texts before creating the CSV. Negative numbers are not modified because they are still numerical values.

You can disable the option if you need to keep those strings exactly, but don’t open an untrusted CSV afterwards without checking its cells. The protection also applies to potentially executable column names.

Common errors

  • Scalar root: a string, number, boolean or null does not define columns.
  • Mixed Array: all elements must be objects; they do not combine objects with numbers, strings or other arrays.
  • Empty array: does not allow deducing a header or creating rows.
  • Duplicate keys: different JSON readers can persist values different, so they must be resolved before converting.
  • Trailing commas or comments: are not part of strict JSON.

Syntax errors show line and column when the browser can determine them. To review the document without transforming it, use the JSON validator.

Types, precision and empty cells

  • Strings, booleans and numbers are written as CSV text.
  • Large integers keep all their figures and numbers keep their original notation.
  • null, a missing property and an empty string produce an empty cell; CSV does not by itself preserve the difference between those three cases.
  • Objects and arrays are compactly serialized without converting their floating point numbers.
  • The order of rows and properties is preserved, but CSV does not transport types.

When you import the result, you configure the column types in the application. destination if you need to prevent it from converting long identifiers, dates or leading zeros.

Safety limits

  • Maximum input of 1,000,000 characters.
  • Up to 100 nesting levels.
  • Up to 10,000 rows, 250 columns and 500,000 cells.
  • Maximum output of 2,000,000 characters.
  • The names __proto__, constructor and prototype are treated as text; the table uses lists, sets and maps, not assignments on objects with shared prototype.

Frequently asked questions

Can I convert a single object?

Yes. Its properties form the header and its values ​​produce a single row. For multiple rows use an array of objects.

Why aren’t objects automatically flattened?

There is no single safe convention for naming, arrays, or collisions. The tool preserves JSON nested in a cell to avoid a transformation ambiguous or destructive.

Is my data sent to a server?

No. Validation, column creation and CSV escaping are executed in this tab. The entry is not saved, is not recorded and disappears when closing or reload the page.

Reviewed on by Tools in a Tab.