CSV to JSON Converter Online

Convert CSV or TSV to clean JSON in your browser, with number, boolean, ISO-date and null inference and dotted-header nesting. Your data stays local.

This CSV to JSON converter runs entirely in your browser. The CSV you paste or the .csv file you drop is parsed on your device and never uploaded to ArrayKit.

Open the JSON to CSV converter

About CSV to JSON

This CSV to JSON converter parses a pasted CSV, a TSV, or a dropped .csv file and turns each row into a JSON object. It handles quoted fields, embedded commas and newlines, and auto-detects the delimiter, or you can force comma, tab, semicolon or pipe. Turn on type inference to coerce 42 into a number, true and false into booleans, 2020-01-01 into an ISO date, and empty cells into null, so the output is ready to use rather than all-strings. Dotted headers like user.name expand into nested objects, and you can emit a plain array of objects or a map keyed by the first column. It is handy for seeding a database, mocking an API, or importing a spreadsheet export. Everything runs on your device — no rows are uploaded.

Features

How to use the CSV to JSON

  1. Paste your CSV or TSV, or drop a .csv file into the input
  2. Pick a delimiter or leave it on Auto, and set whether the first row is a header
  3. Toggle number, boolean, ISO-date and null inference and dotted-header nesting
  4. Choose an array of objects or a map keyed by the first column
  5. Copy the JSON or download it as data.json

Example

Input

id,user.name,active
1,Ada,true
2,Linus,false

Output

[
  { "id": 1, "user": { "name": "Ada" }, "active": true },
  { "id": 2, "user": { "name": "Linus" }, "active": false }
]

With inference and dotted-header nesting on, id becomes a number, active a boolean, and user.name nests.

Common errors & troubleshooting

Frequently asked questions

How does CSV to JSON handle type inference?
Each string cell is checked in order: empty and 'null' become null, 'true'/'false' become booleans, bare numeric strings like 42 or -3.14 become numbers, and ISO dates like 2020-01-01 normalise to an ISO timestamp. Every coercion is a toggle you can turn off to keep raw strings.
Why do my leading-zero IDs stay as strings?
Values like 007 or 01 are intentionally left as strings so account numbers, zip codes and phone numbers are not mangled. Only numbers without a leading zero (or a single 0) are converted to JSON numbers.
Can I turn a column like user.name into nested JSON?
Yes. Enable dotted-header nesting and a header of user.name, user.role becomes { "user": { "name": ..., "role": ... } } for every row. Headers without a dot are kept flat.
What is the difference between array output and keyed output?
Array output gives a JSON array where each row is one object. Keyed output gives a single object whose keys are the values of the first column, so you can look a row up by its id instead of iterating the array.
Does it work with tab-separated or semicolon files?
Yes. Leave the delimiter on Auto to detect it, or force Tab for TSV, Semicolon for European exports, or Pipe. Quoted fields with embedded delimiters and newlines are parsed correctly either way.
Is my CSV uploaded to convert it?
No. The CSV is parsed and converted to JSON in your browser using JavaScript. The rows you paste or the file you drop never leave your device and are not sent to ArrayKit.

Related tools

All ArrayKit tools