Paste CSV and get JSON objects keyed by the header row. Quoted commas, escaped quotes and multi-line cells are parsed correctly, with optional type inference.
Waiting for input
Paste CSV with a header row. Everything runs in your browser.
Paste CSV to convert
The first row becomes the keys; every row after it becomes an object.
CSV to JSON runs entirely on your device — nothing is uploaded.
You’re on the Free plan. Compare plans
The first row of the CSV becomes the keys; every row after it becomes one object. That is the whole model, and keeping it that simple is what makes the result predictable.
The parser is written against RFC 4180 rather than splitting on commas. That matters more than it sounds: a field can legitimately contain the separator, a double quote, or an entire line break, and a naive split silently mangles all three. A cell containing Smith, John or a two-line address comes through intact.
Values are strings by default, because that is the only lossless answer — CSV has no types, and a column of product codes like 007 or 1e5 would be quietly destroyed by eager conversion. Turning on type inference converts true, false, null and plain numbers, but only when converting and converting back would give the same text, so 007 stays a string.
Nothing is silently dropped. A row with fewer cells than the header gets empty strings; a row with more keeps the extras under column_N keys; duplicate header names are suffixed rather than overwritten; and each of these is reported in the status bar.
Yes. The parser follows RFC 4180, so a quoted field can contain the separator, a line break, or a double quote escaped by doubling it. A row such as Alice,"Smith, John recommended her" produces one value containing the comma, not two columns.
Because CSV has no type information, and guessing loses data. A column of leading-zero codes or long identifiers would be silently corrupted by automatic conversion. Turn on Infer types to convert numbers, booleans and null — it only converts a value when doing so is reversible, so 007 and +44 remain strings.
Nothing is dropped. A short row gets empty strings for the remaining keys; a long row keeps its extra values under generated keys such as column_5. Both cases are counted and reported in the status bar so you can spot a malformed file.
The second and later occurrences are suffixed — name, name_2, name_3 — so neither column is lost to the other. A blank header cell becomes column_N. Both are reported as warnings, because either usually means the file is not quite what you expected.
Comma, semicolon and tab, either chosen explicitly or detected automatically by counting candidates outside quoted regions. Tab-separated files exported from spreadsheets work without any configuration.