Converting JSON to Excel without Power Query takes three steps in a browser: paste a JSON array of objects, click Convert to Excel, and download a file named converted.xlsx with the first-seen object keys preserved as worksheet headers. The whole conversion runs locally inside the page, so the JSON text never leaves the browser, and the resulting workbook is a flat, editable table ready for review, sharing, or downstream import. Strings, numbers, booleans, and null values land as ordinary cell values; nested objects and arrays are written as compact JSON text in a single cell because a flat worksheet cannot honestly represent nesting without inventing a column mapping. The parser rejects invalid JSON, empty arrays, primitive items, and empty objects up front, and enforces hard caps of 1,000,000 input characters, 10,000 rows, 200 columns, and 200,000 cells so the tool can promise either a complete download or no download at all.
Power Query is a powerful feature inside Excel, but it is not the only path from a JSON payload to a usable spreadsheet. It requires a working Excel installation, a signed-in Microsoft account in some configurations, working knowledge of the M language for non-trivial shapes, and a willingness to click through several Transform dialogs before a clean table appears. For one-off conversions of API samples, configuration exports, analytics responses, or test fixtures, that overhead rarely pays off. A dedicated browser-side tool that produces the same flat .xlsx artifact in a single click can be a much better fit.

When Power Query Adds Too Much Friction
Power Query's Get Data → From File → From JSON path is designed for recurring data refreshes against a stable source. It expects a saved .json file on disk, builds a query with transformation steps you have to author, and stores those steps inside the workbook for future refreshes. Each of those design choices becomes friction when the input is a JSON snippet you just copied from a curl response, a docs page, or a logging console.
Common pain points include:
- Excel must be installed locally; Power Query does not exist in Excel for the web.
- JSON files saved with a .json extension are required by the importer; raw text from the clipboard has to be wrapped or saved first.
- Nested arrays of objects trigger an Expand dialog that defaults to no columns and has to be repeated for every level.
- Text values that begin with "=" are interpreted as formulas during refresh, which is a safety and data-integrity concern.
- Column order is driven by the inferred table shape rather than the order fields first appear in the source objects.
If none of those steps will be repeated and the JSON is essentially the table you want, the Power Query machinery is heavier than the task needs.
How the JSON to Excel Converter Differs
The JSON to Excel Converter is a browser tool that accepts a JSON array of objects and emits a single-sheet .xlsx file named converted.xlsx. The parser and the SheetJS writer both run in the page; nothing is POSTed to a backend, and there is no account or session to manage. Because the file is generated on demand, the original JSON text stays under your control the entire time.
The contract is intentionally narrow. It does not infer a schema, rename fields, flatten nested keys, or guess a type from a value's spelling. It does not fetch a URL, merge files, repair malformed JSON, or run spreadsheet formulas. What it does is preserve the order in which keys first appear across the array, write strings, numbers, booleans, and nulls as ordinary cell values, and serialize anything nested as compact JSON text inside a single cell so the flat worksheet stays honest about what it can represent.
For a broader look at why a no-upload path matters for sensitive payloads, the guide to converting JSON to an Excel table without uploading it walks through the same privacy boundary from a different angle.
Convert JSON to Excel in Your Browser
Follow these steps to go from a JSON snippet on your clipboard to a downloaded workbook.
- Prepare a JSON array of objects. The top-level value must be an array, and every array item must be a non-empty object with at least one key. A valid starting shape looks like [{"id":1,"name":"Ada"},{"id":2,"name":"Bo"}].
- Paste the JSON into the converter's text area on the JSON to Excel Converter page. Empty arrays, primitive items, or empty objects will be rejected up front.
- Click Convert to Excel. The page validates the payload against its limits, then loads the locked SheetJS core only at this point to assemble the .xlsx file.
- Save converted.xlsx when prompted. The filename is fixed so the handoff to a teammate or downstream tool is predictable.
- Open the workbook in Excel, LibreOffice Calc, Google Sheets, or another spreadsheet application and confirm that the header row matches the order in which keys first appeared in your JSON.
If you need a programmatic version of this same conversion for a build pipeline, the guide to converting JSON to Excel in Python covers the equivalent shape using pandas and openpyxl.
Column Order, Nested Values, and Cell Types
Three behaviors tend to surprise first-time users, so they are worth calling out before you hand off the file.
First-seen column order. The tool scans every object in the array in order. The first time it sees a new key, that key becomes a new column appended after the columns already collected. A later object that reuses an existing key fills that cell; a later object that omits a key leaves the cell empty. If your JSON objects are emitted in a stable order from an API or a config export, the resulting header order is also stable.
Nested objects and arrays. Because a worksheet cell cannot honestly represent nested structure without inventing a column mapping, the converter serializes any nested object or array as compact JSON text and writes it as a single string cell. The data is preserved verbatim; the nesting is just visible as text rather than as expanded columns.
Cell types and formula safety. Strings, numbers, booleans, and null values land in the workbook as ordinary cell values. Values that begin with "=", "+", "-", or "@" are written as plain text rather than evaluated, so a payload from an untrusted source cannot inject spreadsheet formulas into the output. Dates appear exactly as the JSON supplied them; the converter does not apply a locale-dependent date display.
| Input value | Cell representation | Notes |
|---|---|---|
| "Ada" | Text cell | Standard string |
| 42 | Number cell | Numeric type preserved |
| true | Boolean cell | Logical value |
| null | Empty cell | No value written |
| {"x":1} | Text cell with {"x":1} | Nested object as compact JSON |
| "=SUM(A1:A9)" | Text cell with literal text | Not evaluated as a formula |
Limits, Errors, and What Causes a Rejection
The converter enforces hard caps so it can promise a clean .xlsx download rather than a truncated surprise. The boundary values are visible on the page and the tool fails closed when any of them is crossed.
| Limit | Value | Failure mode |
|---|---|---|
| Input size | 1,000,000 characters | Rejected before parsing |
| Rows | 10,000 | Rejected after counting array items |
| Columns | 200 | Rejected after collecting keys |
| Cells | 200,000 | Rejected if rows multiplied by columns exceeds the cap |
Beyond the size limits, the parser rejects invalid JSON, an empty array, a primitive non-object item, and an object with no fields. None of these conditions produce a partial file; the conversion simply does not start, which keeps the on-disk handoff either fully present or fully absent. The tool does not silently omit keys, truncate a long string, or guess what the caller meant. If you need to convert a payload that sits outside any of these limits, split the input or reshape it before sending it through.
Verifying converted.xlsx Before You Hand It Off
Because the converter treats the JSON text as the source of record, the workbook is a derived artifact and the original JSON should be kept alongside it, especially when nesting, null semantics, leading-zero strings, or numeric precision carry business meaning. After downloading converted.xlsx, open it once in the application that will consume it and check three things: the header row matches the first-seen order of your JSON keys, the row count matches the array length, and any nested values appear as compact JSON text rather than as expanded columns.
If a downstream system needs typed dates, locale formatting, formulas, charts, comments, filters, validation rules, or multiple sheets, prepare those explicitly in software built for that richer workbook model. The .xlsx file produced here is a data handoff, not a formula engine, and that scope is what keeps pasted payloads from becoming executable page or spreadsheet logic. Begin with a compact representative JSON sample, inspect the generated header order, and only then pass the file to the next system in your pipeline.