KitForma field notes

Verify a photo migration with two local exports

Prepare a fair comparison, interpret byte matches and keep evidence before you retire the original library.

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.

The evidence behind the check

Sources & assumptions

Rules are reviewed against the references below. Manufacturer updates, firmware and your exact setup can change the result.

Reviewed 2026-10-13. Read our methodology or report an issue.

Essential local storage remembers this choice for up to 180 days. Your choice applies to this subdomain. Global Privacy Control and Do Not Track override optional measurement.

Advertising has a separate choice. Use Advertising preferences in the footer to allow or reject the optional guide-page banner.