Excel to JSON Converter

Convert Excel to JSON in your browser — your spreadsheet never leaves your browser, and nothing you choose is uploaded.

Or drag and drop a file onto this box. The file is read in your browser and never uploaded. Files up to 50 MB.
Sheets in this workbook
SheetRowsColumnsVisibility
Options

Excel stores every number as a 64-bit float with 15 significant digits, so format long numeric IDs as Text in Excel to keep every digit. A .csv file has no cell types, so all of its values stay text.

JSON output

    
                    

    Your spreadsheet never leaves your browser. The two Send buttons pass the result between pages inside your browser tab only.

    An Excel to JSON converter turns the rows of a spreadsheet into data that code, APIs and databases can read directly. Teams use one to seed a database or a mock API from a product list, to turn a translation or configuration table that lives in a spreadsheet into a JSON file, to import business data into tools that accept only JSON, and to feed price or product sheets to a web app. This page reads .xlsx, .xlsm, .xls, .ods and .csv files in your browser, so your spreadsheet never leaves your browser. You choose the sheet and the header row, and how dates, formulas, empty cells and merged cells are written.

    How do I convert an Excel file to JSON?

    Choose your Excel file or drop it on the upload box, or load the sample workbook. The sheets appear in a list, the first visible sheet is converted straight away, and the JSON shows on the right. Change any option to update it, then copy the result, download it as a .json file, or send it onward.

    How to use this Excel to JSON converter

    • Choose a file: use the upload box or drag it on. The sheet list shows each sheet's rows, columns and whether it is hidden.
    • Pick a sheet: choose one sheet, or All sheets to get an object keyed by sheet name.
    • Set the header and range: First row is header gives one object per row; off gives arrays. Type a Range such as A1:D50 to read part of a sheet.
    • Choose how cells are written: empty cells, dates, formulas and merged cells each have an option.
    • Copy, Download or Send: copy the JSON, save a .json file, or send it to another tool.

    The JSON Formatter can already export your JSON as an Excel file, and this page goes the other way. Afterwards, the JSON Sorter orders keys, the JSON Schema Validator checks the rows, and the Mock Data Generator builds more test records. For a CSV file, the CSV to JSON converter adds type inference, and our guide to converting JSON to CSV, XML and YAML covers the other formats.

    Is my Excel file uploaded anywhere?

    No. Your spreadsheet never leaves your browser. It is read and converted by a script running on this page, using a copy of the open-source SheetJS library served from this site, and nothing you choose is uploaded. The page uses Google Analytics for anonymous usage counts that never include your data, sheet names or file names.

    The spreadsheet library loads only after you choose a file or the sample. Macros in .xlsm files are never run, and links to other workbooks are never fetched.

    How are dates, formulas and empty cells handled?

    Dates become ISO text such as 2026-10-11 by default, or Excel serial numbers if you choose. Formulas give the result Excel saved in the file, or the formula text if you prefer. Empty cells are left out of each row by default, or written as null or as an empty string.

    Numbers, booleans and text keep the type the cell has in the workbook, with no guessing from how a value looks. Text such as 007 stays the string 007.

    How do I convert several sheets at once?

    Pick All sheets in the sheet list. The output becomes an object whose keys are the sheet names and whose values are arrays of rows. Hidden sheets are skipped unless you tick Include hidden sheets, and every sheet follows the same header, range and cell options you set.

    A sheet named __proto__ or constructor stays an ordinary key and cannot change how other objects behave.

    What does the output look like for a real workbook?

    The sample workbook has two sheets. Here is the first, Products, and the exact JSON this tool writes for it with the default options. The output was produced by running this page's own conversion code on the sample, and a test re-checks it.

    Products sheet, as Excel shows it (the Region cell is merged across two rows)
    skunamepricein_stockaddedqtystock_valuesupplierregion
    007Desk lamp24.5TRUE2026-09-1410245NorthwindNorth
    008Notebook3.2TRUE2026-09-15 09:30200640
    009Standing desk389FALSE2026-09-1600ContosoSouth

    JSON for the Products sheet

    [
      {
        "sku": "007",
        "name": "Desk lamp",
        "price": 24.5,
        "in_stock": true,
        "added": "2026-09-14",
        "qty": 10,
        "stock_value": 245,
        "supplier": "Northwind",
        "region": "North"
      },
      {
        "sku": "008",
        "name": "Notebook",
        "price": 3.2,
        "in_stock": true,
        "added": "2026-09-15T09:30:00",
        "qty": 200,
        "stock_value": 640
      },
      {
        "sku": "009",
        "name": "Standing desk",
        "price": 389,
        "in_stock": false,
        "added": "2026-09-16",
        "qty": 0,
        "stock_value": 0,
        "supplier": "Contoso",
        "region": "South"
      }
    ]

    The sku column was typed as text, so 007 keeps its zeros. The added column holds real dates, written as ISO text, with the time only on the row that has one. The stock_value column is a formula, and the saved result comes out. The supplier cell on the second row is empty, so the key is left out. The Region cell is merged over two rows and holds its value only in the top-left cell, so the second row gets no region unless you choose to repeat merged values.

    Excel to JSON gotchas

    Dates are numbers underneath

    Excel stores a date as a count of days and shows it through a number format. This converter reads the format to spot dates, including workbooks that use the 1904 date system, and writes 2026-09-14, or 2026-09-15T09:30:00 when the cell has a time. There is no time zone, because Excel has none. A time on its own becomes 09:30:00, and a duration such as 36:15 stays a number. Choose Excel serial number to keep the raw value.

    Formulas return cached values

    A formula cell holds the result Excel saved the last time the file was calculated, and that is what you get. A formula that has no saved result, for example from a file written by a script, is left empty and a warning says how many. Cells with an error such as #DIV/0! are written as that text. Choose Formula text to get the formula itself, with a leading equals sign.

    Long numeric IDs and 15 digits

    Excel keeps every number as a 64-bit float with 15 significant digits. A 20-digit number typed into a number cell is already rounded inside the file and comes out as 12345678901234567000. An ID stored as text keeps all its digits, so format ID columns as Text in Excel before you type or paste into them.

    Leading zeros

    A text cell holding 007 stays "007". A number cell that merely displays 007 through a number format such as 000 holds the number 7, and 7 is what comes out, because the stored value is the only thing a file keeps.

    Merged cells

    Only the top-left cell of a merge holds a value, so the other rows look empty. Choose Repeat the value to copy it across the merge instead. A merge that is too big to repeat keeps its value in the top-left cell and a notice says so.

    Hidden sheets

    Hidden sheets appear in the sheet list, marked Hidden, but All sheets leaves them out unless you tick Include hidden sheets.

    Duplicate and empty headers

    Two columns called name become name and name_2, and an empty header becomes column_N, where N is the column's place in the range. A notice lists every rename, so you can fix the sheet if you prefer.

    .xls, .xlsx, .ods and .csv

    All of them read the same way in our tests, including the older .xls format. A .csv file has no cell types, so every value stays text. Password-protected workbooks are not supported: the tool says so, and removing the password in Excel fixes it.

    What are the limits of this converter?

    Files above 50 MB are refused, and so is a sheet that declares more than 1,000,000 rows or 1,000 columns, because a small file can claim a huge empty range; a Range reads just the part you need. Output above about 20 MB stops with a message, and above about 2 MB only a preview is shown while Copy and Download use the full result.

    Frequently Asked Questions

    How do I convert an Excel file to JSON?

    Choose your .xlsx, .xls or .ods file, or drop it on the upload box. The first visible sheet is converted straight away, and the JSON appears on the right. Change any option to update it, then copy the result, download it as a .json file, or send it to the JSON Formatter.

    Is my Excel file uploaded anywhere?

    No. Your spreadsheet never leaves your browser. It is read and converted by a script running on this page, and nothing you choose is sent to a server. The page uses Google Analytics for anonymous usage counts, which never include your data, sheet names or file names.

    How are dates, formulas and empty cells handled?

    Dates become ISO text such as 2026-10-11, or Excel serial numbers if you choose. Formulas give the result Excel saved in the file, or the formula text if you prefer. Empty cells are left out of each row by default, or written as null or an empty string.

    How do I convert several sheets at once?

    Pick All sheets in the sheet list. The output becomes an object whose keys are the sheet names and whose values are arrays of rows. Hidden sheets are skipped unless you tick Include hidden sheets, and every sheet follows the same header, range and cell options.

    Which spreadsheet formats can it read?

    It reads .xlsx and .xlsm (macros are never run), the older .xls, OpenDocument .ods, and .csv files. A .csv file has no cell types, so every value stays text. Password-protected files are not supported: remove the password in Excel first.

    Built and maintained by Deepak Kumar. Your spreadsheet never leaves your browser.