CSV → JSON Converter
Turn CSV tables into structured JSON arrays.
Your data is processed entirely in your browser and is never uploaded.
Tool workspace
Drag & drop file here or browse
Options
Use the first row as object keys.
Convert CSV to JSON in three steps
Paste or upload
Drop in CSV: comma, semicolon, tab, or pipe delimited. We auto-detect.
Set options
Choose delimiter, header handling, and output indentation.
Convert & export
Click Convert, then copy or download the JSON array. All offline.
Giving a flat table some structure
CSV → JSON parses a table and turns it into an array of objects. Delimiters are auto-detected (comma, semicolon, tab, or pipe) and quoted fields holding commas or newlines are read correctly per RFC 4180. With the default "first row is a header", that row becomes the object keys; turn it off and synthetic keys (column1, column2, …) are used instead. You can skip blank lines and choose the output indentation. Everything runs locally. Measured on 8GB Win10, Node 24, V8 2240MB heap (median of 3, seed 42, 10 cols): 1K (94KB) 37.7ms, 10K (938KB) 41.3ms, 100K (9.4MB) 1,531ms, 500K (46.8MB) 5,553ms parse and 12,686ms pipeline, 1M (93.7MB) OOM at 2GB heap. Preview capped at 100K chars, full file is the download.
Common issues & tips
Ragged rows break the table
A row with a different number of cells than the others is a structural error. The parser reports the exact line instead of silently padding or dropping, which would change your data.
id,name,email 1,Ada,ada@example.com 2,Alan
Quoted fields keep their commas
A field wrapped in double quotes may contain a delimiter or a newline and stays one cell. The parser handles this, so a comma inside a quoted name never splits the row.
name,city "Turing, Alan",London
Header row sets the keys
With "first row is a header" on (default), the first row becomes the object keys. Turn it off to keep every row as data and get column1, column2, … instead.
id,name 1,Ada 2,Alan
Delimiters are auto-detected
The parser figures out whether your file uses commas, semicolons, tabs, or pipes. You can also pin a delimiter manually if a value happens to look like a different one.
Try these
id,name,email 1,Ada,ada@example.com 2,Alan,alan@example.com
The header row becomes the object keys.
name,city "Turing, Alan",London
The quoted field stays one cell despite the comma.
pair this withReverse it → JSON → CSV·Format the result → JSON Formatter·Validate the result → JSON Validator
Go deeper
Frequently asked questions
How does the large-file mode work?
If you drop a file larger than 15 MB, the tool switches to a background worker. It reads the file off the main thread, converts it in one pass, and gives you a capped preview in the editor. The full result is always available as a download. Nothing is uploaded.Read the honest limits in our large-file guide →
Is my CSV uploaded anywhere?
No. Conversion happens entirely in your browser. Your data never leaves your machine.
Can it handle large CSV files?
Yes. Files above about 15 MB switch to a dedicated large-file mode: the file is read and converted in a background worker, you see a capped preview in the editor, and the full JSON is a one-click download. Nothing is uploaded. The only ceiling is your device's memory. See how large-file mode works →
Which delimiters are supported?
Comma, semicolon, tab, and pipe, plus auto-detection that figures it out for you. Quoted fields containing delimiters and newlines are handled correctly (RFC 4180).
How are headers handled?
With "First row is a header" on (default), the first row becomes the object keys. Turn it off to get synthetic keys (column1, column2, …) and keep every row as data.