CSV and JSON describe the same tabular data but live in different worlds. CSV is the language of spreadsheets and analysis tools; JSON is the language of APIs and applications. Real work constantly crosses that line — a product list somebody maintained in Excel needs to reach an API, or an API response needs opening in a spreadsheet for review.
This tool converts both directions while handling the awkward parts of CSV for you: fields quoted because they contain a comma, doubled quotes inside a quoted field, and line breaks in the middle of a value. Those are exactly the cases that break when you reach for split(',').
How to use
- Choose a direction — Switch between CSV → JSON and JSON → CSV at the top. Each side keeps its own input, so you can flip back and forth without losing what you pasted.
- Confirm delimiter and header — The delimiter defaults to auto-detect, which handles semicolon-separated European CSV and tab-separated TSV as well as plain commas. Override it if the guess is wrong, and turn off first row is a header for files that start straight into data.
- Pick a JSON shape — Array of objects is what most APIs return. Array of arrays keeps a header row and suits things like the Google Sheets API. Columns groups values per column, which is the shape pandas and many charting libraries prefer.
- Preview, then export — Check the first ten rows in the preview table to confirm the parse looks right, then copy or download. If numbers came through as strings, switch on convert numbers and booleans.
Frequently asked questions
Accented or CJK characters look wrong in Excel.
Excel opens CSV using the system's legacy encoding rather than UTF-8. The file itself is fine.
Open it through Data › From Text/CSV instead, which lets you choose the encoding — pick UTF-8. Double-clicking the file never offers that choice. Google Sheets and LibreOffice assume UTF-8 by default and do not have the problem.
Numbers come out as strings, or get converted when I did not want it.
That is the convert numbers and booleans option. With it on, 123 becomes a number and true becomes a boolean.
Some values need it off. Phone numbers, postal codes like 06234, employee IDs and account numbers all lose meaningful leading zeros the moment they become numbers. If your data has any of those columns, leave conversion off and keep everything as strings.
What happens to nested JSON when converting to CSV?
Nested objects and arrays are kept as JSON strings inside the cell. So {"address": {"city": "Seoul"}} puts {"city":"Seoul"} in the address column.
It does not flatten into address.city columns because once arrays are involved, flattening multiplies the row count and the correspondence to the original breaks. Deciding how to unfold a nested structure is a judgement call, so flatten it to the shape you want before pasting.
Rows shift or columns end up misaligned.
Usually an unbalanced quote. A double quote inside a value has to be doubled (""); with a single one, the parser reads everything after it as one long field.
The error message names the row where it went wrong, so start there. Line breaks inside a value are the other common culprit — those need the whole field wrapped in quotes to parse correctly.
Concepts worth knowing
CSV barely has a standard
RFC 4180 exists but nothing enforces it, and real files vary constantly. The delimiter may not be a comma (much of Europe uses the comma as a decimal point and semicolons to separate), line endings may be LF or CRLF, headers may be absent, and the file may begin with a BOM.
So parsing CSV is less "apply the rules" and more "infer and adapt", which is why this tool auto-detects the delimiter and tolerates several conventions. If you are the one publishing CSV, UTF-8 with commas, CRLF endings and a header row is the combination that travels best.
Why JSON resists becoming a table
CSV is fundamentally a two-dimensional grid: every row shares the same columns and every cell holds a scalar. JSON is a tree, where any value can contain more objects and arrays.
That asymmetry makes JSON → CSV a lossy conversion while CSV → JSON is lossless. For data you intend to keep or treat as the source of truth, JSON is the safer format; think of CSV as an export for humans and spreadsheets rather than a storage format.
What Excel does to your CSV
Excel reinterprets values as it opens them. 1-2 becomes 2 January, long numbers turn into scientific notation like 1.23E+15, and leading zeros disappear. Save that file again and the damage is permanent.
This is a documented problem in science, where gene names were being silently converted to dates often enough that the naming convention itself was eventually changed. Either open CSV read-only for inspection, or use the text import and explicitly set affected columns to "Text".