Skip to main content
SheetTidy

Convert JSON to Excel

Turn a JSON file or API response into an .xlsx sheet with one row per record and a column for every field, nested ones included.

  1. 1
  2. 2
  3. 3
  4. 4

Drop your Excel or CSV file here

XLSX, XLSM, XLS, ODS, CSV, TSV or JSON

Your file never leaves your device

How to use this tool

  1. Step 1: Open your JSON file

    Drop a .json file onto the tool. It can be a list of records, a single record, or an object that wraps a list, as many APIs return.

  2. Step 2: Check the columns

    The preview shows one row per record. Nested fields appear as columns such as customer.name and customer.city.

  3. Step 3: Convert the file

    Click Convert file. The summary shows how many rows and columns the workbook will have.

  4. Step 4: Download the workbook

    Save the .xlsx file and open it in Excel, Google Sheets or LibreOffice Calc.

Why open JSON in a spreadsheet?

JSON is how most software stores and exchanges data. API responses, exports from web apps, analytics events and records from databases such as MongoDB or Firebase usually arrive as JSON. It is easy for a program to read and hard for a person to scan: a few hundred records can run to thousands of lines of brackets and quotes.

A spreadsheet turns the same data into rows you can sort, filter, total and share. Analysts, account managers and finance teams can work with it straight away, without asking a developer to write a script first.

How to import JSON into Excel with Power Query

Excel 2016 and later, including Microsoft 365, can read JSON through Power Query. It works, but it takes several steps:

  1. Choose Data › Get Data › From File › From JSON and select the file.
  2. The Power Query Editor opens. If the top level is an object, click the List next to the field that holds your records to drill into it.
  3. On the List Tools › Transform tab, click To Table, then OK.
  4. The table has one column of Record values. Click the expand button (two arrows) in its header, choose the fields you want, clear Use original column name as prefix and click OK.
  5. Repeat the expand step for every nested record. For a list inside a record, the expand button offers Expand to New Rows, which repeats the whole record once per item, or Extract Values, which joins the items with a separator you choose.
  6. Check each column’s data type, then click Close & Load.

Where Power Query gets fiddly

Nested data multiplies the work. Each level of nesting needs its own expand step, and the column list is taken from a sample of records, so a field that appears only in later records can be missed.

Lists can duplicate rows. Expanding a list to new rows means an order with three items appears three times, which breaks totals unless you are careful.

Types need attention. Codes with leading zeros, long IDs and dates may be converted in ways you did not intend, so check every column type before loading.

The result is a query. The table stays linked to the original file. That is useful for refreshing, but it is more than you need for a one-off look at the data.

Where this converter helps

Checking an API response. Save the response to a file and see every record and field in a grid, which makes missing or odd values easy to spot.

Exports from web apps and databases. Many SaaS tools, Firebase and MongoDB export collections as JSON. Converting them gives you a sheet for reporting or reconciliation.

Analytics and event logs. Event data with nested properties becomes flat columns you can filter and pivot.

Sharing data with people who do not code. Send a colleague an .xlsx file instead of a JSON file they cannot open comfortably.

Private files. Everything runs in your browser. Customer records and API data are never uploaded to a server.

How the conversion works

  • Finding the records. A list of objects is used as it is. If the file is an object that wraps a list, such as {"orders": [...], "count": 3}, the first list of records becomes the rows.
  • Columns from every record. Each field found in any record becomes a column, in the order it first appears.
  • Nested objects are flattened. {"customer": {"name": "Priya Shah", "city": "Ahmedabad"}} becomes the columns customer.name and customer.city.
  • Lists stay in one cell. "items": ["Tea", "Sugar"] is written as the text [“Tea”,“Sugar”], so one record is always one row.
  • Types are respected. Numbers become numbers, true/false become Excel’s TRUE and FALSE, and strings stay text, so “000123” keeps its zeros. Dates in JSON are already text and stay exactly as written.
  • Every character survives. Names in Hindi, Gujarati or any other script come through intact.

The download is an .xlsx file named after your original, for example orders-cleaned.xlsx. With the sample file, the summary reads “Converted 3 rows and 7 columns from JSON to Excel (.xlsx).”

After converting

Every SheetTidy tool accepts JSON files directly, so you can also open the .json file in another tool, such as Remove duplicates or Remove extra spaces, and clean the data on the way to Excel. To turn date text such as “2024-03-15” into real Excel dates, use the Fix dates tool on the workbook. To go back the other way, the Excel to JSON converter writes a sheet out as an array of records.

Frequently asked questions

What kind of JSON can I convert?

A list of objects works best: each object becomes a row. A single object becomes one row, and a list of plain values, such as ["Tea", "Coffee"], becomes one column named "value".

My file is an object like {"data": [...]}. Will it work?

Yes. When the file is an object that wraps a list of records, as many APIs return, the first such list is used as the rows. Other values beside it, such as a count or page number, are left out.

How are nested objects handled?

They are flattened into columns with dotted names. A record with "customer": {"name": "Priya", "city": "Surat"} gets the columns customer.name and customer.city.

What happens to lists inside a record?

A list such as "items": ["Tea", "Sugar"] is kept as JSON text in a single cell, so each record stays on one row and no data is lost.

What if records have different fields?

Every field found in any record gets a column, in the order it first appears. A record without that field simply has an empty cell there.

Why does it say my file is not valid JSON?

JSON is strict: a missing comma, a trailing comma, single quotes or a comment will stop it from being read. Paste the file into a JSON validator or code editor to find the line, fix it, and try again.

Are numbers and true/false values kept?

Yes. JSON numbers become Excel numbers, true and false become TRUE and FALSE, and strings stay text, so an ID written as "000123" keeps its zeros.

All convert tools