Skip to content
cliplimeClipLime

Convert Excel to JSON

Drop an .xlsx workbook and get JSON with one object per row, typed from Excel's own cells.

Runs on your device, nothing is uploaded

Convert from

to

Input (XLSX)

or drop it here, or paste from the clipboard

XLSX files are read on your device. Nothing is uploaded.

Options

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

Columns such as address.city become nested objects, and tags.0, tags.1 become a list.

Write each row as

A list per row starts with the column names when they are on.

Indentation

More options

The dot in address.city.

Empty cells do not create a key.

At a glance

Input
Excel .xlsx workbooks, one sheet at a time. Old .xls files are not supported: save a copy as .xlsx in Excel, Google Sheets or LibreOffice first.
Shape
A list with one object per row, using the header row as the keys. Or one list of values per row when you turn the header off.
Types
Numbers stay numbers, TRUE and FALSE become true and false, text stays text and empty cells become null. Excel's own cell types are used and nothing is guessed.
Dates
JSON has no date type, so Excel dates become text such as 2024-01-15, or a full timestamp when the cell has a time.
Nested JSON
Headers such as address.city become nested objects, and tags.0 and tags.1 become a list.
Sheets
Choose a sheet, or download every sheet as its own JSON file in one ZIP.
Formulas
A formula gives the result Excel saved with it. Nothing is recalculated.

How to do it

  1. 1

    Choose the workbook

    Press Choose an Excel file or drop an .xlsx file on the page. A preview shows the first rows of the first sheet.

  2. 2

    Pick the sheet and the header

    Choose the sheet under Sheet to convert. Keep First row has the column names on if the first row holds the headers. They become the JSON keys.

  3. 3

    Choose the JSON shape

    Write each row as an object, which is the usual choice, or as a list. Turn dotted headers into nested objects or keep them flat, and pick the indentation.

  4. 4

    Copy or download

    Copy the JSON, download a .json file, or press Download all sheets as ZIP for one JSON file per sheet. The notes under the result list anything that was renamed or left out.

How a worksheet becomes JSON

The first row with content gives the keys, and every row after it becomes one object in a list: a sheet with the columns id, name and active gives [{"id": 1, "name": "Ana", "active": true}, ...]. Rows with no content are skipped. A row with fewer cells than the header gets null for the missing ones, and the keys keep the order of the columns.

Headers are made safe for you. A name used twice becomes name and name_2, an empty header becomes column7 (its column number), and a note under the result lists each repair. With the header option off, the keys are column1, column2 and so on, or you can choose to write each row as a list.

If a title or a note sits above the table, that line is taken as the header. Delete the lines above the table in Excel first, or turn the header off and remove them from the result.

Excel cell types and JSON types

A CSV has no types, so a converter has to guess them. An Excel cell is already typed, so nothing is guessed here, and the Cell values option does not appear for Excel input.

  • A number cell is a JSON number. A text cell stays a string, even when it looks like a number: 00123 typed into a text cell stays "00123".
  • A number shown with leading zeros through a custom format is stored as 123, so 123 is what you get.
  • TRUE and FALSE become true and false. Empty cells become null, or no key at all if you turn on Leave out empty cells under More options.
  • Errors such as #N/A come out as null.
  • Number formats are not kept: a price shown as $12.00 is 12, and 25.5% is 0.255. Decimals are rounded to 15 significant digits, the precision Excel keeps.
  • Dates and times become text. A date is 2024-03-04, a date with a time is 2024-03-04T10:30:00.000Z (Excel keeps no time zone, so the Z is notation and not a conversion), and a time alone is 09:30:00. A cell counts as a date or time from its number format, also when the format is written without separators, such as yyyymmdd or hhmmss, and dates before 1 March 1900 follow Excel's own day count.
  • Text keeps the characters it holds. The codes Excel writes inside text for characters XML cannot hold (such as _x000D_ for a carriage return) are turned back into those characters.
  • A damaged workbook is refused with a message, because every part of an .xlsx file carries a checksum and a part that no longer matches means the cells could be wrong.

Excel and JSON both store numbers as 64 bit floating point values, so whole numbers above 15 digits are not exact in either. Keep long IDs as text cells in Excel.

Nested JSON from a flat sheet

Name the columns by path and the converter builds the structure. The headers name, address.city, address.zip, tags.0 and tags.1 give {"name": ..., "address": {"city": ..., "zip": ...}, "tags": [..., ...]} for each row. With Rebuild nested values from column names off, the headers stay as flat keys. If a dot is part of your real column names, choose another separator under More options.

Choosing A list under Write each row as gives one JSON list per row, with the column names as the first list. That shape is smaller, and it is handy when the keys would repeat thousands of times.

Several sheets and large workbooks

JSON from a workbook is made one sheet at a time. When the file has more than one sheet, All sheets at once saves one JSON file per sheet in a ZIP, named after the workbook and the sheet, for example sales-Orders.json. Empty sheets are left out and listed. Hidden sheets, rows and columns are read like any others.

In our tests on a laptop, a 50,000 row by 10 column sheet became about 11 MB of JSON in roughly 0.4 seconds, and 200,000 rows (45 MB of JSON) took about 3 seconds. The page keeps working, but a very long result is shown only in part, so use Copy or Download to get all of it.

Questions people ask

How do I convert an Excel file with several sheets to JSON?

Pick a sheet under Sheet to convert to see its JSON, or press Download all sheets as ZIP to get one JSON file per sheet. The converter does not merge sheets into one JSON document.

Why are my dates strings in the JSON?

JSON has no date type. A date cell is written as text such as 2024-01-15, or as 2024-03-04T10:30:00.000Z when it has a time, which most JSON tools and databases parse as a date.

Does it evaluate formulas?

No. It reads the result Excel saved next to each formula. If the workbook was last saved by a program that does not calculate, those cells have no result and come out as null. Open and save the file in Excel once to fill them in.

Can I convert an .xls file?

No, only .xlsx is supported. Open the old file in Excel, Google Sheets or LibreOffice and save a copy as .xlsx. A file with a password cannot be read, so remove the password first.

How are empty cells written?

As null. Turn on Leave out empty cells under More options and the key is left out of that object instead.

Is my workbook uploaded?

No. The file is read in your browser tab and the JSON is made there, so private data stays on your device.