Excel to JSON
This free tool converts Excel to JSON entirely in your browser. Drop an .xlsx or .xls workbook in, choose the worksheet and the header row, and get a JSON array out — the reverse of the JSON to Excel converter on this site. Nothing is uploaded, there is no sign-up, and the workbook is parsed with the browser's own file reader.
Converting a spreadsheet to JSON looks like the easy direction, and that is exactly why it goes wrong quietly. A workbook has several worksheets but a JSON array is one table; a workbook knows that 007 is text and 2026-03-04 is a date, but JSON has to be told; a header row can have a blank cell, or two columns both named name. This page does not hide those choices behind a black box — it writes down every decision it made, so you can see why a value came out as a number, a string, or null.
How to use this Excel to JSON converter
- Drop an
.xlsx/.xls/.xlsmfile on the box, or click it to choose one. No file handy? Use load a sample workbook — it is generated in your browser so you can see the whole flow first. - Pick the Worksheet. A workbook can have many sheets; choose the one you want, or All sheets to get a JSON object keyed by sheet name.
- Set the Header row. Auto uses the first non-empty row; or pin it to row 1, 2 or 3; or choose None to generate
column_1,column_2… and keep every row as data. - Choose the Output shape (array of objects, or array of arrays) and how Blank cells should be written (
null, an empty string, or omitted). - Read the How this JSON was built report under the output — it names the sheet, the header row, every key and its inferred type.
- Click Download .json. The file name carries a timestamp, so repeated exports never overwrite each other.
What this tool supports
Worksheets
A JSON array is one table, so one worksheet is converted at a time by default. When the workbook has more than one sheet, the picker lists every sheet with its row count and the report names the sheet being read — the first sheet is only used because you have not picked another one yet, and it says so. Choose All sheets to get a JSON object keyed by sheet name instead.
Header row and keys
With Header row on Auto, the first non-empty row becomes the object keys and every row below it becomes one object. A blank header cell is named column_3 rather than dropped, so no column disappears silently. If two headers are the same, the second becomes name_2 — JSON objects cannot hold two identical keys, and quietly overwriting one column would lose data. Set the header row to None when the sheet has no header: keys are generated as column_1, column_2… and the first row is kept as data.
Data types
With Detect types on (the default), the tool reads each cell the way the workbook stored it:
- Numbers become JSON numbers, so they sort and calculate.
- Booleans (
TRUE/FALSE) becometrue/false. - Dates become ISO-8601 strings such as
2026-03-04T00:00:00.000Z, not Excel's internal serial number (which is what46085is). - Numbers with a leading-zero format — an extension stored as
7but displayed007— are kept as the text"007", because a JSON number cannot hold a leading zero and turning it into7would lose it. - Empty cells become
nullby default (or"", or are omitted — your choice).
Set Data types to Keep everything as text to get every value as the string the workbook displayed, including dates in their own format. That is the right choice when a downstream system wants strings and you would rather not have it re-guess types.
What the tool refuses to guess
A text cell that happens to read "30" stays the string "30" — the tool does not re-type text cells into numbers or booleans, because a product code of 0012 or a name of True would be corrupted by that guess. The report lists what each column actually held, so if a column you expected to be numeric comes out as text, you can see that the cells were text in the workbook, not that the converter failed.
Formulas, merged cells and everything JSON cannot hold
Formula cells are exported as their last saved result — the value Excel cached in the file; this page does not recalculate a workbook. Only the top-left cell of a merged range holds a value, so the rest of the range comes out blank, and the report counts the merged ranges it found. Cell colours, comments, images and charts are dropped, because JSON is data and has nowhere to put them.
Privacy
The file is read with the browser's own file reader and converted in the page. There is no upload endpoint, no account, and no stored history. You can disconnect from the internet after the page loads and it will still work.
Limits
- Encrypted or password-protected workbooks cannot be read. There is no password prompt, and the error says so.
- The
.xlsxformat holds at most 1,048,576 rows and 16,384 columns per sheet; the older.xlsholds 65,536 rows and 256 columns. Those are the formats' ceilings, not this tool's. - Integers longer than 15 digits (a 16-digit card number, say) exceed what a double can hold exactly; Excel has already rounded such a value by the time it is saved, so it is exported as the number the file contains and flagged in the report.
- Very large workbooks are limited by your device's memory, since the conversion happens in the browser rather than on a server.
FAQ
Is this Excel to JSON converter free?
Yes. Free, no login, no usage cap, and everything runs in your browser. For the other direction see the JSON to Excel converter, and for other formats the Excel to CSV, CSV to JSON, XML to JSON and JSON to XML converters, plus JSON to CSV on the home page.
Do I have to upload my Excel file?
No. The workbook is read locally with the browser's file API and converted in the page. Nothing is uploaded, logged or stored, and you can go offline after the page loads.
Can I convert XLSX to JSON, and the older XLS as well?
Both. .xlsx and .xls (Excel 97-2003) are read the same way; .xlsm workbooks are accepted too, with macro code discarded as JSON cannot carry it.
My workbook has several sheets. Which one becomes the JSON?
The one you pick in the Worksheet list — every sheet is listed with its row count, and the report names the sheet being read. Choose All sheets to get a JSON object keyed by sheet name, with each sheet's rows as an array.
Why did my numbers come out as text, or my dates as 2026-03-04T00:00:00.000Z?
Dates are written as ISO-8601 strings because Excel stores a date as a serial number (46085) and a JSON number cannot say that it is a date. Numbers that the workbook displays with a leading zero — 007 — stay text so the zero survives. If a whole column you expected to be numeric came out as text, the cells were stored as text in the workbook; switch Data types to Keep everything as text if you want a consistent all-string output instead.
What happens to blank cells and blank rows?
Blank cells become null by default; choose an empty string or omit the key in the Blank cells list. Blank rows — the visual separators people leave between blocks — are skipped rather than turned into empty objects, and the report tells you how many were skipped.
What about merged cells?
Only the top-left cell of a merged range holds a value, so the rest of the range reads as blank. A header row with merged cells will therefore have gaps; the report counts the merged ranges it found so the gaps are not a surprise.
What happens to formulas?
The last saved result is exported, which is the value stored in the workbook. Nothing is recalculated here, so make sure the file was saved after its last recalculation in Excel.
Can I convert JSON back to Excel?
Yes — the JSON to Excel converter is the reverse of this page. For a comma-separated file instead of a workbook, use the Excel to CSV converter.
Is there a file size limit?
No imposed limit — conversion runs in your browser's memory, so large workbooks depend on your device. The row ceilings you may hit belong to the .xlsx and .xls formats themselves.