JSON ↔ CSV Converter
Turn a JSON array into clean CSV (or vice-versa). Pick a delimiter, flatten nested objects with dot-notation, toggle the header row.
What this converter does
JSON and CSV are the two formats most often passed between APIs, spreadsheets, ETL jobs and dashboards. JSON keeps types and nesting; CSV is flat and friendly to Excel, Google Sheets, BI tools and most data warehouses. This converter goes both ways. JSON to CSV takes an array of objects and emits one row per object, with column headers built from the union of every key it sees. Nested objects are flattened with dot-notation (user.city), so you do not lose information. Arrays are emitted as their JSON-encoded form by default. CSV to JSON reverses the trip: it parses RFC-4180-style quoted fields (escaped double-quotes, embedded newlines), converts true, false, null and pure numbers to their typed JSON values, and rebuilds nested objects from any dotted keys it finds in the header. The whole conversion runs locally on your device — your data never leaves the browser, never travels to our servers, and is not stored, indexed, logged, or shared. That privacy guarantee matters for the kind of data people most often run through a converter: API responses with PII, customer exports, internal analytics, anything from a production database.
How to use it
Pick a direction, pick a delimiter, paste your data, and the output updates live.
- Pick the direction — Use JSON → CSV when you have an API response or a JSON export and want a spreadsheet. Use CSV → JSON when you exported a table from Excel, Sheets or a database and want structured data.
- Choose a delimiter — Comma is the universal default. Use semicolon for European Excel exports, Tab for clipboard data from Excel/Sheets, or pipe for log files where commas already appear in the data.
- Decide on flattening — Leave Flatten nested objects on if your JSON has nested data — you will get columns like
address.cityandaddress.zip. Turn it off if you would rather embed nested objects as JSON strings inside one CSV cell. - Copy or paste back — Use the copy button to put the result on your clipboard. CSV pastes straight into Excel, Sheets or a code editor; JSON pastes into Postman, your IDE, or anywhere a JSON body is expected.
Escape and quoting rules
CSV does not have a single official spec, but RFC 4180 captures the consensus rules every modern parser follows. A field is quoted with double-quotes if and only if it contains a delimiter, a double-quote, a newline or a carriage return. Inside a quoted field, double-quotes are escaped by doubling them (say "hi" becomes "say ""hi"""). Newlines inside a quoted field are kept as literal newlines — the parser counts unescaped quotes to know whether it is still inside a field. null and undefined values become empty cells, which means a round-trip JSON → CSV → JSON cannot distinguish empty string from null. Numbers, booleans and the literal null are recognized when going CSV → JSON, so a CSV cell containing true becomes a JSON boolean.
How values are escaped
A few examples that show what the converter does in tricky cases. The delimiter in these examples is a comma.
| Input value | CSV cell |
|---|---|
hello | hello |
a,b | "a,b" |
say "hi" | "say ""hi""" |
line1\nline2 | "line1\nline2" |
null | (empty) |
{a: 1, b: 2} | 1,2 with flatten on |
Frequently asked questions
Is my data uploaded anywhere?
No. Conversion happens entirely in your browser. The page does not import any third-party CSV library — the parser and serializer are part of the page itself. Open DevTools → Network and you will see no request fires when you paste or convert.
What if my objects have different keys?
The header row is the union of every key seen across all objects, in order of first appearance. Rows that are missing a key produce an empty cell for that column. This is how Pandas, Excel imports and most ETL tools handle the same situation.
How are arrays inside JSON exported?
Arrays are JSON-stringified into a single CSV cell, so an object like {tags: ["a","b"]} becomes a cell with the literal text ["a","b"]. That preserves all the data but is not great for spreadsheet pivots — if you need one row per tag, expand the array yourself before converting.
Why does my European Excel file open as one column?
Excel in many European locales uses semicolon as the CSV delimiter so the comma can stay free for decimals. Switch to the ; delimiter chip in the converter and your file will round-trip cleanly.
Does CSV → JSON detect numbers and booleans?
Yes. Cells whose entire content is a number, true, false or null are converted to the matching JSON type. Anything else stays a string. Leading zeros are kept as strings to avoid mangling phone numbers and ZIP codes.
Can I use it for very large files?
Up to a few megabytes, yes. Beyond that the browser tab may stutter because everything happens synchronously on the main thread. For multi-hundred-megabyte exports use a streaming command-line tool like jq, csvkit or miller.
EN
PT
ES