Formatomat

Convert JSON to CSV

Turn your JSON files into CSV files in seconds. Conversion happens in your browser, so your files are never uploaded to a server.

  • Files never uploaded
  • Free, no sign-up
  • No queue

or drop them here. You can also paste an image (Ctrl+V).

Free · No sign-up · No upload

How to convert JSON to CSV

  1. 01

    Add your JSON files

    Click “Choose JSON files” or drop them on the page. You can add several at once.

  2. 02

    Check the CSV format

    CSV is already selected. Choose the separator: comma, or semicolon for European versions of Excel.

  3. 03

    Convert and download

    Click “Convert”, then download your CSV file. With several files, grab everything at once as a ZIP.

JSON to CSV: what to know

JSON usually comes from an API, a web app or a database. Accepted shapes: an array of objects, the most common; an object holding its arrays under keys such as results or data, each array then becoming a table, also when they sit one or two levels down, as in an API response ({"data": {"orders": […]}}), and a message names the array read; an array of arrays, taken row by row; JSON Lines, one object per line; an object whose members are themselves records (u1, u2… in a database export), which gives one row per record, its name in an id column; or a single object without any list of records, which gives one row, and a message says so.

The columns gather every key found, in order of first appearance; a key missing from an object gives an empty cell, as does null, and true or false become TRUE and FALSE. Nested objects are not split into columns: they stay as JSON text in a single cell. A key written twice in the same object keeps both values, the second in a column with the suffix _2, and a message says so. A number a spreadsheet cannot keep exact is kept as text, as written, and a message quotes its cells: a 19-digit ID, written in full or in scientific notation (1.234567890123456789e18), or an out-of-range value such as 1e400 or 1e-400, which would become “Infinity” or 0. If you would rather have real numbers, choose “Approximate” in the file’s “Numbers” setting: a number with too many digits then becomes the nearest number a spreadsheet can hold (1.234567890123456789e18 gives 1234567890123456800), and a message quotes its cells; 1e400 and 1e-400 stay as text. Other numbers keep all their digits, up to 17. A JSON file that isn’t UTF-8 is read in the encoding recognised, and a message names it; in a UTF-8 file, an invalid byte becomes “�” without garbling the rest of the text, and a message points that out too.

JSON vs CSV: what’s the difference?

JSONJavaScript Object Notation

The structured data format used by websites and apps (APIs). Both people and programs can read it.

CSVComma-Separated Values

A plain text file where each line is a table row, with values separated by commas or semicolons. It is the most universal data exchange format.

JSON to CSV: frequently asked questions

Why is my JSON file rejected as invalid?

JSON has to follow the standard to the letter. Common causes: a comma after the last item, comments, single quotes instead of double quotes, NaN or Infinity, or a truncated file; the message gives the line and column where reading stops. A JSON Lines file (.jsonl or .ndjson), with one object per line, is accepted. A lone value, such as a number or a string, gives a table of one cell; a JSON with no record at all ([], {} or null) or nested more than 1,000 levels deep is refused with a precise message.

What happens if my JSON contains several arrays?

Each array, customers and orders for example, becomes a CSV file named after its key, and you get them all in a ZIP; a single array gives a CSV file directly. The object’s other fields, next to the arrays, are not carried over, and a message names them.

Are my JSON files uploaded to the internet?

No. The file is read and converted by your browser, on your device. Nothing is sent to a server, and nothing is kept after you close the page.

Does converting JSON to CSV reduce quality?

Not for data in arrays: all their values are carried over, and nested values (lists, objects) are written as JSON text in their cell. A number a spreadsheet cannot keep exact (a 19-digit ID, 1e400…) is kept as text, as written, and a message quotes its cells. With the “Numbers: Approximate” setting, a number with too many digits becomes the nearest number a spreadsheet can hold instead, reported in the same way; 1e400 stays as text. Fields next to the arrays of an object are not carried over, and a message names them.

How many JSON files can I convert?

As many as you like, for free and without signing up. Add them all, then download the results one by one or in a single ZIP. The maximum size depends on your device and browser, with a few caps that protect its memory (for example 20,000 files per archive or 5 million filled cells per workbook: see the home page FAQ); a file over one of them is not converted, and a message says so.

Does it work on iPhone and Android?

Formatomat is designed for recent browsers on computers, iPhone and Android, with no app to install. A conversion the browser cannot do (a format it cannot read or write) is refused with a message that says so.