Arrays land as JSON text in one cell
A tags array appears as ["a","b"] in a single cell. Splitting it would change either the row count or the column count, so it is left intact and readable.
Getting JSON in front of someone who works in Excel means flattening the nesting and picking sensible columns. This converter does both, and writes a genuine workbook with typed cells and a frozen header rather than a CSV with the wrong extension.
Reading JSON
Auto-detect reads the first rows and picks the separator that splits them consistently.
Turn off when the file starts straight into data. Columns are then named column_1, column_2, and so on.
Turns "42" into a number and "true" into a boolean. Values with leading zeros stay text so IDs and zip codes survive.
Which worksheet to convert. Filled in once the workbook is read.
Dotted path to the array of records, such as data.items. Leave empty to use the whole document.
Turns {"user":{"id":7}} into a user.id column. Arrays are kept as JSON text.
Pick the encoding the file was written in. Wrong encoding shows up as garbled accents.
Comma-separated words that should become null instead of text.
Writing Excel
Snappy is the default across Spark, DuckDB and pandas. Gzip is smaller but slower to read.
Turns a user.id column back into {"user":{"id":7}}.
Excel needs a byte order mark to open UTF-8 files with accents correctly.
Rows per row group. Larger groups compress better; smaller groups let readers skip more.
conversion-preroll
This short ad is what keeps the converter free.
Nested, self-describing records that every language can read. Spreadsheet workbooks with sheets, formatting and cell types.
| JSON | Excel | |
|---|---|---|
| Type information | Strings, numbers, booleans, null | Per cell — text, number, date, boolean |
| Structure | Nested objects and arrays | Sheets of rows and columns |
| Compression | None | Zipped XML |
| Typical file size | Largest — keys repeat on every record | Smaller than CSV, larger than Parquet |
| Schema | Implicit, per record | None beyond the header row |
| Human-readable | Yes, though verbose | Only in a spreadsheet app |
| Tool support | Every language, natively | Excel, Google Sheets, LibreOffice |
A tags array appears as ["a","b"] in a single cell. Splitting it would change either the row count or the column count, so it is left intact and readable.
Every leaf becomes a column. For deeply nested API responses, set a record path to target the part you actually need.
1,048,576 rows and 16,384 columns. Anything beyond that is truncated, with a warning.
A workbook is immediately usable; a JSON file is a support ticket.
Reviewers can filter, sort and add a comment column in Excel.
Flattened columns with real types are what pivot tables need.
sticky-bottomYour file is downloading
post-conversion