A migration is verified when every item at the source has a partner at the destination, nothing has turned up at the destination that was never at the source, and the matched pairs hold the same file and the same column values. Microsoft's built-in tools give you totals rather than that comparison: an item count per list, a storage figure per library, and the migration tool's own log of what it tried. Use those to find where to look. Then compare the two sides item by item, which is what ShareMaster's Compare Items Report does for a pair of document libraries, exporting every match and mismatch to Excel.
Why a matching count is not proof
The quickest check after a copy is to open both sites and see whether the numbers agree. It is a reasonable first look and a poor final one.
Totals hide offsetting errors. One file that failed and one duplicate that was created leave a library's count exactly where it started. Folders count as items too, so a run that recreated a folder tree slightly differently can push the figure up or down without a single document being lost.
Copy logs have a different weakness. They are written by the tool doing the copy, about its own work. A log that says "completed" means the tool believes it finished, not that someone looked at the destination afterwards.
What a verified migration has to show
Before choosing a method, decide which of these you need to prove. A team share of Word documents needs the first three rows. A records library with custom metadata needs the lot.
| Check | What it catches | Built-in way to see it |
|---|---|---|
| Missing on destination | Files that failed, were skipped or were filtered out | None item by item; totals only |
| Extra on destination | Duplicates from a re-run, leftovers from an earlier attempt | None item by item; totals only |
| Same path, different size | Truncated or changed files | Storage Metrics, per folder rather than per file |
| Column values | Metadata that was dropped or mapped to the wrong column | Opening items one at a time |
| Version history | A copy that brought only the latest version | Version history on each file |
| Permissions | Unique permissions that were not carried across | Manage access on each item |
Nothing on that list is checked by the tools below in one pass. Be clear about which rows your chosen method covers and check the rest separately.
Start with the totals SharePoint already gives you
- Item counts. The Site contents page lists each list and library with its item count. Write the figures down for both sites. Remember that folders are counted alongside files.
- Storage per library. Under Site settings, Storage Metrics breaks a site's storage down by library and folder, version history included. Compare library totals, but expect them to differ if the copy did not bring every version across.
- The tool's failure report. If you used the SharePoint Migration Tool, it writes
SummaryReport.csv, a per-taskItemReport.csv, andFailureSummary.csvonly when something failed. Work through every failure row. Migration Manager has its own reports in the same spirit.
That gets you a short list of suspect libraries. What it cannot tell you is which files are missing from them, which is the question the people using the site will ask.
Compare source and destination with the Compare Items Report
In the ShareMaster desktop app, the Compare Items Report tile sits in Reports, which is part of the free Report Master. It reads one library at the source and one at the destination, matches the items, and saves an Excel workbook. Source and destination are two separate connections, so the comparison works across tenants as well as between sites in one tenant.
- Open Reports and choose Compare Items Report.
- Connect to the source site, then to the destination site.
- Pick the source library on the left and the destination library on the right, then select Next. Both must be the same type of library, or the report stops and says so.
- Under Compare on, choose how items are matched (see below), then select Compare.
- Save the workbook. It has one sheet, Item Compare, with the source ID, path, name and size, the same four for the destination, and a Match Found? column.
Pick the right Compare on setting
This choice decides whether the report is useful, so it is worth a minute.
- File Name, size and folder path is the strictest. A file only matches if it sits in the same folder with the same name and the same size. Use it for sign-off.
- File Name and folder path ignores size. Use it when you expect sizes to differ for a known reason and only want missing and extra items.
- File Name and size ignores the folder. It finds files that landed in the wrong place, but two identical files in different folders count as one, so it can hide a missing copy.
- Id is a poor fit after a migration. Item IDs are not guaranteed to survive a copy, so the same file can show as missing on one side and extra on the other.
Reading the workbook
Filter Match Found? to FALSE. Rows with only source columns filled are missing at the destination. Rows with only destination columns filled exist only at the destination, which usually means a duplicate from a re-run or something left over from an earlier attempt.
Know its limits. The report covers document libraries, one pair per run. It compares identity, location and size, not the values in your metadata columns, and it does not look at version history or permissions. For a library whose value lies in its metadata, check a sample of items by hand or use the deeper compare below.
Whole sites and column values: Compare items in the V2 beta
The ShareMaster V2 beta has a Compare items tile in Reports that goes further. It signs in to the source and destination separately, compares a whole site or a single library or folder you open on both sides, matches lists by title and items by their path inside the list, and writes an Excel report with an Overview sheet and a sheet per list. It is still a beta, so treat its output as a second opinion while it matures.
| Run shallow compare | Run deep compare | |
|---|---|---|
| Item counts per list | Yes | Yes |
| Named missing and extra items | Only for lists whose counts disagree | Every list |
| Column values on matched items | No | Libraries: every visible, editable column. Lists: Title only, unless Deep compare list fields is ticked |
Two honest caveats. A shallow run that finds equal counts has not looked item by item, so it is a triage step rather than a sign-off. And the deep compare leaves out hidden, read-only and system columns, which include Created, Modified, Created By and Modified By. The Overview sheet names the columns it skipped, so you can see what was left out of the comparison.
Turning differences into a clean result
- Missing items: copy just those across. Re-running the whole job risks creating the extras you are trying to get rid of.
- Extra items: check whether each one is a duplicate, an earlier attempt or something users added after cut-over. Only remove what you have identified.
- Size or value differences: open both copies of the file before deciding anything. A difference marks an item to inspect; it is not proof the file is damaged.
- Compare again. Sign off when the comparison comes back with zero missing, zero unexplained extras and no differences you cannot explain.
The comparison is only as good as the list of what should have moved. If you have not built one yet, start with a site inventory before migration. For the copy itself, see how to migrate a SharePoint site to another tenant or the narrower guide to a cross-tenant document library migration. Large lists have their own traps when you read them back, covered in the list view threshold reference.
Frequently Asked Questions
Is a matching item count enough to prove a migration worked?
No. One missing file and one duplicate cancel each other out in a total, and folders are counted as items too. Use counts to pick which libraries to check, then compare item by item.
Why not match source and destination items by ID?
A copy does not have to keep item IDs. Folders are recreated and files can arrive with new IDs, so an ID match reports the same file as both missing and extra. Match on folder path and file name, adding size when you want to catch changed files.
Do migration tool reports verify the destination?
They record what the tool attempted and whether each attempt succeeded. That is worth reading, especially the failure report, but it is the tool reporting on itself. An independent check reads both sides afresh.
Can I compare across two Microsoft 365 tenants?
Yes, if the tool signs in to each side separately. The Compare Items Report treats source and destination as two connections, so the two libraries can be in different tenants.