JSON to CSV Converter Pro
Convert JSON or NDJSON arrays into CSV with file drop, column reorder, flatten, and Excel BOM.
What this tool does
Convert JSON arrays or NDJSON lines into CSV with optional flattening, column reorder, and Excel-friendly UTF-8 BOM—all in your browser.
How to use
- Drop a .json file or paste a JSON array of objects (or NDJSON, one object per line).
- Choose delimiter, flatten nested objects, or enable Excel UTF-8 BOM as needed.
- Reorder columns if needed, then copy or download the CSV result.
Formula
Each object becomes one row; keys become column headers (dot notation when flattening nested objects).
Examples
Simple object array
Input: [{"name":"Ada","role":"Engineer"},{"name":"Grace","role":"Scientist"}]
Output: name,role Ada,Engineer Grace,Scientist
Each object becomes one CSV row with matching column headers.
Three-column export
Input: [{"sku":"A1","qty":10,"price":9.99},{"sku":"B2","qty":5,"price":14.5}]
Output: sku,qty,price A1,10,9.99 B2,5,14.5
Numeric values stay as plain CSV cells for Excel import.
Learn more
Preparing JSON for Excel
Excel imports CSV most reliably when columns are flat and UTF-8 encoded. Nested JSON keys become column headers—preview the output before importing large files.
If you need to round-trip data, keep a copy of the original JSON and use the CSV to JSON converter after editing in Excel.
Why Excel changes your values
Opening a CSV by double-clicking it lets Excel guess every column type, and it guesses badly on exactly the fields that matter. Long numeric IDs past about fifteen digits are rounded and redisplayed in scientific notation, and the original digits are gone once you save. Leading zeros are stripped, so a zip code of 01234 becomes 1234 and a product code of 007 becomes 7.
Anything that looks like a date gets converted to one. The gene name SEPT1 becomes a September date, and a version string like 1.10 can be read as a number and lose its trailing zero.
The fix is the import path, not the file. In Excel use Data → From Text/CSV, then set the affected columns to Text in the preview before loading. That single change prevents every conversion above, and it works on files this tool produces without any modification.
Encoding and delimiter traps
Excel on Windows does not assume UTF-8. Without a byte order mark, accented characters, currency symbols, and CJK text arrive as mojibake. Enable the Excel UTF-8 BOM option here and the file opens correctly; other tools ignore the mark, so leaving it on is usually safe.
Delimiters are a locale problem rather than a preference. Excel follows the system list separator, so a comma-delimited file opens as one long column on machines configured for German, French, or Spanish locales, where semicolon is expected. If a colleague reports a single mashed column, switch the delimiter to semicolon rather than debugging the data.
Values containing the delimiter, a quote, or a newline are quoted automatically and internal quotes are doubled, per RFC 4180. Any spreadsheet or CSV parser reads that correctly — a naive split on commas will not.
What happens to nested objects and arrays
CSV is flat and JSON is not, so something has to give. With flattening on, nested objects become dot-notation headers: a user object holding a name produces a user.name column. Depth is not a problem — three or four levels simply produce longer headers.
Arrays are the genuinely lossy case. An array of tags becomes indexed columns (tags.0, tags.1, tags.2), which means the column count is set by whichever record has the most elements and most rows end up with blanks. If your array is the actual subject of the data — line items on an order, say — converting the array itself is usually the better move, one row per item.
Keep null distinct from empty in your own head: a missing key and a key set to null both land as an empty cell, and that distinction cannot be recovered from the CSV afterwards.
Large files and NDJSON
Log pipelines and database exports usually emit NDJSON — one JSON object per line, with no wrapping array and no commas between records. Enable NDJSON mode for those; pasting them as-is fails validation because the payload is not a single JSON document.
Conversion runs in your browser, so the practical ceiling is your available memory rather than an upload limit, and nothing is transmitted anywhere. Very large exports are best split before conversion — and because processing is local, files under NDA or internal customer data can be converted without leaving your machine.
Common use cases
- Export API responses for Excel
- Convert sample datasets for testing
- Prepare JSON logs for spreadsheet review
FAQ
How do I convert JSON to CSV for Excel?
Paste a JSON array of flat objects, choose comma delimiter, then download or copy the CSV and open it in Excel.
Does this tool support nested JSON?
Enable flatten nested objects to use dot notation keys, or use the Nested JSON to CSV tool for complex structures.
Can I convert NDJSON?
Yes. Enable NDJSON mode and paste one JSON object per line.
Can I reorder CSV columns?
After converting, use the column order controls to rearrange columns and convert again.
Is my JSON uploaded to a server?
No. Conversion runs entirely in your browser.
Why did Excel turn my IDs into scientific notation?
Excel guesses column types when you double-click a CSV, and long numbers past roughly fifteen digits get rounded and redisplayed as 1.23457E+16. Import via Data → From Text/CSV and set that column to Text in the preview. The CSV itself is correct — Excel's default import is what changes it.
Why are my leading zeros missing?
Same cause: Excel read the column as a number, and numbers have no leading zeros, so 01234 becomes 1234. Set the column to Text during import rather than reformatting afterwards — by then the digits are already gone.
Why does my CSV open as one column?
Excel splits on your system's list separator, which is a semicolon in many European locales rather than a comma. Switch the delimiter to semicolon and the same data opens into proper columns.
How are arrays inside my JSON handled?
They expand into indexed columns such as tags.0 and tags.1, so the widest record determines the column count. When the array is the real subject of the data, convert the array itself instead so each element becomes its own row.
Source notes
- CSV output uses the first object's keys as column headers.
- RFC 4180-style quoting is applied when cell values contain commas or quotes.
Explore related workflows
JSON & CSV Pro workflow
- CSV to JSON Converter ProConvert CSV rows into a JSON array with file drop, header detection, and type inference.
- Nested JSON to CSV ConverterFlatten nested JSON objects into CSV using dot notation column keys.
- CSV to HTML TableConvert CSV data into a styled HTML table snippet for emails and web pages.
- JSON Formatter and ValidatorValidate, pretty-print, and minify JSON with clear parse error messages.
Export pipeline
- JSON to XML ConverterConvert JSON objects into XML documents for legacy APIs and integrations.
- JSON to YAML ConverterConvert JSON objects into readable YAML configuration files.
- JSON to TOML ConverterConvert JSON objects into TOML configuration files for Rust, Python, and DevOps tools.
- CSV to YAML ConverterConvert CSV spreadsheets into YAML lists for configs and DevOps files.
More related tools
Last reviewed: 2026-06-02