Excel to JSON Converter
Upload an Excel file and download a JSON array of objects — keyed by the header row.
Was this tool helpful?
Thanks for the feedback!
Upload an Excel file and this converter turns the first sheet into a JSON array with one object per row, keyed by the column headers in the first row. Developers use it to turn a spreadsheet into seed data, test fixtures, config lists or a payload for an API.
From rows to objects
Suppose the first sheet looks like this:
| Name | Joined | Salary |
|---|---|---|
| Asef | 15-01-2026 | 800000 |
| Riya | 01-06-2025 | 650000 |
If Joined holds real Excel dates, the output is:
[
{ "Name": "Asef", "Joined": 46037, "Salary": 800000 },
{ "Name": "Riya", "Joined": 45809, "Salary": 650000 }
]
The real output puts each key on its own line with two-space indentation. Use Copy result or Download result to get the .json file; the on-screen preview is cut at 4,000 characters for large sheets.
How values are typed
- Numbers stay numbers and TRUE/FALSE cells become JSON booleans.
- Text becomes strings, including values stored as text such as "007".
- Dates come out as Excel serial numbers: the number of days since 30 December 1899, so 46037 is 15 January 2026.
- Percentages are raw fractions: a cell showing 12.34% becomes 0.1234.
- Formulas give their last calculated value, not the formula itself.
Header quirks and missing values
- An empty cell does not produce a key at all. If Asef has no Bonus, his object simply has no "Bonus" property, so code should treat missing keys as empty.
- Completely blank rows are skipped.
- Duplicate headers get a suffix: a second "Name" column becomes "Name_1".
- A column with a blank header is keyed "__EMPTY", then "__EMPTY_1" and so on, so give every column a header before converting.
Choosing header names that work in code
Header text is used as the key exactly as typed, spaces and capitals included. A column headed "Joined Date" has to be read as row["Joined Date"], while headers written as joined_date or joinedDate allow plain dot notation such as row.joinedDate. Renaming headers in Excel before converting is much quicker than mapping keys afterwards. The output is always flat: each row becomes one object with one level of keys, so nested structures such as an address object inside each customer have to be built in code after conversion.
Turning serial numbers back into dates
In JavaScript, new Date(Date.UTC(1899, 11, 30) + serial * 86400000) converts a serial to a date; for 46037 it gives 2026-01-15. If you would rather have readable strings in the JSON, add a helper column in Excel with =TEXT(B2,"yyyy-mm-dd") and convert that column instead, or format the date column as Text before saving.
Related conversions
To go back from JSON to a spreadsheet, use the JSON to Excel Converter. To generate TypeScript interfaces for the objects you just exported, paste one of them into JSON to TypeScript. Your workbook is read inside the browser tab and not uploaded anywhere.