SmartQueryTools

Compare Schema of Excel Files Online

Compare the schemas of two Excel files directly in your browser. See which columns exist in each file and spot type mismatches — no upload required.

How to compare Schema of Excel files

  1. Drop the first file onto the File A area and the second onto File B. Both must be in the format this page is for.
  2. The comparison runs as soon as both files are loaded. There are no settings to choose.
  3. Read the four counts at the top: Matched, Type mismatches, Only in A and Only in B.
  4. Go through the column-by-column list. Each column has a coloured dot and shows its type in one or both files.
  5. Drop a new file on either side to compare again. Nothing is downloaded, because the result is an on-screen report.

Your file is processed locally in your browser and is never uploaded. The free limit is 50 MB per file; larger files work if your device has the memory for them.

Worked example

An inventory team loads each monthly stock count into the same database table. April's export came from a new warehouse system and the load failed. File A is March's export, shown below.

Input (Excel)

Excel workbook, first sheet (Sheet1)

skuproduct_nameqty_on_handunit_costlast_counted
HB-M8-40Hex bolt M8x404200.122026-03-31
WS-M8Washer M811500.032026-03-31
NT-M8Nyloc nut M86100.052026-03-30

Settings

  • File B (April) has the columns sku, product_name, qty_on_hand, unit_cost, warehouse, count_date
  • One qty_on_hand value in File B is "12 (est)", so that column loads as text
  • No other settings: the diff runs once both files are loaded

Result

columnfile_a_typefile_b_typestatus
skuVARCHARVARCHARMatched
product_nameVARCHARVARCHARMatched
qty_on_handBIGINTVARCHARType mismatch
unit_costDOUBLEDOUBLEMatched
last_countedDATENULLOnly in A
warehouseNULLVARCHAROnly in B
count_dateNULLDATEOnly in B

The summary shows 3 matched, 1 type mismatch, 1 only in A and 2 only in B. qty_on_hand is in both files, but one annotated value made the April column text. last_counted and count_date hold the same data under different names. Columns are matched by exact name, so the tool lists them as unrelated. Renaming count_date to last_counted would turn two differences into one match.

Working with Excel files

Excel columns have no declared type. The first sheet of each workbook is turned into text using what each cell displays, and the types are guessed from that text. Cell formatting therefore changes the result. A price column formatted as currency, such as $1,200.00, loads as VARCHAR, while the same numbers in General format load as numbers. Two workbooks with identical values can show a type mismatch for that reason alone. Dates are the exception. Cells with a date format load as DATE however they are displayed, so 3/2/26 and 02-Mar-2026 compare as the same type. A date left in General format loads as a serial number such as 46083, which shows up as a numeric type against DATE.

Header cells are compared as text. A header with a line break typed with Alt+Enter will not match the same words on one line. Merged header cells leave the rest of the range blank, and a blank header gets a placeholder name such as column3. Only the first sheet of each workbook is compared, so extract the sheet you care about first if it is not the first one.

Frequently Asked Questions

Why does the same column show VARCHAR in one workbook and a number type in the other?

Usually cell formatting. Currency, accounting and thousands-separator formats load as text because the loader reads the displayed value. Set both columns to General or Number in Excel, save, and compare again.

Can I compare two sheets from the same workbook?

Not in one step, because the tool reads the first sheet of each file. Save each sheet as its own workbook, or use the Excel Sheet Extractor, and drop one on each side.

Does schema diff compare the data in the rows?

No. It compares column names and types only. The row count of each file is shown under its drop area, but values are never compared. Use Compare Files to find rows that differ.

Are column names matched case-sensitively?

Yes. Email and email count as two different columns, one only in A and one only in B. Column position does not matter: a column is matched by name wherever it sits.

Why is INTEGER against BIGINT reported as a mismatch?

Types are compared by their exact names. INTEGER and BIGINT, or DECIMAL(10,2) and DECIMAL(18,2), count as mismatches even though the values fit together. A wider type in the new file is usually safe to load. Text where a number used to be usually is not.

Related Tools