XLSX

Excel to JSON Converter

Read XLSX worksheets with unique keys and timezone-free dates

Data Format
🔒 100% client-side — your data never leaves this page
Maintained by Evan•Updated: September 30, 2026

Read XLSX (legacy XLS unsupported), using physical rows and columns in the used range. Dates follow the 1900/1904 system as timezone-free text to millisecond precision; choose raw serials for times or unusual dates. Formulas are not executed: cached values are read, absent caches become null. Merged cells retain their anchor; hidden rows/columns are included. Limits: 20 MiB, 100,000 rows, 500 columns, 2,000,000 cells.

XLSX → JSON

Processed in your browser without saved drafts. Analytics excludes input, filenames, sheet names, column names and raw errors.

About this tool

Read XLSX workbooks locally; legacy XLS is unsupported. Select a worksheet and physical header/start row, then export objects or row arrays. Blank and duplicate headers receive globally unique keys with a visible mapping. Dates use the workbook 1900/1904 system and become timezone-free text to millisecond precision, or remain raw serial numbers. Cached formula values are read without execution; missing caches become null, error cells stop conversion, and merged ranges retain only their anchor. Hidden rows and columns are included. Unsafe integers are rejected; digits already rounded in a source workbook cannot be recovered. Limits: 20 MiB, 100,000 data rows, 500 used-range columns and 2,000,000 cells including headers.

Scenario Recipes

01

Convert an offset worksheet without shifting dates or losing columns

Goal: Use physical coordinates and review the exact JSON field mapping.

  1. Choose an XLSX workbook and worksheet. Legacy XLS is outside this tool’s supported scope. Set the physical header row; a sheet beginning at B3 still uses row 3 and starts with column B.
  2. Choose objects or row arrays. Object output consumes the selected row as headers; row arrays include it. Review the column-renaming list: blank and duplicate names are made globally unique without dropping cells.
  3. Choose timezone-free date text or raw serial numbers. Inspect formula cache and merged-cell notes, then copy or download all JSON. Recalculate formulas in the source spreadsheet if current results are required.

Result: JSON for the selected used-range columns. Dates follow the workbook’s 1900/1904 epoch; timezone-free strings do not establish an instant or a UTC offset.

Failure Clinic (Common Pitfalls)

Adding Z to an Excel wall-clock date

Cause: Spreadsheet calendar cells do not define a timezone. Treating the browser’s timezone as the source shifts the date.

Fix: Use the default timezone-free output, rounded to milliseconds. Establish a timezone in the destination system only when the source meaning is known. Serial 60 in the 1900 system is the nonexistent 1900-02-29; use raw serial mode to retain it.

Expecting formulas or merged cells to be calculated or filled

Cause: The converter reads stored cells. Formula caches may be stale or absent, and merged ranges store the value at their anchor.

Fix: Cached formula values are copied; absent caches become null. No formula is executed and merged values are not propagated. Hidden rows and columns remain included. Excel error cells stop conversion.

Recovering an exact identifier from an already rounded numeric cell

Cause: XLSX parsing cannot restore digits lost when the workbook was created, and JSON numbers cannot represent every large integer.

Fix: Store identifiers as text in the source workbook. Unsafe integers are rejected. Limits are 20 MiB, 100,000 selected data rows, 500 used-range columns and 2,000,000 cells including headers.

Production Snippets

A repeated header can collide with an existing suffix

text

Source headers: a | a | a_2 | (blank) | column_4
Output keys:    a | a_2 | a_2_2 | column_4 | column_4_2
Source values:  1 | 2 | 3 | 4 | 5
All five values remain present.

Excel date 2026-09-30 → "2026-09-30"
Excel datetime → "2026-09-30T12:34:56" (no assumed timezone)

Frequently Asked Questions

Adding Z to an Excel wall-clock date?

Spreadsheet calendar cells do not define a timezone. Treating the browser’s timezone as the source shifts the date. Use the default timezone-free output, rounded to milliseconds. Establish a timezone in the destination system only when the source meaning is known. Serial 60 in the 1900 system is the nonexistent 1900-02-29; use raw serial mode to retain it.

Expecting formulas or merged cells to be calculated or filled?

The converter reads stored cells. Formula caches may be stale or absent, and merged ranges store the value at their anchor. Cached formula values are copied; absent caches become null. No formula is executed and merged values are not propagated. Hidden rows and columns remain included. Excel error cells stop conversion.

Recovering an exact identifier from an already rounded numeric cell?

XLSX parsing cannot restore digits lost when the workbook was created, and JSON numbers cannot represent every large integer. Store identifiers as text in the source workbook. Unsafe integers are rejected. Limits are 20 MiB, 100,000 selected data rows, 500 used-range columns and 2,000,000 cells including headers.

How do I use this converter?

Choose an XLSX workbook and worksheet. Legacy XLS is outside this tool’s supported scope. Set the physical header row; a sheet beginning at B3 still uses row 3 and starts with column B. Choose objects or row arrays. Object output consumes the selected row as headers; row arrays include it. Review the column-renaming list: blank and duplicate names are made globally unique without dropping cells. Choose timezone-free date text or raw serial numbers. Inspect formula cache and merged-cell notes, then copy or download all JSON. Recalculate formulas in the source spreadsheet if current results are required.

Is my input uploaded or saved as a draft?

Processing runs in this browser. Input is not uploaded or saved as a draft; analytics excludes values and filenames.

Keep browsing