LocalFirstTools.com — data tools that never leave your device
No upload — everything runs on your device

Convert CSV to JSON

CSV → JSON reads the first row as headers and turns every following row into an object with those headers as keys, honoring RFC 4180 quoting — a field containing a comma, quote or line break is wrapped in double quotes with embedded quotes doubled, so “Smith, Jane” stays one field. The delimiter is auto-detected: comma, semicolon (European Excel exports) or tab.

The size trade is dramatic and exact in direction: on the 7 tabular documents in our sample corpus (arrays of flat objects — users, orders, logs — converted with the same functions this page runs), pretty-printed JSON weighed 2.9× the CSV bytes (min 2.5×, max 3.8×), because JSON repeats every key on every row while CSV names each column once. The flip side: CSV has no types — true and 01234 are just characters until you coerce them.

JSON (array of objects)
CSV
Delimiter is auto-detected when reading CSV

When it goes wrong

“Only a header row was found — add at least one data row.” means the paste stopped after the column names. A one-column result from a many-column file means the delimiter went undetected — check for a semicolon or tab file whose first line contains commas inside quotes. Type coercion is on by default and deliberately conservative: clean numbers, true/false and null convert, but a leading-zero value like 01234 stays a string, because turning it into 1234 would corrupt it; switch coercion off to keep every cell a string.

When to use this

Convert spreadsheet exports into API request bodies, test fixtures, NoSQL imports or JavaScript data structures — without the data touching a server.

This page is a focused view of theJSON ↔ CSV Converter, which has the full set of options.

Frequently asked questions

Are numbers in the CSV converted to JSON numbers?

With the coerce toggle on (the default), clean numeric cells, true/false and null convert to real JSON types — but deliberately not values with leading zeros, so postal code 01234 stays the string "01234". Turn coercion off to keep every cell a string.

How are commas inside a value handled?

Per RFC 4180, fields containing commas, quotes or line breaks are wrapped in double quotes, with inner quotes doubled. The parser honors that, so “Smith, Jane” stays one field.

My CSV uses semicolons — will it parse?

Yes — the delimiter is auto-detected from the first line: comma, semicolon (common in European Excel locales) or tab all work.