CSV ↔ JSON Converter
Convert CSV to JSON or JSON to CSV, with correct handling of quoted fields, commas inside quotes, and escaped quotes — not a naive comma-split.
Copied to clipboard.
About this CSV / JSON converter
Real-world CSV is trickier than "split on commas" makes it look. A field can contain a comma if it's wrapped in double quotes, a quoted field can contain a literal double quote if it's written twice ("" inside a quoted field means one literal "), and a quoted field can even contain a line break and still count as a single cell. This converter parses character by character, tracking whether it's currently inside a quoted field, rather than splitting on the delimiter directly — which is exactly the kind of CSV that breaks simpler tools: names with commas in them, addresses with embedded quotes, notes fields with line breaks.
Comma is the standard delimiter, but semicolon is common in regions where a comma is used as the decimal separator (much of continental Europe, for instance), since spreadsheet software there often exports CSV with semicolons to avoid ambiguity with decimal numbers. Tab-separated values (TSV) are common for data copied directly out of spreadsheets. All three are available here in both directions.
Converting CSV to JSON with "first row is headers" checked uses that row as property names for every following row, producing an array of objects — the most common, spreadsheet-like shape. Unchecking it treats every row as data and generates generic column1, column2, and so on property names instead. Converting JSON to CSV expects an array: either an array of objects (property names become column headers, with the full set of columns being the union of every key found across all objects, so rows missing a particular key simply get an empty cell there) or an array of arrays, treated as rows directly.
Nothing you paste or convert is uploaded anywhere; the entire conversion happens locally in your browser.
Converting the same data back and forth — CSV to JSON and then that JSON back to CSV — reproduces the original content exactly, including any quoted commas or escaped quotes, since both directions use the same quoting rules consistently rather than one side being stricter than the other.
Frequently asked questions
Does this handle commas inside quoted CSV fields correctly?
Yes. The parser tracks whether it's inside a quoted field character by character, so a comma (or even a line break) inside quotes is treated as part of that field's content, not as a delimiter or row break.
Which delimiter should I use?
Comma is the global standard and the right default for most files. Use semicolon if your CSV came from software in a region where commas are decimal separators, or if a comma-delimited attempt looks garbled. Use tab for files copied directly from a spreadsheet as TSV.
What happens if my JSON objects don't all have the same keys?
The output columns are the union of every key found across all objects. Any row missing a particular key gets an empty cell in that column rather than causing an error.
Can I convert CSV that doesn't have a header row?
Yes, uncheck "first row is headers." Every row is then treated as data, and generic column names (column1, column2, and so on) are used instead.
Is my data uploaded anywhere?
No. The entire conversion, in both directions, happens locally in your browser; nothing is sent to a server.