CSV to JSON Converter

Last updated: October 1, 2026

✅ Free Forever 🔒 Files Stay on Your Device ⚡ No Signup Required 🌐 Works in Any Browser

Drop your file here

or click to browse

Accepted: .csv,text/csv

What is CSV to JSON Converter?

Turn a CSV into JSON — an array of objects or an object keyed by row index, pretty-printed or minified. The delimiter is detected for you, quoted fields are parsed properly, and nothing is uploaded: the file is read and converted in your browser.

Turn off number detection if you have IDs

Start here, because this is the setting that silently damages data.

Auto-convert numbers is on by default, and it turns anything that looks numeric into a JSON number. For actual quantities and prices that is what you want. For identifiers it is destructive: "007" becomes 7, a postcode like 01234 becomes 1234, and a long account or order number can lose its exact value once it stops being a string.

The rule is simple. If a column is an identifier rather than a quantity — customer ID, order number, postcode or zip, phone number, SKU, account number, anything with a leading zero — set Number Detection to Keep as strings. You can convert the genuinely numeric columns yourself afterwards, and that is far easier than discovering three weeks later that every ID beginning with zero is wrong.

A useful test: would you ever do arithmetic on this column? Phone numbers and zip codes are digits, not numbers.

The delimiter is worked out for you

CSV is barely a standard. Files exported in much of Europe use semicolons, because the comma is the decimal separator there. Tab-separated files are everywhere. Some systems emit pipes.

Rather than making you pick, this scans the start of the file, counts commas, semicolons, tabs and pipes, and uses whichever dominates. In practice that means a file from a German or French system just works, which is the usual reason a CSV converter appears to produce one enormous single-column mess.

Quoted fields are handled properly

The other classic failure. A CSV field containing a comma is wrapped in quotes — "Smith, John" is one field, not two — and a quote inside a quoted field is doubled, as in "She said ""no""".

Converters that split on the delimiter get both of these wrong, which is why a file with addresses or free-text notes comes out with rows of different lengths and values shifted into the wrong keys. This parses quotes properly, so those fields survive intact.

One real limitation to know about: a quoted field containing an actual line break is not supported. Exported description, address and comment columns sometimes contain them, and because the file is divided into lines before the fields are parsed, such a field will split across rows and misalign the data. If your JSON comes out with more rows than the spreadsheet had, or values in the wrong keys, that is the cause — the fix is to strip the newlines out of those cells before exporting.

Array of objects, or keyed by index

Array of objects is the default and what you want almost always: [{"name":"Ada","role":"eng"}, …]. It is what APIs expect in a request body, what every language iterates over naturally, and what a test fixture looks like.

Indexed object gives {"0":{…},"1":{…}} instead. Useful when a consumer needs to address a row by position without scanning, or when some existing code expects that shape. Otherwise the array is simpler to work with.

If the first row is not headers, switch First Row to Use Column Indices and the keys become "0", "1", "2" — the right choice for a raw data dump with no header line.

Pretty or minified

Two-space indentation is the default and correct for anything a person will read, paste into a code review, or commit. Minified is for payloads and storage, where the whitespace is just bytes. It makes no difference to what a parser does with it.

The output shows the row and column count so you can sanity-check against your spreadsheet before using it — if the row count is off, look for the line-break problem above.

Nothing leaves your browser

Worth stating for this tool specifically. A CSV is almost always an export of something real: a customer list, a payroll run, transactions, survey responses with names in them. Pasting that into a web converter means handing the whole table to whoever runs it. Here the file is read and parsed on your own machine.

Related tools

JSON to CSV Converter goes back the other way when you need to open API output in a spreadsheet. CSV to Excel Converter produces a real .xlsx instead, and Excel to CSV Converter gets a spreadsheet into CSV in the first place.

How to Use CSV to JSON Converter

  1. Upload CSV

    Upload your .csv file. The tool auto-detects the delimiter.

  2. Choose Format

    Select output format: array of objects, indexed object, or number auto-detection.

  3. Copy or Download

    View the JSON in the preview area, then copy to clipboard or download as .json.

Features

Auto Number Detection

Optionally converts numeric strings to JSON numbers automatically.

Pretty Print

Output formatted with 2-space indentation for readability, or minified for production.

Live Preview

See the first 3 parsed objects before downloading to verify your data.

Frequently Asked Questions

Why did my IDs lose their leading zeros?

Because auto number detection is on by default and turns anything numeric-looking into a JSON number, so "007" becomes 7. Set Number Detection to "Keep as strings" for any identifier column — customer IDs, order numbers, postcodes, phone numbers, SKUs. A good test: would you ever do arithmetic on it?

Do I have to tell it which delimiter my file uses?

No. It scans the start of the file and counts commas, semicolons, tabs and pipes, then uses whichever dominates. That is why files exported in Europe, which use semicolons because the comma is the decimal separator, just work.

Does it handle commas inside quoted fields?

Yes. Quoted fields are parsed properly, including doubled quotes inside them, so a value like "Smith, John" stays one field. Converters that just split on the delimiter get this wrong, which is why files with addresses or free-text notes come out misaligned.

My JSON has more rows than my spreadsheet. Why?

Almost certainly a quoted field containing a line break, which exported description, address and comment columns sometimes have. The file is divided into lines before the fields are parsed, so such a field splits across rows. Strip the newlines out of those cells before exporting.

Should I choose array of objects or indexed object?

Array of objects for almost everything — it is what APIs expect in a request body and what every language iterates over naturally. Indexed object gives you {"0":{…},"1":{…}}, which suits a consumer that needs to address a row by position or existing code expecting that shape.

Is my CSV uploaded anywhere?

No, it is read and parsed in your browser. That matters for this tool in particular, because a CSV is usually an export of something real — a customer list, a payroll run, transactions, survey responses with names in them.