Drop a JSON file containing an array and download it as CSV. Object keys become columns (missing values stay empty), and the output opens cleanly in Excel. Everything runs locally — nothing is ever uploaded.
Files never leave your device
Drop a JSON file, or click to browse
JSON
What This Tool Does
This tool converts a JSON array into a CSV file without leaving your browser. Drop a JSON file, choose the delimiter you want for the output — comma, semicolon, tab, or pipe — and download a CSV built from your array's contents.
Everything happens locally. A small WebAssembly module loaded into your browser tab reads your JSON, works out its shape, and writes the CSV on your own device, so there's no upload step and no server involved at any point.
Tip:This tool expects a JSON array at the top level, not a single object. If your data is one big object with a list buried inside it — like a "records" or "items" field — pull that inner array out into its own file first, since that's the array this converter will turn into rows.
Turning a JSON Array Into Columns
If your array holds objects, every distinct key across all of them becomes a column, in the order each key is first seen — not alphabetized, and not limited to whatever keys happen to be in the first object. That matters when your data comes from an API where later records sometimes carry an extra field the earlier ones didn't have; that field still gets its own column, just added wherever it first turns up.
If your array holds arrays instead, each inner array becomes a row exactly as written, position by position, with no column names generated at all — this shape assumes you already know what each position means.
Nested Values and Mismatched Keys
Real-world JSON is rarely flat. When a value is itself an object or an array — a nested address, a list of tags — it gets JSON-stringified into its cell rather than expanded into extra columns or dropped. You end up with one CSV cell holding compact, valid JSON text that you could parse again later if needed, instead of losing that structure entirely.
Objects with inconsistent keys are common too, especially with optional fields. Rather than erroring out or misaligning columns, any object missing a given key just gets an empty cell there, while the rest of the row lines up correctly under the shared header.
Why the Output Opens Cleanly in Excel
CSV files don't carry built-in information about their text encoding, which is exactly why Excel sometimes turns accented text into garbled characters when you open a file saved by some other tool. To avoid that, every CSV this tool produces is prefixed with a UTF-8 byte-order mark — a few invisible bytes Excel specifically looks for to know it should read the rest of the file as UTF-8. Vietnamese names, currency symbols, and other accented text all come through intact as a result, whether you open the file on Windows or Mac.
Where to Go Next
Need to go the other direction? CSV to JSON turns a CSV or TSV file back into JSON, with a choice of array-of-objects or array-of-arrays output. If your source data is an Excel workbook rather than JSON, Excel to CSV and CSV to Excel cover conversions between spreadsheets and CSV.
Frequently asked questions
What does my JSON need to look like for this to work?
The top level has to be an array. If it's an array of objects, each object's keys become CSV columns automatically. If it's an array of arrays, each inner array becomes a row exactly as given, with no column names attached. A single object, a plain string, or a number at the top level isn't accepted — you'll get a clear message that the JSON must be an array, rather than a confusing or empty result.
My objects don't all have the same keys — what happens to the missing ones?
The column list is built from every key seen across all your objects, in the order each one first appears — not just the keys in the first object. Any object that's missing a given key simply gets a blank cell in that column, instead of causing an error or shifting other values into the wrong place.
What if one of my values is itself a nested object or array?
It gets written into the cell as compact JSON text, quotes escaped as needed so the CSV stays valid — for example a value like an address object turns into a literal, one-line JSON string sitting inside that single cell. It isn't split across multiple columns, and it's still valid JSON if you ever need to parse that cell's text back out.
Why does the downloaded file open correctly in Excel, with Vietnamese or other accented text intact, instead of showing broken characters?
The CSV this tool produces starts with a UTF-8 byte-order mark, three invisible bytes at the very start of the file. Excel uses that marker to recognize the file as UTF-8 and display accented characters correctly; without it, Excel tends to guess a different encoding and diacritics turn into garbled symbols. Plain text editors and other tools ignore the marker, so it doesn't cause problems anywhere else.
Can I choose a different output delimiter, like semicolon or tab instead of comma?
Yes — the output delimiter is a separate option from comma, semicolon, tab, or pipe. That matters if you're targeting a region where Excel's default list separator is a semicolon rather than a comma, or if you'd rather produce a TSV-style file for a tool that expects tabs.
Is my JSON file uploaded to a server to be converted?
No. Conversion runs through a WebAssembly module loaded directly into your browser tab — your JSON is read, its array walked, and the CSV built entirely on your own device, with nothing sent over the network at any point.