CSV → JSON

Parse CSV or TSV into JSON, with delimiter detection and optional type coercion.

Private by design. Your input never leaves this browser. Conversions run locally on your device.

What this tool handles

  • The delimiter is detected automatically: comma, semicolon, tab or pipe.
  • A quoted field keeps the commas inside it, and "" is read as an escaped quote.
  • A file with no header row is detected and its columns are named column1 to columnN.
  • Values stay strings until "Infer numbers and booleans" is switched on, so "007" survives as text.
  • A UTF-8 byte order mark is stripped, and header cells are trimmed.
  • Files above 2 MiB are streamed row by row, up to 100,000 rows.

Example

CSV

id;name;role
1;Ada;"engineer, founder"
2;Linus;maintainer

JSON

[
  {
    "id": "1",
    "name": "Ada",
    "role": "engineer, founder"
  },
  {
    "id": "2",
    "name": "Linus",
    "role": "maintainer"
  }
]

When you would use it

  • A spreadsheet export from Excel — A sheet saved on a European locale comes out semicolon-separated with a byte order mark; paste it as is and the delimiter is worked out for you.
  • Fixtures for an API test — Keep the test cases as a small CSV that non-developers can edit, and convert to the JSON array your mock server or test file expects.
  • Seed data for a database — Turn a reference table of countries or plan tiers into an array of objects a migration or seed script can iterate over.
  • A log export with a header row — Convert an analytics or access-log export into JSON so you can filter and group it with jq rather than awk.

Common questions

What happens if two columns have the same name?

The second is renamed with a numeric suffix, so name,name becomes the keys name and name_1. No column is dropped and no value overwrites another.

What about a row with more cells than the header?

The surplus values are collected in a __parsed_extra array on that record and a warning names the row number. A row with too few cells simply omits the trailing keys.

Are newlines inside a quoted field kept?

Yes. A field wrapped in double quotes may span several lines and arrives as one string containing \n. CRLF endings are normalised to \n throughout.

What does an empty cell become?

An empty string by default. With "Infer numbers and booleans" switched on it becomes null instead, and in that mode a value like 007 is read as the number 7.

Related tools

Browse all 25 tools