CSV to JSON converter
CSV or TSV, processed locally.
Enable JavaScript to convert CSV locally in your browser.
All values stay strings. TSV? Select Tab.
Headers produce objects; turn headers off for arrays.
Convert rows in three steps
- Paste text or choose one UTF-8 .csv, .tsv or .txt file. Choose Comma, Tab or Semicolon explicitly; the separator is never guessed.
- Keep First row is headers for an array of objects, or turn it off for an array of arrays. Select Convert to JSON.
- Review the read-only JSON and select Copy JSON. If copying fails, use Select result and copy it yourself.
Try example fills an empty input and restores Comma and headers without converting. Editing, settings, a new file or another conversion clears the previous result and copy receipt. Clear removes private content and keeps your settings. Text clears when you leave or refresh.
IDs, formulas and quoted values stay text
name,id Ada,001 Lin,9007199254740993
The IDs become "001" and "9007199254740993". Values such as true, null and =1+1 remain strings; formulas are never evaluated.
A quoted field can contain separators and line breaks. Two double quotes inside a quoted field represent one quote: "say ""hello""" becomes "say \"hello\"". After a closing quote, only a separator, a record line break or the end of input is allowed.
Spaces and empty fields are preserved. Blank records are not skipped. Every data row must have the same number of columns. Headers must be nonempty and unique, compared exactly and case-sensitively; spaces in valid headers are preserved. A header-only file produces []. Output preserves the original header order, including numeric keys, __proto__ and constructor.
CSV dialect and local file limits
Input is limited to 200,000 UTF-16 units, files to 1,000,000 bytes, data rows to 10,000 and columns to 200. Output is limited to 1,000,000 UTF-16 units, uses two-space indentation and has no final line break. Exceeding a limit rejects the whole conversion without truncation.
Files must be strict UTF-8. Only the first BOM is ignored; additional BOM characters remain data. NUL characters are rejected. CRLF, LF and CR record endings are accepted. Quoted line endings from a file are preserved; editing or pasting uses the textarea’s actual text, which browsers can normalize to LF. No claim is made to preserve bytes from before a paste.
This tool follows the quoted-field and double-quote model described in RFC 4180, with LF, CR, Tab, Semicolon and trailing empty fields as explicit supported choices. It does not support every Excel or CSV dialect, Excel/XLSX files, automatic types, URL imports, downloads or JSON-to-CSV conversion. Files are read in this browser without uploading their contents or names.
For existing JSON, use the JSON formatter. For text length, use the word and character counter. Read about privacy and optional analytics. Content never transfers automatically between tools.
Last reviewed: 2026-10-24