How to Convert JSON to Excel: 10 Online Tools
Convert JSON to Excel with Power Query, browser tools, APIs, and automation. Learn how to flatten nested data, protect privacy, and choose XLSX output.

Short answer: Use Excel Power Query when you need repeatable transformations, nested-data cleanup, or refreshable connections. Choose a browser converter such as Aspose for a one-off upload and download without installing Excel. For recurring jobs, use an API or automation workflow. Before converting, inspect nested arrays, output format, privacy, retention, and authentication requirements.
JSON can represent records, arrays, nested objects, and inconsistent fields. Excel worksheets are two-dimensional tables. Conversion is therefore usually an import-and-shape process rather than a simple file rename. Flat arrays often become a table immediately; nested records and lists usually need expansion or separate worksheets.
1. Choose the right JSON-to-Excel method
| Method | Best for | Input | Repeatability | Main limitation |
|---|---|---|---|---|
| Power Query from JSON | Refreshable analysis and transformations | Local JSON file | High | Excel edition and connector behavior vary |
| Power Query web connector | JSON URLs and API responses | URL or endpoint | High | Authentication and endpoint rules |
| Parse JSON column | JSON stored as text in a worksheet | Text column | High | Requires record expansion |
| Power Query Online | Cloud dataflows and governed workbooks | JSON source | High | Plan, tenant, gateway, and credentials |
| Excel for the web | Supported Microsoft 365 browser plans | JSON source | Medium | Feature availability differs by plan |
| Power Automate Desktop | Repeatable desktop automation | Files or API output | High | More setup than a one-off conversion |
| Aspose browser converter | One-off upload and download | Local JSON file | Low | Data is uploaded to a vendor |
| Aspose.Cells Cloud API | Server-side recurring conversion | JSON stream or file | High | API credentials and integration work |
| Aspose.Cells .NET | Applications that already use .NET | JSON file | High | Requires a .NET project and library |
| Python or Node.js script | Custom pipelines and validation | Files or API responses | High | You own schema handling and XLSX writing |
2. Convert a local JSON file with Excel Power Query
Power Query is the strongest general-purpose option when the workbook will be refreshed. Microsoft documents the workflow as Data > Get Data > From File > From JSON. Power Query uses automatic table detection to flatten many JSON structures, after which you can transform and load the result.

- Open Excel and create or open a workbook.
- Select Data > Get Data > From File > From JSON.
- Choose the
.jsonfile. - In the navigator or Power Query editor, inspect the detected list, record, or table.
- Use the expand buttons on Record and List values. Select only the fields you need.
- Rename columns, set data types, remove errors, and split or merge fields as required.
- Select Close & Load to put the result in a worksheet or data model.
- For later files with the same shape, use Refresh.
Example flat JSON
[{"id":101,"name":"Ada","active":true},{"id":102,"name":"Lin","active":false}]
This normally imports as three columns: id, name, and active. If the top level is an object such as {"data":[...]}, first open the data list and convert that list to a table.
Nested records and arrays
[{"id":101,"customer":{"name":"Ada","country":"UK"},"items":[{"sku":"A1","qty":2}]}]
Expand customer to create fields such as customer.name and customer.country. Expanding items creates one row per item and repeats the parent values. If you need one row per customer instead, keep the list as a separate query or aggregate it before loading. Do not assume every nested shape can become one clean table without a modeling decision.
3. Parse JSON that is already in an Excel column
If a worksheet contains JSON text rather than a file, load the range into Power Query. Select the text column, then choose Transform > Parse > JSON. Each cell becomes a structured Record. Expand the fields you want, set types, and load the transformed table back to Excel.
This is useful for API exports where one column contains a response body. Malformed text produces errors; filter or replace those rows before expanding. Keep the original text column until validation is complete so you can trace a bad record.
4. Import JSON from a URL or API
Use Data > Get Data > From Other Sources > From Web (the exact menu label varies by Excel edition). Enter the JSON URL, choose the appropriate authentication method, and transform the response in Power Query.

