Skip to content
cliplimeClipLime

Convert JSON to Excel (XLSX)

Paste JSON or drop a file and download an .xlsx, with nested objects and lists spread into columns.

Runs on your device, nothing is uploaded

Convert from

to

Paste, type, drop a file here or load one.

0 characters, 0 lines

Output (XLSX)

The workbook appears here, ready to download.

Options

When off, columns are called column1, column2 and so on.

Nested objects become columns such as address.city. Off keeps them as JSON text in one cell.

More options

A path such as data.items. Use a single dot to turn the whole value into one row.

The dot in address.city.

At a glance

Input
Paste JSON or open a .json file. It can be a list of records, an API response that holds a list, a grid of lists, or one object.
Nested data
Objects inside records become columns named after their path (address.city), and lists become tags.0, tags.1 or a single joined cell.
Different keys
Records may use different keys: every key found becomes a column, and a record without it leaves that cell empty.
Types
Numbers become Excel numbers, true and false become TRUE and FALSE, null becomes an empty cell and text stays text.
Dates
A date in JSON is a string, so it stays text in the workbook. Excel is not asked to guess.
Workbook
One sheet with a bold header row that stays in view and columns sized to fit. Up to 1,048,576 rows and 16,384 columns.
Privacy
The conversion happens inside your browser tab, and the JSON never leaves your device.

How to do it

  1. 1

    Paste or load your JSON

    Paste JSON into the box, drop a .json file on it, or press Load a file. A syntax problem is pointed out by line and column, in plain words.

  2. 2

    Check which part becomes the rows

    The converter picks the rows for you: a list at the top, or the list inside an API response. A note names the keys it left out. If it picked the wrong part, type a path under More options.

  3. 3

    Choose how nested data is written

    Leave Flatten nested values into columns on to get dotted columns such as address.city, and choose how lists are written. Give the sheet a name if Sheet1 will not do.

  4. 4

    Download the workbook

    Press Download to save the .xlsx file. The first rows are shown under the button so you can check the columns.

How JSON becomes rows and columns

A sheet is a grid, so the converter has to decide what a row is. A list of objects at the top gives one row per object, and a list of lists is read as a grid whose first list holds the column names. A single object becomes one row. An object that holds a list of records, such as {"status": "ok", "data": {"items": [...]}}, is searched for that list. The keys outside it are left out of the sheet, and a note lists them. If you want a different part, give its path, for example data.items, in the Rows come from box under More options.

Not every record needs the same keys. The sheet gets one column for each key found anywhere in the list, in the order they first show up. Where a record has no value, the cell is empty, and so it is for a null.

Nested objects, lists and the 16,384 column limit

A cell holds one value, so nested data is spread out. {"id": 1, "address": {"city": "Lisbon"}, "tags": ["a", "b"]} gives the columns id, address.city, tags.0 and tags.1.

  • Separate columns puts each list item in a cell of its own. Only this choice can be converted back into the same JSON.
  • Joined into one cell writes a;b, which suits short lists of plain values.
  • JSON text in one cell stores the list unchanged, as ["a","b"].
  • With Flatten nested values into columns switched off, each nested object or list stays whole as JSON text, so every top level key is one column.

An Excel sheet has at most 16,384 columns. A record with a very long list, or records with thousands of different keys, can pass that limit with separate columns. The converter then refuses and says how many columns it needs, and the fix is to join the lists into one cell or keep them as JSON text.

What the cells in the workbook are

  • A JSON number is an Excel number, and true and false are Excel booleans, shown as TRUE and FALSE. A number too large for a 64 bit number, such as 1e999, becomes Infinity, which Excel cannot hold, so it is written as text with a note.
  • A JSON string is text, also when it looks like a number: "00123" keeps its zeros, and a long ID in quotes is not rounded. Only a JSON number can be an Excel number, and JSON numbers above 15 digits already lose digits when JSON is parsed, so quote long IDs at the source.
  • A string that starts with = + - or @ is text. It is never run as a formula when the file is opened.
  • A date such as "2024-01-15" is a string in JSON, so it stays text in Excel. Convert it there with Data, Text to Columns, or with a formula like =DATEVALUE(A2).
  • Text longer than 32,767 characters, the most an Excel cell holds, is cut with a note.

The workbook has one sheet, called Sheet1 unless you choose a name (31 characters at most, and characters Excel does not allow, such as / and ?, become an underscore). The header row is bold and frozen, and column widths follow the longest value in the first 200 rows. Number formats, colors and formulas are not added.

Compared with opening JSON in Excel

Excel can import JSON itself with Data, Get Data, From JSON. That opens Power Query, where each nested record or list shows up as a cell you expand yourself, one level at a time. This converter does the flattening for you with fixed rules you can see and change, and it works in a browser tab without Excel installed.

If your JSON is large, the Excel limits apply: 1,048,576 rows including the header. In our tests on a laptop, 50,000 records of 10 fields became a workbook in about 1.2 seconds, and 200,000 records took about 7 seconds. A very large JSON file needs a lot of memory to parse, and phones and older computers will manage less.

Questions people ask

How do I convert nested JSON to Excel?

Leave Flatten nested values into columns switched on. A nested object turns into one column per value, named by its path (address.city), and a list turns into numbered columns (tags.0, tags.1). If that gives too many columns, join each list into a single cell or keep it as JSON text.

My JSON has several lists, like users and orders. What happens?

The longest list becomes the rows, and a note names the keys that were left out. Type another path, such as orders, under Rows come from in More options and convert again. Then move the sheets into one workbook in Excel with Move or Copy.

What if the objects in my list have different keys?

That works. The sheet gets one column for every key that appears in any record, in the order of first appearance, and the cell stays empty for a record that lacks that key.

Why does Excel show my dates as text?

JSON has no date type, so a date is a string, and a string stays text in the workbook. In Excel, select the column and use Data, Text to Columns and pick Date, or use a formula such as =DATEVALUE(A2) for dates written like 2024-01-15.

What are the size limits?

One sheet holds 1,048,576 rows including the header, 16,384 columns and 32,767 characters per cell. Beyond the row or column limit the conversion is refused with a message that says how many are needed. A longer cell is cut, and a note says so.

Is my JSON uploaded?

No. Your JSON is read, flattened and written to the workbook inside this tab, and none of it is sent anywhere.