DevKits
Concept

How to Convert JSON to Excel / CSV — Online, Free, No Upload

Learn how to convert JSON arrays to CSV/Excel spreadsheets — flatten nested objects, pick columns to keep, handle date formatting, and download CSV files that open correctly in Excel and Google Sheets.

Last updated:

Core Concepts

Array JSON vs nested JSON
The simplest case: an array of flat objects ([{"name":"Alice","age":30}, ...]). Each object becomes a row; each key becomes a column header. The tricky case: nested objects ([{"user":{"name":"Alice","email":"a@x.com"}}]). You need to either flatten (user.name → column) or pick specific paths to extract. Our converter supports both with dot-notation path selection.
Handling Excel quirks: encoding, formatting, and limits
CSV files are just text files with commas — but Excel doesn't default to UTF-8. If your JSON has non-ASCII characters (CJK, accents, emoji), add a BOM (byte order mark) at the start so Excel reads it as UTF-8. Excel also auto-formats: numbers that look like dates ('2023-01-02') or large integers ('1234567890') may be auto-converted — fix by prefixing with a single quote in the CSV. Row limit: ~1,048,576 per sheet.
Picking and renaming columns
Raw API responses often have 30+ fields, but your spreadsheet only needs 5 columns. Our converter lets you pick which JSON keys to include as columns, rename them (api_field_name → 'Human-friendly label'), and reorder them. This avoids sending clients a 50-column spreadsheet when they only care about 5 fields.

Frequently Asked Questions

What format should I use — CSV or XLSX?

CSV for most cases — human-readable, works with any tool (Excel, Google Sheets, Python pandas), git-diffable, and files are small. XLSX for cases where you need formatting (colors, fonts, frozen panes), multiple sheets, or cells exceeding CSV escape limits. Our tool exports CSV; for XLSX, use a converter or a library.

How do I handle JSON arrays of arrays (not objects)?

If your JSON is an array of arrays ([['Alice',30],['Bob',25]]), there are no keys to use as column headers. Our converter falls back to column_1, column_2, etc. If your JSON has a separate header row, use a manual pre-processing step or supply column names.

Try these related tools