Start with comparable exports
Choose one clearly defined scope: the entire downloaded library, a year or a specific set of folders. Use that same scope on both sides. Extract every archive part first; comparing a ZIP file to extracted images does not compare the pictures inside it.
Prefer original files on both sides when that option is available. An original HEIC and a JPEG rendering are different bytes even when they show the same scene. Keep the original library and a separate backup while you investigate differences.
- Finish any cloud download before you start.
- Avoid editing, moving or syncing files during the comparison.
- Select the root that contains the intended files; the tool ignores that root name, but preserves nested paths.
Understand the evidence in each row
An exact row means the path, byte count and SHA-256 agree. A relocated row means identical bytes exist at another path. The hash compares the entire file, including metadata; it is not a visual similarity score.
A changed row has different bytes at the same path. A missing row has no byte match or same-path counterpart within the selection. Both need review when the destination has converted, renamed or edited files. Unreadable rows are unknown, not evidence of loss.
Separate copy count from content coverage
A library export may store the same image in multiple album directories. One destination copy can preserve its content without preserving those directory copies or the app’s album relationships. The report calls this fewer copies, and lists byte-identical duplicate groups separately.
An extra destination file can be genuinely new, an edited version or a conversion. This tool cannot infer which from a hash. Review these files alongside missing and changed rows before treating either side as complete.
Keep the receipt, then verify the app
Download the full JSON or CSV and the source manifest. The visible table is a preview; downloads include every comparison row. A manifest records paths and hashes for the source selection and can identify later changes to those bytes.
Open representative files in the destination app. Check long videos, unusual formats, favorites, edited images and important albums. A byte match does not establish successful decoding, correct ordering, album membership or a usable Live Photo. Keep backups until those separate checks meet your needs.