Convert CSV to JSON — without uploading your data
CSV is what databases, CRMs, and spreadsheets export; JSON is what APIs, config files, and JavaScript code expect. Moving between the two is one of the most common chores in data work — and one of the worst things to hand to a random website, because the file is usually a customer list, a transaction log, or some other export you would never email to a stranger. This converter parses your CSV entirely in your browser and produces a pretty-printed JSON array. The header row becomes the object keys, and values that look like numbers or booleans are typed as numbers and booleans rather than left as strings, so the output is ready to use without a cleanup pass. Nothing is transmitted anywhere.
How it works
- Drop a .csv file below or click to choose one.
- The parser reads the header row as keys and auto-types numbers and booleans.
- Download the pretty-printed JSON array straight from your browser.
Frequently asked questions
Is my CSV uploaded to a server?
No. Parsing happens in JavaScript inside your browser tab — the file is read from your disk into memory and never transmitted. That makes it safe for exports containing customer records, financials, or anything else that should not pass through a third-party server. You can confirm in your browser’s network tab that no data leaves the page.
What if my CSV uses semicolons or tabs instead of commas?
The delimiter is detected automatically. Semicolon-separated files (common from European Excel installs), tab-separated files, and standard comma-separated files all parse correctly without any settings.
How are values typed in the JSON output?
Values that parse cleanly as numbers become JSON numbers, and true/false become booleans. Everything else stays a string. Column names come from the first row of the file.
Will a CSV exported from Excel work?
Yes. Excel often writes a byte-order mark (BOM) at the start of the file, which trips up naive parsers and produces a garbled first column name. That case is handled — the BOM is stripped and the header row parses cleanly.