Convert Excel to JSON online
Convert XLSX and ODS worksheets into typed JSON — real numbers, booleans and ISO dates, header row options and one-click all-sheet export.
- Runs in your browser
- Files are never uploaded
- Free, no account
How to convert an Excel sheet to JSON
- Drop the workbook —
.xlsx,.xls,.xlsm,.xlsb,.odsor.csv. - Pick the worksheet, or choose “All sheets” to get one JSON object keyed by sheet name.
- Choose where the keys come from: the first row, the column letters, or nothing at all if you want arrays of arrays.
- Set the date and type behaviour so the output matches what your API or database expects.
- Copy or download the
.json.
Choosing an output shape
| Keys come from | Output | Best for |
|---|---|---|
| The first row | [{ "name": "Ada", "role": "engineer" }] | API payloads, seed data, most imports |
| Column letters | [{ "A": "Ada", "B": "engineer" }] | Sheets with no header, or duplicated headers |
| No keys | [["Ada", "engineer"]] | Positional processing and matrix maths |
| All sheets | { "Q1": [...], "Q2": [...] } | Converting a whole workbook in one pass |
How Excel dates become JSON
Excel has no date type. It stores a number — the count of days since 30 December 1899 — and attaches a display format. That is why a date pasted between workbooks sometimes turns into 45,000. This converter reads the format, recognises the cell as a date, and lets you decide how to write it:
| Mode | Example output | Use when |
|---|---|---|
| ISO 8601 | "2026-08-16T00:00:00.000Z" | Feeding an API or a JS new Date() |
| Date only | "2026-08-16" | Calendar dates with no meaningful time |
| As displayed | "16/08/2026" | Reproducing a human-facing report |
| Serial number | 46250 | Round-tripping back into a spreadsheet |
Header rows that are not quite clean
Real sheets have empty header cells and repeated labels. Both are handled without losing data: an empty
header becomes column_3, and a repeat becomes total_2. If your headers use dot
notation such as address.city, turn on “Expand dotted headers” and the flat row is rebuilt
into a nested object.
Typed values, and when to switch them off
With typed values on you get real JSON numbers, true/false booleans and
null for blanks — the shape a database or a schema validator expects. Switch it off when
formatting carries meaning: a part number stored as 0042, a percentage you want as
"12.5%", or an account reference longer than fifteen digits that would lose precision as a
floating-point number.
Runs entirely on your device
The workbook is parsed by SheetJS inside this browser tab. No upload, no queue, no retention window — which is what makes it safe for payroll exports, patient data and anything else covered by an NDA.
Questions
Are numbers exported as numbers or strings?
As real JSON numbers when “Typed values” is on, along with true/false booleans and null for empty cells. Switch it off to receive exactly the text each cell displays.
How are Excel dates converted?
Excel stores dates as serial numbers. Choose ISO 8601, date-only, the displayed text, or the raw serial number — whichever your target system expects.
Can I convert every worksheet in one go?
Yes. Pick “All sheets” and you get a single JSON object keyed by worksheet name, with each value being that sheet’s array of records.
What if two columns share the same header?
The second one is suffixed automatically (name, name_2) so no data is lost, and empty headers become column_1, column_2 and so on.