JSON to CSV converter.
Convert JSON to CSV with nested objects flattened into dot-notation columns and every value escaped properly. Everything runs in your browser, nothing is uploaded. Related: JSON to Excel → · All free tools →
Preview shows the first 50 rows. Copy and Download always contain every row.
Convert JSON to CSV without the browser
The jsonbolt desktop app treats CSV as a first-class copy format. It parses at 3 GB/s, so the same two clicks work on an export that would freeze a tab.
Open the file
Drag it in at any size, or press Win + J⌃ ⌥ J for clipboard JSON.
Select the array
Click the array you want as rows. Only that subtree is exported, not the whole document.
Copy it as CSV
Edit → Copy Selection Value As → CSV, or File → Export Selection Value As to write a file.
XML, YAML and JSON export are built in too.
How JSON becomes rows and columns
CSV is a grid: every row has the same columns, and every cell holds one value. JSON is a tree. Converting between them is mostly a question of what to do with the parts of the tree that do not fit a grid, and the honest answer is that the choice is a trade rather than a rule.
The array is the rows. If the document is an array of objects, each object becomes a row. If it is an object wrapping an array, the array is used and the outer keys are ignored, because that is almost always what an API response looks like. A single object with no array becomes one row.
Nested objects become dot-notation columns, so {"user":{"name":"Ada"}} is a column headed user.name. Arrays of scalars are joined into a single cell, which keeps the column count stable. Arrays of objects are indexed into separate columns instead, because folding several objects into one cell would throw away the structure you converted the file to keep.
How this converter handles the details
- Every key becomes a column. Records with different shapes are unioned in first-seen order and missing values are left empty, so a field that appears on only some records is never silently dropped.
- Escaping follows RFC 4180. Values containing the delimiter, a double quote, or a newline are quoted, and internal quotes are doubled.
- Formula injection is blocked. A value starting with
=,+,-or@is prefixed with a single quote, so a spreadsheet reads it as text rather than executing it. Plain numbers are exempt, so-5stays a number. - Delimiter is switchable between comma, semicolon and tab. Semicolon is the one to reach for in locales where Excel expects it.
- null becomes an empty cell, not the literal text
null. Booleans staytrueandfalse. - Everything runs locally. Your data never leaves the tab.
FAQ
How do I convert JSON to CSV?
Paste an array of objects into the pane above. The table preview and the CSV appear as you type, and the Download .csv button saves the result. Everything runs in your browser, so nothing is uploaded.
What happens to nested objects?
They are flattened into dot-notation columns. An object like {"user":{"name":"Ada"}} becomes a column headed user.name. Nesting can go as deep as it likes; each leaf gets its own column.
What happens to arrays inside a record?
Arrays of scalars are joined with a separator into one cell, which keeps the column count stable. Arrays of objects are indexed instead, so tags[0].id and tags[1].id become separate columns, because collapsing them into one cell would lose the structure.
What if my records have different keys?
Every key seen anywhere becomes a column, in the order it was first encountered, and records missing that key get an empty cell. Nothing is dropped, which matters when only some records carry an error field.
Does it handle commas and quotes in values?
Yes. Values containing the delimiter, a double quote, or a line break are wrapped in quotes with internal quotes doubled, per RFC 4180. Fields beginning with =, +, - or @ are prefixed with a single quote so a spreadsheet treats them as text rather than a formula. Plain numbers are exempt, so a negative value like -5 still imports as a number.
Is my JSON uploaded to a server?
No. The converter is a small script running in your browser tab. Your data never leaves your machine, so it is safe for exports containing customer records or API keys.
How do I convert a very large JSON file to CSV?
Browser tools hold the whole document in tab memory, which gets painful past a few hundred megabytes. The jsonbolt desktop app parses at 3 GB/s: open the file, select the array you want, then use Edit, Copy Selection Value As, CSV.