Plan for these cases:
- Pagination: one endpoint response may contain only the first page. Build a query that follows the documented next-page link or loop parameters.
- Authentication: anonymous, organizational, web API, and other credential modes expose different options. Never paste a secret into a public workbook.
- Rate limits: refreshes can be rejected when an API limits requests. Cache or stage data when the provider permits it.
- Changing schemas: new fields may appear while old fields disappear. Use explicit column selection and validation to detect changes.
- JSON Lines: newline-delimited objects are not always accepted as one JSON document. Convert each line into a record before tabularizing.
5. Power Query Online and Excel for the web
Power Query Online supports JSON data sources when the required Microsoft 365 service, gateway, and credentials are available. Excel for the web also exposes Power Query data sources on supported plans. Availability depends on your tenant, license, and platform, so verify the connector in the environment where the workbook will run.
The transformation concepts are the same as desktop Excel: identify the top-level list, expand records, decide how to handle child arrays, assign types, and load the result. Test refresh under the account that will own the scheduled or shared workbook.
6. Automate with Power Automate Desktop
Power Automate Desktop is an automation route for teams that receive JSON files, extract keys, loop through records, write rows to Excel, and save a workbook. Treat it as a workflow rather than a quick converter. Design explicit steps for file arrival, JSON parsing, array iteration, column mapping, error logging, and workbook locking.
- Watch a folder or trigger the flow from an input event.
- Read the JSON file as text and parse it.
- Extract the top-level array and the fields required for each row.
- Loop through records and write values to an Excel table.
- Save the workbook and move the source file to a processed or failed folder.
7. Convert JSON online with Aspose
For a one-off conversion, an online JSON-to-Excel converter can be faster than building a query. Aspose’s browser workflow is upload, choose table or output options, convert, and download. Aspose states that uploaded files are deleted from its servers after 24 hours; check the current policy before sending confidential data.
Browser conversion is a poor fit when you need refreshes, API authentication, repeatable field mapping, or audit logs. It is convenient for a small, non-sensitive file whose structure is already close to a table.
8. Use an API or application library
Aspose.Cells Cloud API
A cloud API suits a service that receives JSON repeatedly and must produce XLSX files without a desktop session. The documented options include worksheet position and output path. Add your own checks for malformed JSON, schema drift, array handling, retries, and output validation.
Aspose.Cells for .NET
In .NET, the documented pattern loads JSON into a workbook and saves an XLSX file. Options include multiple worksheets and treating arrays as tables.
Workbook wb = new Workbook("sample.json");
wb.Save("sample_out.xlsx");
Use multiple worksheets when child arrays have their own grain. Use an array-as-table option when the input is a list of records and you want tabular output.
Python example for a controlled pipeline
The following script uses a common dataframe workflow. It assumes the top level is a list of flat records; nested data should be normalized deliberately before export.
import json
import pandas as pd
with open("input.json", encoding="utf-8") as f:
data = json.load(f)
if not isinstance(data, list):
data = data["data"]
df = pd.json_normalize(data)
df.to_excel("output.xlsx", index=False)
Node.js example
With the xlsx package installed, this script reads an array, converts records to a worksheet, and writes an XLSX file.
const fs = require('fs');
const XLSX = require('xlsx');
const parsed = JSON.parse(fs.readFileSync('input.json', 'utf8'));
const rows = Array.isArray(parsed) ? parsed : parsed.data;
const workbook = XLSX.utils.book_new();
const sheet = XLSX.utils.json_to_sheet(rows);
XLSX.utils.book_append_sheet(workbook, sheet, 'Data');
XLSX.writeFile(workbook, 'output.xlsx');
9. Preserve structure when one sheet is not enough
Excel rows have a single grain. A customer record with five order items cannot be represented correctly by simply repeating or concatenating values without deciding what a row means. Use a parent sheet and a child sheet keyed by an ID, or keep the child array in Power Query until a report-specific expansion is required.
Choose XLSX when you need modern worksheets, multiple tabs, and better type support. Choose XLS only for compatibility with an older system that explicitly requires it. Confirm date, boolean, null, currency, and long-number handling after export.
10. Troubleshooting checklist
| Symptom | Likely cause | Fix |
|---|---|---|
| “Invalid JSON” | Trailing comma, unescaped quote, or truncated response | Validate the source and inspect the failing character or line. |
| Only one column appears | Records remain nested in a List or Record value | Open the list, convert it to a table, then expand records. |
| Rows multiply unexpectedly | A child array was expanded | Keep it as a related table or aggregate it intentionally. |
| Some fields are missing | Records have inconsistent keys | Use a stable field list and fill absent values explicitly. |
| Refresh returns 401 or 403 | Expired or incorrect credentials | Update the data-source credential and confirm required scopes. |
| Web import works once, then fails | Rate limit, token expiry, or changing endpoint response | Review API limits, refresh credentials, and log the raw response. |
| Numbers become text | Locale or mixed JSON types | Set the column type after expansion and normalize source values. |
| Dates are wrong | Timezone or ambiguous date strings | Keep ISO 8601 strings until you choose the intended timezone. |
| Browser upload is rejected | File size, unsupported shape, or service limit | Split the file, simplify nested arrays, or use a local/API workflow. |
11. Performance, reliability, privacy, and cost
- Performance: select only required fields, filter early, and avoid expanding large child arrays until necessary. Paginate API imports instead of loading an unbounded response.
- Reliability: retain the source JSON, record refresh time and query version, and validate row counts and required columns before publishing a workbook.
- Privacy: local Power Query keeps processing in your environment. Browser and cloud converters upload data, so review retention, deletion, access controls, and contractual terms. Aspose states a 24-hour deletion period for its browser converter.
- Cost: Excel licensing, automation capacity, API calls, and cloud storage can all affect total cost. A free browser conversion may still be unsuitable if manual cleanup is repeated every day.
12. Or skip the browser setup
ScreenshotNeo is not a JSON-to-XLSX converter. It is useful when the deliverable is a visual record of an API response, documentation page, dashboard, or generated report that you want to archive beside the spreadsheet. One GET request returns a PNG, JPEG, WebP, or PDF. Cookie and consent banners, newsletter popups, and chat widgets are removed before the shot; bot checks, blank pages, failed loads, timeouts, and cache hits are not billed. An MCP server lets AI agents take screenshots, and every response reports the page verdict and billing status.
See the ScreenshotNeo API documentation for all options. A minimal request is:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
There are 1,000 screenshots per month free with no card. Paid plans start at $5 for 3,000 shots, and every feature is available on every plan. Create a free ScreenshotNeo account.
FAQ
Can Excel open JSON directly?
Yes. Use Power Query’s JSON connector, then review and transform the detected structure before loading it to a worksheet.
Can Excel flatten nested JSON?
Often. Expand Record and List values, but choose a table design when arrays represent child entities.
What is the best online converter?
For repeatable work, Power Query is usually the best fit. For a one-off non-sensitive upload, a browser converter such as Aspose is simpler.
How do I convert an API response into an Excel table?
Use the web connector, authenticate, handle pagination, expand the response list, set data types, and load the query.
Should I use CSV instead of XLSX?
CSV is useful for a single flat table. XLSX is better when you need multiple sheets, formatting, or workbook features.


