Check what survived your photo migration
Choose the source export and the destination export. This local check reads every selected file and compares its actual bytes, even when names or folders change. Get a clear list of what matches, what needs investigation and what the files cannot prove.
Photo Migration Receipt
Start with the details you know. Unknown answers stay unknown. Try the example to see how the check works.
Your inputs
Required fields are marked with an asterisk.
Your report
A practical interpretation of your evidence.
Make the next step clear.
Your findings, assumptions and next steps will appear here after you run the check.
Photo Migration Receipt · https://photoproof.kitforma.com/ · KitForma
Compare content, not just counts
SHA-256 and byte counts distinguish identical files from a different file with the same name.
Keep uncertainty visible
A changed export can be an edit or conversion. Missing evidence never becomes a claim of permanent loss.
Keep a useful receipt
Download the complete file comparison, a spreadsheet-friendly CSV and a reusable source hash manifest.
Understand the evidence.
Focused guides explain the rules, the edge cases and the checks worth doing before you act.
Verify a photo migration with two local exports
Prepare a fair comparison, interpret byte matches and keep evidence before you retire the original library.
Read the guide ↗Field guide / 02Investigate missing photos after a Google Takeout migration
Use Takeout JSON sidecars and file evidence without confusing metadata files, export gaps and actual missing content.
Read the guide ↗Field guide / 03Account for Live Photo components, duplicates and source manifests
Declare relationships explicitly and learn which parts of a photo library a file comparison can actually verify.
Read the guide ↗Before you start
Does this connect to Google Photos, iCloud or Lightroom?
No. Export or download your data first, extract archives, and select two local folders. Cloud-only items, placeholders that cannot be read, unselected files and the destination app database are outside the check.
What does “missing” mean?
No identical bytes and no file at the same relative path were found in the selected destination. A converted, renamed or edited version may still exist. Search the destination app and inspect its export settings before deciding that a photo was lost.
Can it verify Live Photos and albums?
A source manifest can declare an image/video pair using an explicit pairId and two roles. The report checks whether both declared component files have identical destination bytes. It does not inspect embedded Apple pairing identifiers or prove that the destination app plays them as a Live Photo. Album membership, edits, faces and favorites remain unknown.
Why do two libraries with different file counts still share the same photos?
Exports can include duplicates, sidecar JSON, thumbnails, edited copies or separate motion components. This tool reports duplicate byte groups and fewer destination copies separately. It does not assume that one source file equals one photo in an app.
How large a library can I compare?
Use a desktop browser with folder selection. The tool accepts up to 40,000 files across both folders and reads one 1 MiB chunk at a time. There is no fixed total byte-size limit, but very large libraries take time and keep file metadata in memory. Split a larger library into equivalent year folders. Keep the tab open and files available; cancel whenever you need to.
Are files uploaded or changed?
No. Hashing and metadata reading happen in the browser. The tool does not delete, rename or repair files. Downloaded receipts contain relative paths, hashes and selected metadata, so review them before sharing. Optional site analytics exclude those values.
Sources & assumptions
Rules are reviewed against the references below. Manufacturer updates, firmware and your exact setup can change the result.
- Apple: transfer Google Photos to iCloud Photos ↗
Documents transfer exclusions, unsupported files in iCloud Drive and where to look for missing imports. A completed transfer is scoped to supported content.
- Google: transfer iCloud photos and videos ↗
Documents exclusions, deduplication, edited versions and album limitations. Counts can change without proving that original bytes were lost.
- Adobe: Apple Photos migration errors ↗
Explains missing originals and asset-count differences. Resolve the export scope before interpreting a comparison.
- MDN: selecting a directory in a browser ↗
Folder selection exposes files and their relative paths. Photo Migration Receipt uses only the files you select.
- hash-wasm source and SHA-256 implementation ↗
Incremental hashing keeps each file read to a 1 MiB chunk. Matching hashes are a byte-content check, not a photo rendering or catalog-integrity test.
Reviewed 2026-10-13. Read our methodology or report an issue.