📊 CSV ⇔ JSON Converter
Convert CSV ⇔ JSON in both directions with custom delimiter, header row toggle, quoted values, and empty cell handling.
🔗 Related Tools
📖 Where people get stuck
Convert between CSV and JSON, choosing the delimiter, whether there is a header row and how quotes are handled. Everything runs in the browser. CSV has no official specification — RFC 4180 documents common practice after the fact and binds nobody. Whether a conversion goes wrong therefore depends on what the software on the other end calls CSV.
| Case | What happens | What to do |
|---|---|---|
| Opens as garbage in Excel | When Excel opens a CSV without a BOM it falls back to the system default encoding. On a Japanese Windows install that is a Shift_JIS variant, so a UTF-8 file comes out mangled. The file is fine and Excel simply guessed wrong, but to whoever received it the file is broken. | Save CSV destined for Excel as UTF-8 with BOM: the EF BB BF prefix tells Excel definitively that it is UTF-8. The BOM is a nuisance everywhere else, though — read the file programmatically and the first column name carries an invisible character, so what you think is id is really id and the key never matches. Producing separate files for Excel and for machine-to-machine use ends up causing the fewest arguments. |
| Commas or newlines inside a value shift the columns | CSV is a format in which a value can contain the delimiter itself. Addresses and free-text fields routinely contain commas, and comments span lines. Quoting handles it, but a double quote inside a quoted value has to be doubled as "" — and a great deal of CSV in the wild does not follow that rule. |
When rows come out with the wrong column count, set them aside in a separate file rather than dropping them. The cause is nearly always inconsistent quoting, and one bad row corrupts every row after it. If you are the one producing the file, switching the delimiter to tab (TSV) removes most of these incidents, because values almost never contain a tab. The CSV cleaner will surface the mismatched rows first. |
| Numbers and dates get silently rewritten | CSV carries no type information: everything is text and the reader guesses. The result is a familiar set of corruptions — leading zeros disappear (a postal code 0123456 becomes 123456), hyphenated values turn into dates, and long digit strings become scientific notation (phone numbers, sixteen-digit IDs). Converting to JSON does not save you if anything that looks numeric becomes a number. |
Decide up front that IDs, postal codes and phone numbers are strings. On the JSON side that means "id": "0123456" in quotes. There is an Excel-only trick of writing ="0123456", but it breaks in every other tool. In practice the most reliable fix is to remove the open-in-Excel-and-save-again step from the workflow, because that single round trip is where the types are lost. |
CSV to JSON cannot express nesting. Dotted column names such as user.name are a common convention for it, but not a standard, so it depends entirely on what reads the file. Going the other way, any field holding an array or an object loses information in whatever flattening you choose. Rather than forcing non-tabular data into CSV, JSON Lines (.jsonl), one JSON object per line, holds up better and streams. CSV earns its place when a human is going to open it in a spreadsheet.
📖 How to Use
-
1
Set direction and delimiterSelect CSV to JSON or JSON to CSV, and choose a delimiter: comma, tab, semicolon, or pipe.
-
2
Enter dataPaste your data into the left input. Use the Sample button to load example data.
-
3
Copy the resultThe converted result appears on the right. Click Copy to copy it to your clipboard.
❓ Frequently Asked Questions
Does it support CSV without a header row?
Are quoted values with commas handled correctly?
Does it handle large files?
🐛 Found a bug or issue with this tool?
Free to use, no signup. Even just the steps to reproduce are helpful. Reports go directly to the operator and help us fix issues.
Thanks for your report!
Your report has been delivered to the operator and will be used to improve the tool.