Your files never leave this device — 100% in-browser

CSV to JSON Converter

Turn spreadsheet exports into a clean JSON array of objects — parsed correctly, typed carefully, and never uploaded.

Drop a CSV and get a JSON array of objects keyed by the header row — parsed with a real RFC 4180 state machine, so quoted commas and line breaks inside cells never corrupt a record. Type coercion is deliberately conservative: "007" and "19.90" stay strings.

Last verified 2026-08-15 — this tool passed 79 automated end-to-end checks

Drop .csv files here, or click to browse
converts to JSON · RFC 4180 · Excel-ready output
01 — PRIVATE
Customer lists and exports are parsed in your browser only. For data you cannot paste into random websites, that is the whole point.
02 — CORRECT PARSING
A real RFC 4180 parser: quoted fields, escaped quotes, commas and line breaks inside cells, semicolon and tab variants.
03 — SAFE TYPES
Numbers and booleans are converted only when lossless — "007" and "1.10" stay strings instead of silently becoming 7 and 1.1.

How to use

  1. Drop your file(s) into the box above — or click it to browse.
  2. Conversion starts immediately — no settings needed.
  3. 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.

Parsing behavior reference
InputResult
"Seoul, Korea"One cell containing the comma
"said ""hi"""said "hi" — escaped quotes unwrapped
Cell with a line breakPreserved inside the JSON string
a;b;c (European export)Semicolon auto-detected as delimiter
007 / 1.10 / 9007199254740993Kept as strings (lossy to coerce)
42 / -3.5 / true / nullNumber / 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 jq or 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.

Frequently asked questions

What JSON shape do I get?

An array of objects, with keys taken from the header row: [{"name":"…","qty":7},…] — the shape APIs and MongoDB imports expect. Files without a header convert to arrays of arrays if you strip the header row first.

Why did my numeric-looking code stay a string?

Because converting it would change it — leading zeros, trailing zeros after a decimal, or precision beyond 15–16 digits. That is deliberate data protection.

Is my customer data uploaded?

No. Parsing runs as JavaScript on your machine; the network tab shows zero requests during conversion.