Rows become objects
CSV is a rectangle: headers on row one, values below. CSV to JSON on ToolPin maps that rectangle into [{ "Header": "value", ... }, ...]. Conversion runs in your browser. Nothing is uploaded. The tool is free and needs no account.
If there is no header row, you will get keys like 0, 1, 2 or field1 — add a header in a text editor first. Duplicate headers collide; rename columns so each key is unique.
Delimiter issues are the same as CSV to XLSX: semicolon-separated European exports look like one column. Fix the delimiter before converting.
Types: everything starts as a string
CSV has no types. "42" stays a string unless the converter tries to guess. Guessing is dangerous (leading zeros on PIN codes). Prefer strings in the JSON and coerce in your application, or only enable numeric detection if you trust the column.
Empty cells become "" or are omitted from the object. Decide which your consumer wants. Boolean-looking values (true, false, yes, no) usually remain strings.
UTF-8 is the right encoding. If names break, re-save the CSV as UTF-8.
Quoted commas and newlines inside fields should parse as a single value. Broken quotes in the source will shift keys. Validate with a small sample.
Shape choices
An array of objects is the default and what JSON to CSV on ToolPin expects on the way back. Some tools offer an array of arrays (no keys) or a single object keyed by the first column. Use array-of-objects unless you have a reason not to.
This is not a schema generator and not TypeScript. It will not infer interfaces. It will not nest columns like address.city unless the CSV already used a convention and the UI flattens/unflattens that way.
Privacy and scale
Local conversion is appropriate for payroll and student lists. Do not use an uploading converter for those files. Very large CSVs can freeze the tab; stream them with a script instead.
After you convert
Run JSON Formatter to read the result. Minify if you will embed it. If you need Excel again, you already had CSV — or use CSV to XLSX. Round-tripping CSV → JSON → CSV should preserve headers and values if types were left as strings; nested JSON you add by hand will not survive a trip back to CSV without flattening.
ToolPin does not host your JSON. Copy it into the project that needs it.