CSV ⇄ JSON converter

Convert CSV to JSON and JSON back to CSV. Paste text or open a file; the result appears as you type. Your data never leaves your device.

Convert

CSV options

Converted entirely in your browser. Nothing is uploaded, so it is safe for customer lists, exports and other private data.

How to convert CSV to JSON

  1. Choose CSV → JSON.
  2. Paste your CSV, drop a .csv file onto the input box, or click Open file….
  3. Check the status line: it shows the number of rows and columns and the delimiter it detected.
  4. Click Copy or Download .json.

With "First row is a header" ticked, every row becomes an object whose keys are the column names:

name,city,zip
Anna,Linz,04020

becomes

[
  { "name": "Anna", "city": "Linz", "zip": "04020" }
]

Choose "Array of arrays" to keep the rows as plain lists instead. Empty cells become null. Duplicate or empty column names are made unique (name, name_2, column_3).

How to convert JSON to CSV

  1. Choose JSON → CSV.
  2. Paste a JSON array of objects (or open a .json file).
  3. Pick the delimiter your spreadsheet program expects, then copy or download the CSV.

Every key that appears in any object becomes a column, in the order it first appears. Nested objects are flattened into dotted column names, and arrays are written as JSON text:

[{ "id": 1, "address": { "city": "Wien" }, "tags": ["a", "b"] }]

becomes

id,address.city,tags
1,Wien,"[""a"",""b""]"

If the JSON is a single object that wraps one array (for example {"data": [...]}), the array is used. Invalid JSON is reported with its line and column.

Numbers, true/false and values that must stay text

With "Detect numbers and true/false" ticked, 42 becomes a number and true a boolean. Values that only look like numbers are kept as text so nothing is damaged:

  • leading zeros, such as postcodes and IDs: 04020, 007
  • phone numbers with a plus sign: +43 …
  • integers too large to be stored exactly in JSON numbers, such as long order or account IDs
  • values with spaces around them

Untick the option to keep every value as text.

Semicolon CSV and decimal commas

Spreadsheet programs set to German, Austrian and many other European locales save "CSV" with semicolons, because the comma is the decimal separator there. The converter detects the delimiter automatically. Tick Decimal comma to turn 12,50 into the number 12.5. When converting back, choose the semicolon delimiter and tick Add UTF-8 BOM so umlauts open correctly.

What is formula (CSV) injection protection?

A cell that starts with =, +, - or @ may be run as a formula when the CSV is opened in a spreadsheet program. If your JSON contains text from other people, such a cell could do harm. With the option ticked, text cells that start with one of these characters get a leading apostrophe ('=SUM(A1)), which spreadsheet programs show as plain text. Real numbers such as -5 are not changed.

Frequently asked questions

Is my data uploaded?
No. The conversion runs in your browser. You can check it in the Network tab of your browser's developer tools or use the page offline once it has loaded.
How large can the file be?
Files of several megabytes convert in a moment. Very large files (hundreds of megabytes) are limited by your device's memory.
My CSV has quotes and line breaks inside cells. Does that work?
Yes. Fields in double quotes may contain delimiters, line breaks and doubled quotes (""), as in RFC 4180.
Some rows have more or fewer fields than the header.
Missing fields become null; extra fields get new columns named column_N. The status line tells you how many rows were affected.
What does it cost?
Nothing. There are no ads, no sign-up and no limits.