CSV to JSON Converter
Both directions, with quoting handled the way the spec says.
Convert CSV to JSON or JSON back to CSV in your browser, with quoted fields, embedded commas and newlines handled properly and nothing uploaded.
- Rows
- 3
- Columns
- 5
- Delimiter
- "," (detected)
| id | name | city | joined | |
|---|---|---|---|---|
| 007 | Smith, John | john@example.com | London, UK | 2026-01-15 |
| 008 | Ana García | ana@example.com | Madrid | 2026-02-03 |
| 009 | O'Brien, Pat | pat@example.com | Dublin | 2026-03-21 |
Everything happens in this browser and no file is uploaded, which matters because a CSV is usually a customer list, an export from an accounting system or something else you would not paste into a stranger’s server. The parser follows RFC 4180: a quoted field may contain the delimiter, line breaks and doubled quotes, and all three survive the round trip intact.
How the CSV to JSON Converter works
CSV looks like splitting on commas and is not. A quoted field may contain commas, line breaks and quotes of its own, and a parser that ignores that mangles every address and every description quietly, producing rows with the wrong column count rather than an error. This one follows RFC 4180.
Also known as: json to csv converter · convert csv to json online · csv parser online · csv to json array · tsv to json converter
Frequently asked questions
Why does my CSV break when a field contains a comma?
Because the field needs to be wrapped in double quotes, and whatever wrote the file either did not do that or whatever is reading it does not honour it. Under RFC 4180 a quoted field may contain the delimiter, line breaks and doubled quotes, all of which are data rather than structure. Rows with the wrong number of columns are reported here with their line numbers rather than being padded out, because a ragged row nearly always means a quoting problem upstream and hiding it turns a visible error into corrupted data.
Why did my zip code lose its leading zero?
Because something converted it to a number, and 01001 as a number is 1001. It is not recoverable afterwards, which is why type conversion here leaves anything with a leading zero as a string, along with values too long to hold in a floating point number exactly. Product codes, phone numbers and IDs all survive. You can also turn conversion off entirely and keep everything as strings.
What delimiter does my file use?
It is detected, and you can override it. Comma is standard, but Excel in most of Europe writes semicolons because the comma is the decimal separator there, and exports from databases are often tab-separated. Detection works by finding which candidate gives the most consistent column count across the first few lines rather than by counting occurrences, since a comma-separated file whose data is full of semicolons would otherwise be misread.
How is nested JSON turned into a flat CSV?
Nested objects become dotted column names, so a user object with a name inside it becomes a user.name column. Arrays of simple values are joined into one cell rather than exploded into columns, because exploding gives a different column count on every row and produces a file no spreadsheet will open sensibly. The header is the union of every key across every record, not just the first one, so a field that appears only in later records is not silently dropped.
Is my data uploaded?
No. The parsing and conversion happen in your browser and no request carries the file. That matters here more than for most tools, because a CSV is usually a customer list, a transaction export or something else that has no business being pasted into a stranger's server.
Why is there a strange character at the start of my first column name?
A byte order mark. Excel writes one at the start of a UTF-8 CSV, and a parser that does not strip it makes it part of the first column's name, so a lookup for id fails against a key that is invisibly different. It is stripped here before anything else happens.
Related calculators
JSON Formatter
Format, minify and validate, with errors located to the exact line and column.
OpenRegex Tester
Test a pattern, and read what it actually says in English.
OpenUnix Timestamp Converter
Both directions, with the unit worked out for you.
Open