Excel to JSON Converter
Convert an .xlsx or .xls workbook into a JSON array of objects, keyed by your headers. Runs in your browser — no upload, no signup.
Drop your file here
Accepts XLSX, XLS · Runs in your browser. Your file never leaves your device.
Spreadsheets are how non-engineers ship data to engineers. JSON is what most modern code expects to consume. This tool bridges the gap without forcing you to write a one-off script: drop a workbook in, get a clean JSON array out where each row is an object keyed by header.
The same parser SheetCompare uses for spreadsheet diffs reads your file, so quirks like merged cells, formula values, and date serial numbers are handled the way Excel actually treats them. Output is pretty-printed JSON with two-space indentation. Conversion runs entirely in your browser — your file is never uploaded.
Three steps, no signup
- 1
Drop your workbook
Drag a .xlsx or .xls file into the box above, or click to pick one. The first sheet is converted; multi-sheet handling is described in the FAQ below.
- 2
We map rows to objects
Row 1 is treated as headers and becomes the object keys. Each subsequent row becomes one object in the output array. Empty cells become empty strings.
- 3
Download the .json
Download a pretty-printed JSON array. Drop it straight into your code, paste it into a seed file, or hand it to your API.
Frequently asked questions
- What about workbooks with multiple sheets?
- Only the first sheet is exported in v1. If your workbook has sheets that matter beyond the first, save each sheet as its own file (or use Excel's Save As → CSV per sheet) and convert them separately. A multi-sheet → JSON-with-named-keys mode is on the roadmap.
- What does the output JSON look like?
- A JSON array of objects. If your sheet has columns `name,email,age`, you get `[{"name": "...", "email": "...", "age": ...}, ...]`. Pretty-printed with two-space indentation. The output is a flat array — not NDJSON, not nested by sheet name.
- What happens to formulas?
- We export the cached value, not the formula text. So `=SUM(A1:A10)` in the source contributes `55` (or whatever it computed to) in the output. This matches what you'd see if you opened the workbook in Excel and read the cell. If a formula evaluated to an error like `#REF!`, you'll see that error string in the JSON.
- How are dates handled?
- Excel stores dates as serial numbers internally (days since 1900-01-01), and the parser converts cells with date formatting back into ISO 8601 date strings (e.g. `"2026-05-13"`). Dates without time components don't include a time. Cells that look like dates but aren't actually formatted as dates in Excel come through as the raw number — Excel can't tell us "this is a date" if the source spreadsheet didn't tag it.
- Are numbers, booleans, and strings preserved as native JSON types?
- Yes for numbers and booleans — Excel knows the cell type and we honor it. Strings stay as strings. The exception worth flagging: numeric-looking strings (account numbers with leading zeros, ZIP codes) preserve as strings only if Excel stored them as text in the source. If the source treated them as numbers, leading zeros are already gone before we touch the file — that's a source-of-truth problem, not a conversion problem.
- What about merged cells?
- The value lands in the top-left of the merged range; the rest of the merged region reads as empty. This is standard Excel behavior. For data exports, merged cells in headers cause the most pain — split the merges in Excel before export if you want clean column keys.
- What encoding is the output?
- UTF-8. JSON requires Unicode and we emit UTF-8 without a BOM. Non-ASCII characters from your spreadsheet — accented letters, CJK, emoji — pass through cleanly.