JSON to Excel Converter
API responses and nested JSON to a clean Excel workbook — one sheet per list.
Paste JSON or JSON Lines, drop a file on this box, or use Open file. Nothing is uploaded.
Workbook
About the JSON to Excel Converter
Paste an API response or open a .json / .jsonl file and get a real Excel workbook. Nested objects are flattened into dot-path columns (customer.city); lists of objects become their own linked sheets (with row_id and parent_id columns so rows can be matched), or one row per item, or JSON text; lists of plain values are joined into one cell. A top-level object that holds several lists becomes several sheets, and its other fields get a sheet of their own.
Cells are typed — numbers, TRUE/FALSE and ISO 8601 dates become Excel values — while numbers with more than 15 significant digits (IDs, payment references) are written as exact text instead of being rounded. Headers are bold and frozen, columns are sized to fit, and values longer than Excel’s 32,767-character cell limit are reported. The conversion runs in a background thread on your device.
How to use it
- Paste JSON into the box, drop a file on it or use Open file (.json, .jsonl, .ndjson). JSON Lines — one JSON value per line — is recognised automatically.
- Choose what happens to lists of objects (Linked sheets, One row per item or JSON text), lists of values and nested objects.
- Check the sheets in the preview: the tabs show each sheet with its number of rows.
- Download Excel (.xlsx).
Examples
[{"id": 1001, "customer": {"name": "Asha", "city": "Pune"},
"items": [{"sku": "A-1", "qty": 2}, {"sku": "B-2", "qty": 1}]}]Sheet “data”: row_id | id | customer.name | customer.city
1 | 1001 | Asha | Pune
Sheet “data.items”: parent_id | sku | qty
1 | A-1 | 2
1 | B-2 | 1parent_id points at row_id, so a lookup (or a pivot) joins the two sheets.
The same JSON with “Lists of objects: One row per item”
id | customer.name | customer.city | items.sku | items.qty 1001 | Asha | Pune | A-1 | 2 1001 | Asha | Pune | B-2 | 1
{"payment_ref": 12345678901234567890}Text cell 12345678901234567890
As a number it would be stored as 12345678901234500000.
Common uses
- Opening API responses, webhooks and database exports in Excel or Google Sheets.
- Handing nested JSON (orders with items, users with addresses) to colleagues as a normal spreadsheet.
- Turning JSON Lines logs or analytics exports into a filterable sheet.
- Checking exported data visually before an import.
How the JSON is laid out
- A top-level array becomes one sheet; each item is a row.
- A top-level object with lists becomes one sheet per list, named after its key, plus a sheet for the remaining fields (such as
countornext). Wrappers with a single key, like{"data": …}, are unwrapped. - An object of objects (
{"IN": {…}, "FR": {…}}) becomes one row per entry, with the entry name in akeycolumn. - Nested objects become
parent.childcolumns, or JSON text. - Lists of objects become linked sheets named
parent.listwithparent_id→row_id, one row per item (other fields repeated; several lists in one record multiply), or JSON text. - Lists of values such as
["gst","priority"]are joined with “, ”, kept as JSON text, or handled like lists of objects.
Columns appear in the order keys are first seen; missing keys leave empty cells.
Values and Excel limits
JSON numbers (RFC 8259) become Excel numbers when they have at most 15 significant digits — Excel’s precision — and exact text otherwise. Whole numbers of 12 to 15 digits (order IDs, timestamps) get the number format 0, because Excel’s default General format would show them as 1.23457E+11. true/false become TRUE/FALSE, null an empty cell. Strings in ISO 8601 form (2026-09-28, 2026-09-28T14:30:00) become Excel dates when ISO dates is on; strings with a time zone (…Z, +05:30) stay text, because Excel dates have no time zone.
Per Excel’s specifications and limits, a sheet has at most 1,048,576 rows and 16,384 columns and a cell at most 32,767 characters: longer tables continue on extra sheets, and longer texts are cut and listed.
Limitations
- JSON must be valid: comments, trailing commas and single quotes are reported with their line and column. Up to 100 MB of input.
- The row and column limits of Excel apply; JSON whose keys are IDs or dates may need “Nested objects: JSON text” to stay within 16,384 columns.
- Formulas are never created: text that starts with = is written as text.
- Exploding several lists in one record multiplies rows; linked sheets avoid that.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
How do I convert nested JSON to Excel?
Paste it and keep the defaults: nested objects become dot-path columns, and each list of objects becomes a linked sheet with parent_id pointing to the parent row’s row_id. Choose One row per item instead if you want a single flat sheet.
Why is a number written as text?
Excel keeps 15 significant digits. A longer number — a 16- to 20-digit ID or reference — would be rounded, so it is written as exact text. Numbers up to 15 digits stay real numbers; whole numbers of 12 or more digits get the format 0 so Excel shows every digit instead of scientific notation.
Does it work with JSON Lines (NDJSON)?
Yes. When the input is not one JSON document but every line is, the lines are treated as an array — one row per line.
Is there a size limit?
Files up to 100 MB can be opened; the practical limit is your device’s memory. Very large inputs are converted in a background thread so the page stays responsive.
Is my JSON uploaded?
No. It is parsed and converted in your browser, and the .xlsx file is created on your device.