Your photo library, accounted for / KitForma

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.

No account neededRuns in your browserFree to use
Local evidence / clear next steps01 → 02
Source archiveOriginal filesSelected by you
Compare the copiesContent fingerprintsMatch · missing · changed
Your originals stay unchanged. Keep a report of what the check found.
From question to next step

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.

01

The example creates small image files and metadata in memory, then runs the same hashing and comparison as your files.

Choose one extracted export folder. All files and nested folders are included, including JSON sidecars. The selected top-level folder name is ignored.

Choose the matching destination export. Use equivalent scope, such as the same year. Files are read locally and never changed. Empty folders are not observable.

Accepts kitforma-photo-manifest-v1. A receipt exports this format automatically. Declared Live Photo pairs need explicit pairId and image/video roles; matching names alone are not proof.

Associates a sidecar only when its sibling filename/title points to one selected file. Metadata inspection is limited to 10,000 JSON files of up to 4 MiB each; every file is still hashed.

Loading the local tool… Your files stay in this browser.

Your report

A practical interpretation of your evidence.

02

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

01

Compare content, not just counts

SHA-256 and byte counts distinguish identical files from a different file with the same name.

02

Keep uncertainty visible

A changed export can be an edit or conversion. Missing evidence never becomes a claim of permanent loss.

03

Keep a useful receipt

Download the complete file comparison, a spreadsheet-friendly CSV and a reusable source hash manifest.

Good questions

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.

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.