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.
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
2139in 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 CSV | Decided per cell | Decided per column |
|---|---|---|
02139 | 2139, zero gone | "02139" |
10001 | 10001 | "10001" |
1234567890123456789 | rounded 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/2026is 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
.xlsxfiles. 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.
Related tools
DeveloperJSON FormatterFormat, beautify, and validate JSON right in your browser.- DeveloperText Diff CheckerCompare two texts and see exactly which words changed.
DeveloperBase64 Encoder / DecoderEncode text, images and files to Base64, and decode them back.
DeveloperToken CounterCount tokens exactly, check the context window, estimate the cost.
DeveloperTimestamp ConverterConvert Unix timestamps to dates and back, in any unit.
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.
Last updated: September 19, 2026