No uploads, ever
Home › Utilities › CSV to JSON › Excel to JSON

Excel to JSON Converter

Turn a spreadsheet into JSON objects, one per row, keyed by your column headers.

Never uploadedNo limitsNo email requiredNo watermark

How to convert Excel to JSON

  1. Open an .xlsx, .xls or .ods file.
  2. Pick one sheet or all sheets, and check that the first row holds your column names.
  3. Copy the JSON or download it as a .json file.

A spreadsheet is often the easiest way to edit data

Product catalogs, translation strings, price lists, FAQ entries, quiz questions, store locations: a lot of app data starts life in a spreadsheet because that's where non-developers are comfortable editing it. At some point it has to reach the code, and that's usually as JSON. This converter does the step directly from the workbook, without a detour through CSV where types and special characters can get lost.

What the output looks like

Each row below the header becomes an object. The header cells supply the keys, and cell values keep their type:

CellJSON
Number 19.9919.99
TRUEtrue
Text"text"
Date 7/4/2026"2026-07-04"
Empty cell""

JSON has no date type, so dates are written as ISO 8601 strings, which JavaScript's new Date() and practically every other language parse directly. Times get a T separator (2026-07-04T18:30:00), and cells holding only a time become "18:30:00". The conversion reads the date serial numbers stored in the file itself, so the result doesn't shift with your computer's time zone. Workbooks using the old Mac 1904 date system are handled too.

If two header cells have the same text, the second key gets a suffix (price_2) so neither column overwrites the other. Blank header cells get a generic column_N key.

One sheet or the whole workbook

With a single sheet selected you get a plain array, ready for fetch responses, static site generators or seed scripts. Choose All sheets and the output becomes one object keyed by sheet name, each holding its array of rows:

{"Products": [ … ], "Categories": [ … ]}

That shape also works in reverse: feed it to JSON to Excel and every key becomes a sheet again.

Tidy the sheet for cleaner keys

The header row becomes your property names, so a few minutes in the spreadsheet saves cleanup in code. Short, consistent headers such as productId or unit_price are easier to use than "Unit price (USD, incl. tax)". Keep one header row only, remove title rows or notes above the table, and avoid blank columns in the middle of the data. Everything below the header is read as data, row by row, until the last filled cell.

Options worth knowing

Formula cells contribute their last saved result. Merged cells keep their value in the top-left position only. Password-protected workbooks can't be read until the password is removed. The workbook is processed inside your browser, so internal price lists or customer data are never uploaded. Have the data as CSV instead? Use CSV to JSON.

More ways to use this tool

Frequently asked questions

Is my spreadsheet uploaded?

No. The file is read and converted in your browser. Nothing is sent to a server.

How are dates converted?

To ISO 8601 strings such as 2026-07-04, with time added when the cell has one. They are calculated from the values stored in the file, so your time zone doesn't change them.

Can I convert all sheets at once?

Yes. Choose All sheets and you'll get one JSON object whose keys are the sheet names.

What if my sheet has no header row?

Untick First row has column names. Each row is then output as an array of values.

Do formulas work?

The JSON contains the result of each formula as it was last calculated and saved in the file.