Quick steps
- 01Add CSV filesChoose files or drop them on the page.
- 02Converted on your deviceNothing is uploaded. Adjust settings if you like.
- 03DownloadSave each file, or all of them as one ZIP.

What’s CSV?
Plain-text rows separated by commas. Every spreadsheet and database can read it.
Convert a CSV file into a JSON array of objects, with the header row as keys and numbers and true or false values detected automatically. It works with comma, semicolon and tab-separated files, runs in your browser, and is free.
How to convert CSV to JSON
- Click Choose files, or drop .csv or .tsv files onto the page.
- Each file converts straight away. The separator is detected for you.
- Pick an Indent and decide whether to detect numbers and booleans in the settings panel on the right. Click Apply to all files if you change them after converting.
- Save the .json file, or Download all (.zip).
What the JSON looks like
The output is an array with one object per data row. The first row of the CSV is always used for the keys. Empty lines are skipped.
Header cells are tidied so every key is usable. A blank header becomes column1, column2 and so on, matching its position. A repeated header gets a number added, so a second name column becomes name_2. If a row has more cells than the header, the extra values are kept under column names like column6 instead of being dropped.
Keys are used exactly as written. A header such as address.city stays a single key with a dot in it; the tool doesn’t build nested objects from dotted names.
What the settings do
- Indent. 2 spaces (the default), 4 spaces, or Minified, which puts everything on one line for the smallest file.
- Detect numbers & booleans. On by default. Cells like 42 or 3.5 become JSON numbers, true and false become booleans, the word null and empty cells become null. Values that would change if turned into numbers stay as strings: 007, +1, and integers too large to store exactly. Turn the option off to keep every value as a string, with empty cells as empty strings.
Separators and encodings
The separator is detected from the file, so comma, semicolon, tab and pipe-separated files all work without a setting. Quoted fields with commas or line breaks inside are read correctly, and Windows, Mac and Unix line endings are all handled.
A UTF-8 byte order mark at the start of the file, which Excel adds when it saves CSV UTF-8, is removed so it doesn’t end up in the first key name.
Common problems and fixes
- The first data row became the keys. Your CSV has no header row. Add one with the field names you want, then convert again.
- Zip codes or IDs lost their leading zeros. They shouldn’t here, since values like 007 stay strings. If they were already missing, Excel probably removed them before the file was saved.
- An error mentions an unclosed quote. A field starts with a quote mark but never closes it. Find that row in a text editor and fix the quotes.
- Numbers came through as strings. They contain spaces, currency signs or thousands separators, such as $1,200. Clean those in the spreadsheet first, or handle them in your code.
Privacy
The CSV is parsed with Papa Parse inside your browser, and the JSON is written on your device. Customer lists and exports never leave your computer. Need the reverse? JSON to CSV flattens records back into rows.
Guides
At a glance
- Price
- Free. No sign-up, no watermark.
- Privacy
- Files are processed in your browser and never uploaded.
- Accepts
- CSV, TSV
- You get
- JSON
- Batch
- Convert many files at once and download them as a ZIP
- Works in
- Chrome, Edge, Firefox and Safari, on phones and computers
- Offline
- Keeps working without internet once the page has loaded
Questions
Are my files uploaded?
Never. CSV to JSON conversion runs in your browser, so your files stay on your device.
Can I convert many at once?
Yes. Add as many as you like and download them all as one ZIP.
Is there a size limit?
Files of tens of megabytes are fine on most computers.
Can it create nested JSON from dotted headers like address.city?
No. Each header becomes one key exactly as written, so the result is a flat list of objects.
How are empty cells handled?
With Detect numbers & booleans on, an empty cell becomes null. With it off, it becomes an empty string.
Does it work with semicolon or tab-separated files?
Yes. The separator is detected automatically, and .tsv files are accepted.
Can I get JSON Lines instead of an array?
No. The output is always one JSON array of objects.
What if my CSV has no header row?
The first row is always used as the keys, so add a header row before converting.