JSON -> CSV · Local tool
JSON to CSV
Turn a JSON array into a CSV file that opens correctly in a spreadsheet.
Last updated
How do I convert JSON to a CSV that opens properly in Excel?
Paste the JSON into filetity's JSON to CSV converter and the CSV appears beside it, ready to download. It runs inside the browser tab with no upload. The header is the union of the keys in every record, not just the first, so a field that one record omits is still a column. Nested objects and arrays are written into the cell as JSON text rather than being expanded into invented column names. Fields are quoted only when they contain the separator, a quote, a line break or an edge space. The separator can be a comma, a semicolon or a tab, and semicolon is the one to pick when Excel opens a comma file as a single column, which happens on any machine whose regional settings use a comma as the decimal separator.
01 / Your device
the file stays here
02 / Browser memory
the work runs locally
03 / Back to you
saved on this device
When you would use this
Situations, not settings.
- An API response somebody wants in a spreadsheet
- Paste the array and download the CSV. The header is every key seen in any record, so a field that one entry omits is still a column rather than disappearing.
- A file that has to open cleanly in Excel
- The download carries a byte order mark so accented and non-Latin names arrive intact, and you can switch to semicolons when Excel reads commas as one column.
- Handing data to someone who will open it without thinking
- A cell beginning with an equals sign runs as a formula when a spreadsheet opens it. Those cells are escaped by default, so the file opens as the text you had.
How it works / no cloud
A conversion engine, not an upload form.
filetity parses the JSON with the browser's own parser, collects the columns from every record rather than only the first, and writes the CSV in the page. Fields are quoted only when they need it, so the output stays readable, and a value that begins with an equals sign is escaped before download so a spreadsheet treats it as text instead of running it as a formula.
- Offline ready
- Installable app
- No file limit queue
Straight answers
No accordion. Nothing hidden.
- Is it free?
- Yes, with no watermark and no page limit.
- Does it need an account?
- No. There is no account system.
- Is my file processed on my device?
- Yes. The file is read by your browser and never uploaded. There is no server to send it to.
- What formats are supported?
- JSON in, as an array of objects or an array of arrays. CSV out, with a comma, semicolon or tab separator and a header row you can turn off.
- What are the limits?
- Held in memory, so a few tens of megabytes is comfortable. Nested objects and arrays have no CSV representation and are written as JSON text inside the cell rather than being flattened into invented column names.
- Does it work on mobile?
- Yes, on any modern mobile browser. Large files are limited by the memory the phone gives the browser.
- Does it work offline?
- Yes, once the page has loaded. The tool keeps working with no network connection.
- What happens to nested objects inside my JSON?
- They are written into the cell as JSON text. The alternative is inventing column names like address.city.postcode, which looks tidy until two records nest differently and the header grows a column nobody asked for. Keeping the JSON in the cell is lossless and reversible, and you can flatten deliberately before converting if that is what you want.
- Why do my columns come from every record and not the first?
- Because an API that omits a null field would otherwise lose it. If record one has no middle name and record two does, taking the header from record one drops that column for the whole file. Every key seen anywhere becomes a column, in the order it was first encountered, and records missing it get an empty cell.
- Why is a value starting with = escaped in the download?
- Because Excel and Google Sheets treat a leading equals, plus, minus or at sign as the start of a formula, and will run it when the file is opened. A cell containing =1+1 becomes 2, and a hostile one can do considerably worse. The download prefixes those cells so they open as the text you actually had. You can turn it off if you are feeding the file to a program rather than a spreadsheet.
- Does it quote every field?
- Only the ones that need it: a field containing the separator, a double quote, a carriage return, a line feed, or a leading or trailing space. Quoting everything is valid CSV and every parser accepts it, but it makes a file that is unpleasant to read in a text editor and to diff in git, and the point of CSV is that it is plain.
- Can I use a semicolon instead of a comma?
- Yes, and you may have to. Excel reads the separator from your Windows or macOS regional settings, so on a machine where the decimal separator is a comma, a comma separated file opens as one column. Pick semicolon in that case, or tab, which every spreadsheet reads the same way everywhere.
Keep working locally
3 available · more coming