Why convert between JSON and CSV
APIs speak JSON, but spreadsheets speak CSV. The moment you want to eyeball an API response, sort it, share it with a non-developer, or drop it into Excel or Google Sheets, a JSON array is awkward. Going the other way is just as common: someone hands you a spreadsheet and you need clean JSON to feed a script, a database import, or a request body.
This converter does both directions with no setup and no upload. Every byte is processed locally in your browser, so you can convert sensitive rows — customers, amounts, emails — without them ever leaving your machine.
How to use it
- Pick a direction at the top: JSON → CSV or CSV → JSON.
- Choose the delimiter. A comma is the international default; a semicolon is what a Spanish-configured Excel expects.
- Paste your content into the input box. For JSON, use an array of objects; for CSV, always keep the header row on top.
- In CSV → JSON mode, toggle “Convert numbers, booleans and null” depending on whether you want real types or plain strings.
- Copy the output in one click, or download it as a
.csvor.jsonfile.
How the conversion works
Going from JSON to CSV, the tool scans every object and builds the header from the union of all keys. If one object has a field another lacks, the column still appears and the missing cells are left blank. Any value that contains the delimiter, a double quote, or a line break is wrapped in double quotes, and inner quotes are doubled — the RFC 4180 rules. That is what keeps a stray comma from breaking your columns.
Worked example
With this JSON and a comma delimiter:
[
{ "name": "Ann", "city": "New York", "amount": 1500 },
{ "name": "Lou", "city": "Austin, TX", "amount": 980.5 }
]
the output is exactly:
name,city,amount
Ann,New York,1500
Lou,"Austin, TX",980.5
Notice "Austin, TX": it is quoted because it holds a comma. Switch the delimiter to a semicolon and the same cell comes out unquoted (Lou;Austin, TX;980.5), because the comma is no longer the separator.
Types when going back to JSON
| Text in the CSV | With conversion on | As text |
|---|---|---|
28 | number 28 | "28" |
980.5 | number 980.5 | "980.5" |
true | boolean true | "true" |
007 | "007" (leading zero kept) | "007" |
| empty cell | "" | "" |
Nested objects: the limitation
CSV is a flat grid; a cell cannot hold a whole object. When a JSON field contains another object or an array, the tool flattens it to text, storing its JSON form inside the cell. For instance, { "x": 1 } is written as the string {"x":1}. Convert back and that field stays a string, not a real object. If you need to keep the nested shape, flatten your data yourself first — use address_city instead of address.city.
Frequently asked questions
How do I open the CSV in Excel without everything landing in one column?
The download carries a UTF-8 marker so Excel keeps accents intact. If the whole file lands in column A, your Excel is expecting semicolons: come back, pick the semicolon delimiter, and download again. You can also run Data → Text to Columns inside Excel.
What happens to nested objects and arrays?
They become a text string holding their JSON representation inside the cell. That is a limit of the CSV format itself, not of this tool: a flat table cannot contain sub-tables. Flatten those fields before converting if you want separate columns.
Comma or semicolon as the delimiter?
It depends on where the file will be opened. English-locale systems and virtually all programming tools use the comma. Excel installed in Spanish (and in much of Latin America) treats the semicolon as the list separator, so a comma CSV looks scrambled. If the file is headed for a Spanish Excel, choose the semicolon.
Is my data uploaded anywhere?
No. The conversion runs entirely in your browser with JavaScript. You can go offline and it will keep working.