Developer
CSV to JSON Converter
Convert CSV to JSON and back, with delimiter detection and type inference that never invents precision.
Runs entirely in your browser. Nothing you paste is uploaded.
0 characters · 0 bytes
This runs entirely in your browser. Nothing you paste is sent to us or to anyone else.
How to use it
- Paste your text into the box marked "Your CSV"Paste either format — the CSV → JSON and JSON → CSV buttons decide which direction you are going, and the input label changes with them. Everything happens inside your browser — nothing is uploaded, so there is nothing for us to store, log or lose.
- Read the result as it updatesThere is no button to press. Pick a direction and the conversion happens as you type. The output recomputes every time you change the text or one of the options above it.
- Check the delimiter it detectedComma, semicolon, tab and pipe are detected automatically, and the Delimiter control lets you override that when a file is ambiguous. European exports are frequently semicolon-separated and read as one column otherwise.
- Decide about the header row and type inferenceWith a header row, each record becomes an object keyed by the header. Type inference turns numbers into numbers — but "00042" keeps its zeros, an integer too long for JavaScript stays text, and only a genuinely empty cell becomes null. Each of those decisions is reported.
- Read the notes about renamed columnsDuplicate headers are suffixed _2 and _3, and empty ones become column_N, because as object keys they would otherwise overwrite each other and lose columns silently.
- Copy or download the resultThe buttons under the output put it on your clipboard or save it as a file, and each one says exactly what it will copy or download. Any note about something the tool changed or deliberately left alone is shown with the result rather than hidden.
About this tool
Convert CSV to JSON, or JSON back to CSV, with the details handled properly: quoted fields, delimiters and line breaks inside quotes, doubled quotes, Windows and Unix line endings, and delimiter auto-detection for comma, semicolon, tab and pipe.
Type inference is careful on purpose. "00042" keeps its leading zeros because it is almost always an identifier, an integer too long for JavaScript to hold exactly stays text rather than silently losing its last digits, and the literal word "null" stays a string — only a genuinely empty cell becomes JSON null. Every one of these decisions is reported under the result.
Understanding the result
With a header row, each data row becomes an object keyed by the header. Duplicate headers are suffixed _2, _3… and empty headers are named column_N — as object keys they would otherwise overwrite each other, which loses columns silently.
Going the other way, the header is the union of every object's keys in first-seen order, so a key that first appears in row 40 still gets its column. Nested objects and arrays are embedded as JSON text inside their cell, because CSV has no nesting of its own.
The notes under the result list every tolerance and inference that was applied. A conversion with no notes did exactly what it looks like it did.
Example
Input
name,qty
Bolt M8,12
"Nut, hex",4Output
[
{ "name": "Bolt M8", "qty": 12 },
{ "name": "Nut, hex", "qty": 4 }
]Limitations
- CSV has no standard for types, encodings or headers — this tool implements RFC 4180 plus the tolerances real spreadsheet files need, and reports each tolerance when it is used.
- Cells starting with =, + or @ can execute as formulas when the file is opened in a spreadsheet. The tool flags them and deliberately does not rewrite them — prefixing an apostrophe would change your data.
- Dates are not inferred. "2026-08-05" stays a string, because guessing date formats (is 01/02 January 2nd or February 1st?) corrupts data more often than it helps.
- Very large files are bounded by your browser's memory; for gigabyte-scale work use a streaming tool.
Questions
Is my data uploaded anywhere?
No. The whole tool is JavaScript running on your device — there is no request to send. You can confirm it by opening your browser's network tab, or by disconnecting from the internet and using the page anyway.
Why did my order IDs come out as text instead of numbers?
They either start with a zero or are longer than 15 digits. In both cases converting to a JavaScript number would corrupt them — dropping the zeros, or rounding the final digits. The tool keeps them as text and says so in the notes; that is the correct behaviour, not a bug.
My file uses semicolons — is that still CSV?
Yes. Excel saves "CSV" with semicolons in locales where the comma is the decimal separator. The tool detects semicolons, tabs and pipes automatically, tells you which it picked, and lets you override it.
How do I convert a single JSON object?
Wrap it in square brackets to make it a one-row array: [ { … } ]. CSV is a table format, so the converter works on arrays of rows.
Last updated 2026-08-16.
Related tools
- JSON Formatter and Validator
Format, minify and validate JSON entirely in your browser.
- Whitespace and Line Break Cleaner
Find and remove hidden characters, non-breaking spaces and stray line breaks — without breaking non-Latin text.
- XML Formatter and Validator
Format, minify and check XML for well-formedness, with every error located in your text.