Convert Excel files to JSON object arrays online. All processing is done locally in your browser.
TL;DR: Free online Excel to JSON converter that turns spreadsheet rows into JSON object arrays with headers as keys. Supports multiple sheets and nested structures. Ideal for API development, parsed entirely locally.
For local tools, open DevTools → Network and search your input — it should not appear in requests.
Next steps
Usage Guide
Stakeholders send .xlsx; APIs want object arrays. Parse workbooks locally with SheetJS — first row as keys; switch worksheets from the dropdown when present. No upload.
1. Steps
Matches sheet_to_json defaults. Paste-as-values first for dirty sheets.
- Drop .xlsx/.xls.
- Pick a worksheet if multiple exist.
- Copy or download JSON; chain to TS types if needed.
2. Multiple sheets
No silent mega-merge of all sheets.
- Single-sheet files skip the dropdown.
- Export one sheet at a time; merge downstream.
- Names come from workbook metadata.
3. Cleanup
Local and zero-install trade off memory headroom.
- Keep leading zeros as text.
- Inspect empties with the formatter.
- Huge sheets leave the browser.
4. Vs CSV path
CSV text → CSV/JSON converter. Sharing with spreadsheet users → JSON→Excel. Sibling pages cover HTML/Markdown/CSV exports.
5. Types downstream
This page stays faithful to cells; beautify elsewhere.
- Numbers may be inferred.
- Validate with JSON Schema.
- Semantic fakes belong in the mock generator.
6. Safety
Keep sensitive rosters local. Desensitize before commits; archive sheet name + row count with the export.
FAQ
Entirely in your own browser: SheetJS reads the workbook locally and produces the JSON on the spot, with nothing uploaded. Sensitive sheets like contracts, rosters, and payroll never need to visit a third-party converter.
The first row of the active worksheet becomes field names, and every following row turns into one object — the same default as SheetJS sheet_to_json. Dates may come out as serial numbers, and merged cells or cached formula values can surprise you; for messy sheets, paste-as-values in your spreadsheet app before uploading.
A worksheet dropdown appears showing the real sheet names, and switching recomputes instantly; single-sheet files simply hide the control. Only the selected sheet is exported — there is no automatic merge. To combine sheets, concatenate the arrays downstream with a sheet field so nothing gets silently dropped.
Very large sheets can exhaust browser memory — at the million-row scale, switch to Python/pandas or a CLI. Format leading-zero columns (employee IDs, postal codes, bank cards) as text in the source sheet or zeros may drop. Purely numeric columns get inferred as numbers; mixed columns mostly stay strings.
Go back to the source first: a filter view may be hiding rows, or the wrong sheet is selected. Empty rows and columns also create missing keys or nulls, so scan the output with a JSON formatter before importing.
The tool only reads cell values — it never executes macros or follows external links. Even so, avoid opening office documents from unknown sources in the first place, and sanitize or sample the JSON before committing it to a repo.
Related Tools
Related Articles
Excel to JSON: Dates Become Numbers / Chinese Garbled — Fix
When converting Excel to JSON, dates turn into numbers like 44927, Chinese is garbled, empty cells vanish? Explains Excel serial dates and encoding pitfalls, with our Excel to JSON tool.
The Complete Guide to Table Format Conversion: Excel, CSV, JSON, Markdown, and HTML
Convert between Excel, CSV, JSON, Markdown, and HTML tables — delimiters, headers, empty cells, merged-cell boundaries, and matching browser tools.
JSON Integer Precision Trap: When Snowflake IDs Are Silently Rewritten
JSON numbers beyond 2^53-1 are rounded by JSON.parse. Compare naive formatters with a lossless path, and cross-link JWT, Base64, and this site’s JSON tools.