Runs on your device · Your file never leaves your device.
Drop a .csv export or paste the text and get a JSON list — one object per row, with the header row as the keys. The parser follows RFC 4180, so quoted fields, doubled quotes, and commas or line breaks inside a cell all survive intact.
The column separator is detected automatically among comma, semicolon, tab and pipe — European exports that use semicolons work without any setting — and you can override it. By default "12" becomes the number 12, "true" becomes a boolean and an empty cell becomes null; switch that off and every value stays exactly the text it was, which matters for phone numbers, postcodes and IDs with leading zeros (those are kept as text either way).
Duplicate or blank header names are given unique names (column_3), a UTF-8 byte-order mark at the start of the file is stripped, and a parse problem is reported with its line and column rather than as a vague message. The preview shows the first 200 lines before you download.
How to convert CSV to JSON
Drop a CSV file, or paste the CSV text into the box.
Leave the separator on automatic, or choose it; decide whether numbers and booleans should be typed.
Press Convert to JSON and check the preview.
Download the .json.
Supported formats and limits
Input
CSV / TSV (.csv, .tsv, .txt) — a file or pasted text
Output
JSON array of objects, pretty-printed, UTF-8
Parsing
RFC 4180: quotes, embedded separators and line breaks
Separator
Auto-detected: comma, semicolon, tab, pipe
Where it runs
In your browser; nothing uploaded
Not for: Rebuilding nested structures — a CSV is flat, so every row becomes a flat object; dot-named columns are not re-nested.
Frequently asked questions
Are my files uploaded to a server?
No. This conversion runs entirely inside your browser using your own device’s processing power. The file never leaves your computer or phone, which is why it also works when your connection drops.
How are numbers, booleans and empty cells handled?
With "Detect numbers, booleans and empty cells" on, 12 and 3.5 become numbers, true/false become booleans and an empty cell becomes null. Values with leading zeros (007) or more than 15 digits stay text so nothing is silently changed. Turn the switch off to keep every value as text.
My file uses semicolons or tabs — do I need to do anything?
No. The separator is detected from the first lines of the file. If the guess is wrong, choose the separator explicitly from the list.
What if a cell contains a comma or a line break?
That is what quoting is for, and the parser handles it exactly as the standard says: a field wrapped in quotes may contain separators, line breaks and doubled quotes.