ÆON Toolhub

CSV to JSON Converter

This free CSV to JSON converter runs in your browser and decides each column's type as a whole, not cell by cell, so a ZIP code keeps its leading zeros and a long order ID keeps every digit. It names the delimiter it found, shows what it decided per column, and lets you override any of it.

JSON

What does this converter do?

It turns CSV into JSON in your browser, and it makes one decision differently from the usual approach: the type of a column is decided for the column as a whole, never cell by cell.

  • Per-column typing. One ZIP code with a leading zero keeps the entire column as text, so you never get 2139 in one row and "02139" in the next.
  • It shows what it decided. A panel lists every column with the type chosen, how many values were empty, and the reason a column was held as text.
  • Override any column. Force text, number or boolean when you know better than the detection does.
  • Delimiter detection that names itself. Comma, semicolon, tab or pipe, with the one it found written on screen and a way to change it.
  • RFC 4180 parsing. Quoted fields can contain the delimiter, line breaks and escaped quotes.
  • Nested output from dot-notation headers, and nothing ever leaves your browser.

Why per-column typing matters

CSV has no types. Every value in the file is text, so a converter has to decide what each one means. Deciding cell by cell is where data quietly breaks:

Value in CSVDecided per cellDecided per column
021392139, zero gone"02139"
1000110001"10001"
1234567890123456789rounded by the float"1234567890123456789"

Look at the middle column. The same field comes back as a number in one row and a string in another, because each cell was judged alone. That mixed field is worse than losing the zero: it passes a quick glance and breaks the thing that reads it later.

Deciding for the whole column means one value with a leading zero protects every other value in that field.

The delimiter problem nobody warns you about

Excel in most of Europe saves CSV using semicolons. The reason is arithmetic, not preference: in those locales the comma is the decimal separator, so 3,14 is a number and a comma delimiter would make the file impossible to read.

The file still ends in .csv, so a converter expecting commas collapses every row into one long field and produces JSON with a single garbled key. This page detects the delimiter, tells you which one it found, and lets you correct it.

What this tool does not do

  • It does not convert dates. 03/04/2026 is March in the United States and April in most of Europe, and nothing inside a CSV says which. A wrong guess corrupts data silently, so dates stay exactly as written.
  • It does not read .xlsx files. That is a zipped XML package, not text, and unpacking it is a different problem. Save as CSV first.
  • It does not repair broken CSV. When a row has more or fewer fields than the header, it tells you which row, rather than guessing what you meant.
  • It does not stream very large files. Everything runs on the page's main thread, so a file of tens of megabytes can make the tab stall. That is a real limit, not a hidden one.
  • It does not upload anything. Which also means there is no size cap imposed by a server, only your device's memory.

Is my data private?

Yes. The parser is plain JavaScript running in your own browser, and the file never leaves your device. Nothing is uploaded, logged or stored, there is no account and no email field, and closing the tab clears everything. The JSON appears the instant you paste, because there is nothing to submit and no one to wait for.

Frequently asked questions

Why do ZIP codes lose their leading zero in CSV to JSON conversion?

Because the type of each cell is usually inferred on its own, so 02139 looks like a number and becomes 2139. This converter decides the type for the whole column instead: if any value carries a leading zero, the entire column stays text, and the panel tells you that is why.

What does deciding the type per column actually change?

It prevents mixed types inside one field. Per-cell inference can give you 2139 in one row and the text 02139 in the next, in the same column, which breaks whatever reads the JSON afterwards. Per-column typing guarantees every row in a field has the same type.

My CSV uses semicolons instead of commas. Will it work?

Yes. Excel in most of Europe saves CSV with semicolons, because the comma is the decimal separator there. This converter detects comma, semicolon, tab and pipe, names the one it found on screen, and lets you pick a different one if the detection is wrong.

What happens to very long ID numbers?

They stay as text. JavaScript numbers are 64-bit floats, so an ID beyond about sixteen digits cannot be stored exactly and would come back rounded. The converter tests each value for that and keeps the whole column as text rather than silently changing your data.

Does it handle commas inside quoted fields?

Yes. The parser follows RFC 4180, so a quoted field can contain the delimiter, line breaks and escaped double quotes without breaking the row. A parser that splits on every comma turns a name like "Silva, Joao" into two separate fields instead of one.

Can I get nested JSON instead of flat objects?

Yes. Turn on nested output and a header written in dot notation becomes a nested object, so columns named user.name and user.age produce a user object containing both. Headers without dots are unaffected, and you can switch between flat and nested at any time.

Is my file uploaded anywhere?

No. The parsing and conversion run entirely in your browser using its own JavaScript engine. Nothing is sent to a server, nothing is logged and nothing is stored, and closing the tab clears everything. That is also why the output appears the moment you paste.

What if my CSV has duplicate or missing headers?

Duplicate headers are renamed with a numeric suffix, because two identical keys in one object would silently overwrite each other. An empty header becomes column_1, column_2 and so on. Both situations are listed in the issues panel so you know the file was adjusted.

Does it convert dates?

No, and that is deliberate. Date formats are ambiguous: 03/04/2026 is March in the United States and April in most of Europe, and nothing in the file says which. Guessing wrong corrupts data silently, so dates are left exactly as they appear in your CSV.

Can it read Excel files directly?

No. It reads real CSV text, not the .xlsx binary format, which is a zipped XML package and a different problem entirely. Export or save your spreadsheet as CSV first, then paste it here or load the file, and any delimiter Excel used will be detected.

Rate CSV to JSON Converter & help shape it

This tool is free and still growing. Tell us what works, what you would change, and what is missing. Your feedback is what decides what we build next.

Your rating

Last updated: September 19, 2026