Convert Excel to JSON Online
Upload an .xlsx file and get clean JSON back — with multi-sheet support, type inference, and sensible handling of merged cells and blank rows.
Excel → JSON
Free Excel to JSON converter. Upload .xlsx or .xls and get a JSON array for each sheet. Handles merged cells, blank rows, and multiple sheets. Works entirely in your browser — no upload to any server.
Output will appear here
How to use the Excel → JSON
Paste or upload your EXCEL data
Paste text directly into the input box, drag and drop a file onto it, or click "Upload file" to browse. Conversion starts instantly on paste — no button click required.
Configure options (optional)
Open the Options panel to customise delimiter, headers, nested-object flattening, and more. Use the Field Selector to pick exactly which columns appear in the output.
Copy or download your JSON
Click Copy to grab the result, or Download to save the file. Everything runs locally in your browser — no data ever leaves your device.
Frequently Asked Questions
- Is my data safe?
- Yes. Every conversion runs entirely inside your browser. No data is ever transmitted to a server. The tool works offline once loaded.
- What is the maximum file size?
- There is no hard limit. Files under 1 MB convert instantly. Files 1–10 MB show a progress indicator. Files over 10 MB prompt a warning and run in a background thread to keep the browser responsive.
- Why does my EXCEL fail to parse?
- Common causes are trailing commas, single-quoted strings, unquoted keys, or missing closing brackets. The converter auto-repairs many of these and tells you exactly what it changed.
- Can I convert multiple files at once?
- The tool handles one file at a time. For bulk conversion, consider the csvjson CLI or API.
Related Converters
How it works
The first row becomes JSON keys
Each sheet is converted independently. The first non-empty row is treated as column headers and becomes the keys of each JSON object. Every subsequent row becomes one object in the output array. If a cell is empty, the key is present with a `null` value rather than being omitted, so all objects in the array have the same shape.
Multiple sheets produce a keyed object
If your workbook has multiple sheets (Q1, Q2, Q3, or Customers + Orders), the output is a JSON object keyed by sheet name: `{ "Q1": [...], "Q2": [...] }`. You can also download each sheet as a separate JSON file, or pick which sheets to include.
Numbers, dates, and booleans are inferred
Excel stores dates as serial numbers internally (e.g., 45000 = 2023-03-11). This converter translates them to ISO 8601 strings (`2023-03-11`) so they're usable in any language without fighting Excel's date epoch. Numbers stay as JSON numbers. TRUE/FALSE cells become `true`/`false`.
Example
Multi-sheet quarterly sales report
Sheet: Q1 Sales Rep | Region | Revenue | Target | % Achieved Sarah Chen | West | 125000 | 100000 | 125% Marcus Webb | East | 87500 | 90000 | 97% Priya Nair | South | 103200 | 95000 | 109%
{
"Q1 Sales": [
{
"Rep": "Sarah Chen",
"Region": "West",
"Revenue": 125000,
"Target": 100000,
"% Achieved": "125%"
},
{
"Rep": "Marcus Webb",
"Region": "East",
"Revenue": 87500,
"Target": 90000,
"% Achieved": "97%"
},
{
"Rep": "Priya Nair",
"Region": "South",
"Revenue": 103200,
"Target": 95000,
"% Achieved": "109%"
}
]
}Revenue and Target are real JSON numbers (not strings), so you can feed them into a database or calculation immediately. The sheet name becomes the top-level key, making it easy to extract just the Q1 data by name.
Edge cases, handled
Merged cells
A merged cell's value is assigned to the top-left cell of the merge. The other cells in the merged range are treated as empty. This means a header row with merged cells will have gaps — you'll want to review the output column names.
Blank rows in the middle of data
Blank rows are skipped by default. This handles the common spreadsheet pattern of using blank rows as visual separators — they don't produce null-filled JSON objects.
Formulas
The converter reads the calculated value of formula cells, not the formula itself. `=SUM(A2:A10)` becomes the numeric result. If a formula produced an error (#REF!, #DIV/0!), the cell is treated as null.
Frequently asked questions
Does my Excel file leave my computer?
No. The .xlsx file is parsed entirely in your browser using JavaScript. It never leaves your device. There's no server receiving or storing your data.
My spreadsheet has 20 sheets but I only need 2. Can I pick which ones?
Yes. After uploading, a sheet selector shows all available sheets. Deselect the ones you don't need and only the selected sheets appear in the JSON output.
What happens with cells that have comments or formatting but no value?
They're treated as empty cells and produce a null value in the JSON. Comments (cell notes) are not included in the output.
I have a column with dates that are showing up as numbers like 45200. How do I fix that?
That's Excel's internal date serial format. Make sure the 'Parse dates' option is on — it translates Excel date serials to ISO strings (2023-10-15). If it's still happening, the column might be formatted as 'General' instead of 'Date' in Excel, which prevents automatic detection. Try formatting the column as Date in Excel before converting.
What's the difference between .xlsx and .xls support?
Both work. .xlsx (Excel 2007+) is the modern format and handles up to 1 million rows. .xls (Excel 97-2003) is supported for legacy files but is limited to 65,536 rows and has slower parsing. If you have an .xls file and it's important, consider saving it as .xlsx in Excel first.
Related Tools
All conversions run in your browser — nothing is uploaded.
Browse all 26 converters →