How to use
- Drop your file(s) into the box above — or click it to browse.
- Conversion starts immediately — no settings needed.
- Click Download on each finished file — or Download all (.zip) for a batch. Nothing was uploaded at any point.
Why naive CSV parsing corrupts data
CSV looks trivial — split on commas, right? — until a cell contains "Seoul, Korea", a quoted quote (""), or a line break inside an address field. Naive split-based converters shred those rows silently. This tool implements the actual RFC 4180 state machine, so quoted fields, embedded commas, embedded newlines and escaped quotes all parse exactly as Excel wrote them.
It also auto-detects the delimiter. European Excel exports use semicolons (because the comma is a decimal separator there), log exports often use tabs — the parser checks the first row and adapts, and tells you what it found.
| Input | Result |
|---|---|
| "Seoul, Korea" | One cell containing the comma |
| "said ""hi""" | said "hi" — escaped quotes unwrapped |
| Cell with a line break | Preserved inside the JSON string |
| a;b;c (European export) | Semicolon auto-detected as delimiter |
| 007 / 1.10 / 9007199254740993 | Kept as strings (lossy to coerce) |
| 42 / -3.5 / true / null | Number / number / boolean / null |
Type coercion, done conservatively
Turning "42" into the number 42 is usually what you want in JSON — but blind coercion destroys data: phone numbers lose leading zeros, product codes like 1.10 become 1.1, and 17-digit IDs lose precision. This converter applies a round-trip rule: a value becomes a number or boolean only if converting it back to a string reproduces the original exactly. Everything else stays a string. Your zip codes are safe.
When NOT to convert CSV to JSON
- Multi-hundred-megabyte exports — browser memory holds the whole file plus the JSON; beyond a few hundred MB, use a command-line tool like
jqor a script. - Data going straight into a spreadsheet — Excel and Google Sheets read CSV natively; JSON is for code, APIs and NoSQL imports.
- CSVs with meaningful duplicate headers — object keys must be unique, so duplicated columns get suffixed (
name_2); verify that matches your intent.