Excel to JSON Converter

Turn selected XLSX or legacy XLS worksheets into JSON without uploading the workbook. Choose one shared JSON shape and shared header, blank and value rules for all selected sheets, then download one JSON file per sheet or a local ZIP. Each output uses a safe name based on its workbook sheet. Visible sheets are selected by default, while Hidden and VeryHidden sheets are shown so you can include them deliberately.

How to convert Excel to JSON

  1. 1

    Choose an Excel workbook

    Select one genuine XLSX or binary XLS file up to 20 MiB. The converter checks the file signature, not just the extension.

  2. 2

    Select the sheets

    Review visible, Hidden and VeryHidden worksheets, then select one or more sheets to convert with the same rules.

  3. 3

    Choose the JSON rules

    Use records, a matrix, a dictionary or grouped records. The chosen shape, header keys, value typing and blank handling apply to every selected sheet.

  4. 4

    Download locally

    The converter creates one safely named JSON file for each selected sheet. Several files are packaged into a ZIP in your browser.

Workbook limits and supported formats

This converter reads XLSX and legacy binary XLS workbooks. It does not accept XLSM, XLSB, ODS or CSV files. The browser verifies the file signature, so renaming another format to .xlsx or .xls is not enough.

One workbook can be up to 20 MiB, contain up to 100 worksheets and use up to 2 million cells. The converter also checks XLSX archive structure before reading it and stops output generation above 100 MiB. Those bounds keep a malformed or unusually large workbook from turning into an uncontrolled browser download.

Choose one JSON shape for the selected sheets

JSON can represent arrays and objects as well as strings, numbers, booleans and null. The right structure depends on the system that will read the file. RFC 8259 describes the JSON data model.

Shape How the first row is used Good fit
Array of objects Header names become property names. API fixtures, application data and most record-based imports.
Matrix The first row stays in the data. Positional data, compact tables and tools that expect an array of arrays.
Dictionary Header names become property names; one selected column supplies unique keys. Fast lookups such as a product code to product record map.
Grouped arrays Header names become property names; one selected column supplies group keys. Records grouped by a field such as department, country or status.

The array-of-objects form follows the default behavior documented by SheetJS: the first row supplies headers. Matrix output keeps that row because it is data rather than metadata. The selected JSON shape, property-key option, value typing and blank-value handling apply to every sheet selected in this conversion.

Object, dictionary and grouped output need a non-empty, unique header row. Dictionary output also needs unique values in the selected key column. The converter stops with a clear error when those rules are not met, instead of silently overwriting a record. You can use sanitized property keys or retain exact header text when a downstream system requires the workbook’s original wording.

Values, dates and formulas

With type inference enabled, spreadsheet numbers and booleans remain JSON numbers and booleans. You can instead keep values as strings when a receiving system controls its own casting. Empty cells can become null or empty strings. Integers outside JavaScript’s safe integer range remain strings so their digits are not silently rounded.

Date cells become ISO values only when the spreadsheet reader identifies them as dates. The converter does not guess that a text value which looks like a date is a date. This distinction matters for values such as order numbers, version labels and locale-specific date text.

The converter never runs or recalculates Excel formulas. It uses a formula’s stored cached value when the workbook has one. A formula without a cached value follows the blank-value setting.

Browser-local conversion and temporary drafts

Workbook reading, JSON generation, ZIP creation and downloads happen in your browser. The workbook, its sheet data and generated JSON are not uploaded or sent to our servers.

In the multi-step flow, a verified workbook can be held as a hash-checked temporary draft in this browser’s IndexedDB storage. The URL carries only an opaque job identifier, never the file name or worksheet values. A draft becomes unavailable after 30 minutes. Starting over or downloading asks the browser to remove it, and the tool warns you if it cannot confirm that request. If browser storage is unavailable, the tool keeps the controls on one page so you can still finish without navigation.

Frequently Asked Questions

Yes. Choose one or more sheets. The same JSON shape and value rules apply to all of them. One selected sheet creates a JSON download, while several selected sheets create one ZIP with one safely named JSON file for each sheet.

Use an array of objects for ordinary header-based records. Use a matrix when every row, including the header row, should remain positional data. Use a dictionary for unique lookups and grouped arrays when repeated values should collect related records.

Header-based shapes require non-empty, unique headers. A dictionary also requires unique values in its selected key column. Rejecting duplicates prevents an output file from silently replacing one record with another.

No. Formula cells use an existing stored cached value when available, and the tool does not recalculate formulas. It writes ISO dates only for cells the spreadsheet reader identifies as dates, rather than guessing from text.

No. Reading, conversion and download preparation stay in the browser. The multi-step flow can retain a browser-only draft for up to 30 minutes, but the workbook and its data are not sent to the server or placed in the URL. Starting over or downloading asks the browser to remove the draft and shows a warning if that request cannot be confirmed.

Related Tools

Tool available in other languages