ShareMaster V2 is in beta, a complete rebuild. See what is new and request access →
Features All features overview
Migration Tools Overview Structure and content OneDrive ↔ SharePoint Content only Structure only Move / Copy Upload from this computer Download to this computer Dropbox to SharePoint Resume and incremental runs
Recycling Bin Overview Browse a site's recycle bin Empty recycle bins in bulk Restore and purge history
Archive Overview Configure the tenant On Demand Archive Restore Archived Files Archive Savings Report Blob Viewer
Optimise Storage Tools Overview Delete all items in a list Delete all files and folders in a library Remove empty folders Remove duplicate files Reduce image sizes Delete sites and subsites
SharePoint Tools Overview Tenant Explorer SharePoint Explorer Easy Settings Fix renamed groups List Explorer Search the Preservation Hold Library
Replace Overview Replace in SharePoint Replace in local files Find password-protected files
Shared Links Overview Report shared links Report unique permissions Remove a person from sharing links Remove shared links Remove unique permissions
Version History Overview Version trimming Version trimming report Reset file version
Reports Overview Inventory report Folder inventory Site and subsite storage Security matrix Teams permissions Pre-migration analysis Compare items Dropbox to Microsoft 365 compare Duplicate file report Empty folder report Image size report Recycle bin report Unused licences Report history
V2 beta Pricing Demos Blog Guides Use cases Compare Tools Alerts FAQ Contact Sign in Start free trial
  1. Home
  2. Documentation
  3. Reports

Compare items

Source against destination

The report you run after a migration, when somebody asks whether everything actually arrived. It compares a source site against a destination site, in the same tenant or across two different ones, and exports the differences. Shallow answers whether anything is missing; deep also compares field values on the items that did arrive.

Reads only. Nothing in SharePoint is changed.

What it tells you

  • Whether every list and library on the source exists on the destination, paired by title. A list that exists only on the destination is not reported.
  • Item counts on both sides, and what is missing or extra, per list.
  • In a deep comparison, which matched items have field values that differ, and which fields they are.
  • A per-list status, so a hundred-list migration is one sheet you can sort rather than a hundred checks.

How it runs

  1. Sign in to both ends. Source and destination sign in independently, because they are frequently different tenants with different accounts.
  2. Pick the two sites. One source, one destination.
  3. Choose shallow or deep. Shallow compares item counts, and reads and matches the items only for a list whose counts differ. Deep matches every item and also compares field values, which is thorough and much slower.
  4. Save the workbook. Overview first, then a tab per list where something differs.

How it works

Both sites' lists are read, leaving out hidden lists and system catalogues; Site Pages is kept. Source lists are paired with destination lists by title, ignoring case. A source list with no partner is reported as wholly missing, with each of its items named. Lists that exist only on the destination are not reported. Lists are compared one at a time.

In a shallow compare each list's item count is compared first. When the counts agree the list is marked Match without its items being read. When they differ, both sides' items are read and paired. Items are paired by their path inside the list, ignoring case, so a file is matched by where it sits rather than by its item number, which a migration does not keep. Items in an ordinary list have no folder path of their own, so in practice they pair by item number.

A deep compare always reads and pairs every item, then compares values on the items found on both sides. For a library every visible, editable column is compared; for an ordinary list only Title is compared unless you choose to compare list fields. Hidden, read-only and system columns, such as the created and modified dates, the author and the identifiers, are never compared. People are compared by email address, dates in UTC, managed metadata by term, and lookups by the item they point to.

Each list's status is the first of these that applies: Missing items, Value drift, Count mismatch, Match. A list that cannot be read is marked with the error, its partial results are dropped, and the compare continues. The workbook goes into History when the run ends, and saving it is offered afterwards.

What you get

An Excel workbook, named like ShareMaster-shallow-compare-20260901-142207.xlsx, kept in Report History whether or not you save it. Status on the Overview sheet is the quick read. Anything other than Match gets its own tab with the detail.

Overview sheet

One row per list, both sides.

ColumnExample
List / libraryShared Documents
Source items8,441
Dest items8,439
Missing on dest2
Extra on dest0
Items with value drift0
StatusMissing items
URLhttps://contoso.sharepoint.com/sites/projects/Shared Documents

Shared Documents sheet

A tab per list that differs: what is missing, what is extra, and which fields drifted.

What you need

  • Read access on both sites. Two separate sign-ins, which the page asks for up front rather than halfway through.

What it will not do

  • Library items are matched by their path in the library, so a migration that renumbered items does not show false differences. List items are matched by ID in practice, because their paths are built from it.
  • A shallow compare reads no items when a list's counts agree, so a list with one item missing and one extra reads as Match. Use deep when that matters.
  • A deep comparison reads every field of every matched item on both sides. It is the slowest report here by some distance.
  • It compares, it does not fix. Re-running the migration for the gaps is a separate decision.

See every feature