Excel to JSON converter

Drop a .xlsx or .xls file and get clean, pretty-printed JSON. Your spreadsheet never leaves your device.

Excel in, JSON out, nothing uploaded

Most Excel to JSON sites work by uploading your spreadsheet to a server, converting it there, and handing you back a download. That is a strange thing to do with a file that might contain your customer list, your payroll or your sales pipeline. This tool does the whole job in your browser: the file is opened with JavaScript on your own machine, converted on your own machine, and your spreadsheet never leaves your device. Once the page has loaded, the converter keeps working with the internet switched off entirely.

Drop a .xlsx or .xls file onto the box above. The first sheet is converted immediately, and if the workbook has more than one sheet you get a row of buttons to switch between them. The result is pretty-printed JSON you can copy to the clipboard or download as a .json file.

Worked examples

A sheet with headers Name, City and one row: Ada, London
[{"Name": "Ada", "City": "London"}], one object per row, one key per column
The same sheet with first row is headers unticked
[["Name", "City"], ["Ada", "London"]], every row becomes a plain array, including the header line
A 250-row sheet with 4 columns
250 objects with 4 keys each, so 250 × 4 = 1,000 values in the output

The Excel date gotcha

Excel does not store dates as dates. It stores them as serial numbers counting days, and only the cell's display format makes them look like dates on screen. A naive converter exports the raw number, which is why so many people end up with a JSON file full of values like 45658 where their dates used to be.

date = 30 December 1899 + serial number in days

So serial 45658 is 1 January 2025, and serial 46245 is 11 August 2026. The count starts from the end of 1899, and for historical reasons it even includes a 29 February 1900 that never existed, a bug Excel keeps on purpose for compatibility with Lotus 1-2-3. This tool spots date cells when it reads the file and writes them out using the display format saved in your spreadsheet, so a cell showing 01/01/2025 in Excel arrives in your JSON as a readable date, not a five-digit mystery. One caveat: the format is whatever the file specifies, so a sheet saved with American formatting will export American-style dates.

Headers, sheets and strings

The first row is headers option, on by default, decides the shape of the output. Ticked, the top row supplies the key names and each following row becomes one object, which is the shape most APIs, scripts and databases want. Unticked, you get an array of arrays, one per row, which suits raw grids and sheets without a header line. Blank cells become empty strings rather than being silently dropped, so every object has the same keys.

Multi-sheet workbooks are handled one sheet at a time: pick a sheet, copy or download it, then pick the next. Up to 8 sheets are offered as buttons, which covers almost every real workbook. Values are exported as the text Excel displays, which is what keeps dates, percentages and currency formats intact, but it also means numbers arrive as strings. That is deliberate. Type-guessing is how phone numbers lose leading zeros and product codes get mangled, so the converter gives you exactly what the sheet shows and lets you cast the fields you trust in your own code. If you want to tidy or minify the result afterwards, the JSON formatter linked below will do it in one click.

Frequently asked questions

Is my spreadsheet uploaded anywhere?

No. The file is opened and converted entirely in your browser with JavaScript. It never leaves your device, nothing is stored, and once the page has loaded the converter works with no internet connection at all.

Why do dates come out as readable dates and not numbers?

Excel stores dates as serial numbers counting days from the end of 1899, so 1 January 2025 is really stored as 45658. This tool spots date cells and outputs them using the display format saved in your file, so you get a readable date instead of a bare serial number.

What does the first row is headers option do?

When ticked, the values in the first row become the keys of each JSON object, so a Name column produces objects with a Name property. When unticked, every row including the first becomes a plain array of values, which suits sheets with no header row.

My workbook has several sheets. Which one is converted?

The first sheet is converted automatically, and if the workbook contains more than one sheet a row of buttons appears so you can switch between them. Up to 8 sheets are shown. Each sheet is converted separately, so download each one you need.

Why are numbers wrapped in quotes in the JSON?

Values are exported as the text Excel displays, so currency symbols, percentages and date formats survive the trip. That means numbers arrive as strings. If your code needs real numbers, convert the specific fields you trust after parsing, where you can handle blanks deliberately.

Related tools