Skip to content

CSV ⇄ JSON

Paste CSV to get JSON, or JSON to get CSV. Delimiters are detected for you, quoted fields and line breaks inside cells are handled properly, and a table preview shows exactly what was parsed.

RunsIn browser
Sign-upNone
UploadsZero
Open file
JSON output
Table preview

How the CSV is read

The parser follows RFC 4180, the closest thing CSV has to a standard. Fields that contain the delimiter, a quote or a line break must be wrapped in double quotes, and a quote inside a quoted field is written twice (""). Windows (CRLF), Unix (LF) and old Mac (CR) line endings are all accepted, and a leading byte-order mark from Excel is ignored.

Delimiter detection tries comma, semicolon, tab and pipe on the first rows and picks the one that splits every row into the same number of columns. European Excel exports usually use semicolons; pick one yourself if the guess is wrong.

With type detection on, plain numbers become JSON numbers, true/false become booleans and null becomes null. Values with leading zeros such as ZIP codes (02134) stay as text so nothing is lost. Turn it off to keep every value as a string.

JSON to CSV

Give it an array of objects and each object becomes a row; the columns are every key that appears, in the order first seen. Nested objects are flattened into dot-separated columns like address.city. Arrays and objects that can't be flattened are written as JSON text in a single cell. An array of arrays is written row for row with no header.

Questions

Is my data uploaded anywhere?

No. Parsing and conversion happen in your browser. Files you open are read locally and never leave your device.

How do I open the CSV in Excel without breaking accents?

Excel sometimes assumes an old encoding. Use Data → From Text/CSV and choose UTF-8, or open the file in Google Sheets or Numbers, which default to UTF-8.

Why are some of my numbers still strings?

Numbers with leading zeros (like 007), thousands separators (1,000), currency symbols or integers larger than JavaScript can hold exactly are kept as strings to avoid changing your data.

What happens if rows have different numbers of fields?

Missing fields are filled with null (or an empty string when type detection is off) and extra fields get column names like field_8. A note under the output warns you when rows are uneven.

How large a file can it handle?

Tens of megabytes work in a modern browser; the table preview shows the first 200 rows to stay fast.