Skip to content
PublicVerify any image against the chain

Every copy found. Every original proven.

BlockDedup fingerprints your image library, separates byte-identical copies from look-alikes, keeps the best version of each photo — and registers it on-chain so anyone can check who had it first.

duplicate tiers, each with its own certainty
4
duplicate tiers, each with its own certainty
perceptual fingerprints, plus SHA-256
64-bit
perceptual fingerprints, plus SHA-256
anchors a whole collection snapshot
1 tx
anchors a whole collection snapshot

From a messy folder to a clean, provable library

Three steps. Nothing leaves your library without your say, and nothing is gone until the trash is purged.

  1. Step 1

    Upload

    Drop thousands of files or whole folders. Each image is hashed four ways — SHA-256 of the bytes, SHA-256 of the pixels, and three 64-bit perceptual fingerprints — and scored for quality.

  2. Step 2

    Scan & resolve

    A scan groups copies by how sure we are. Compare side by side, with a swipe slider or a pixel-difference heatmap; the sharpest, highest-resolution copy is recommended as keeper.

  3. Step 3

    Prove

    Register originals on-chain, anchor a Merkle snapshot of the collection, and checkpoint a hash-chained audit log. Share a file and anyone can verify it.

Not all duplicates are equally duplicate

Cryptographic matches are facts; perceptual matches are evidence. BlockDedup never blurs the two — every group says how it was matched, how confident it is, and what you can safely do with it.

Exact copy

Byte-for-byte identical files. The SHA-256 of the file bytes matches.

IMG_2041.jpg and IMG_2041 (1).jpg — the same file saved twice.

Perceptual fingerprint 358e8a0838a3235fPerceptual fingerprint 358e8a0838a3235fFingerprint difference: 0 of 64 bits differSHA-256 =file bytes

Cryptographic certainty. Safe to bulk-remove: the copies are the same file.

Same pixels

Different files, identical decoded pixels — usually stripped or edited metadata, or a lossless re-save.

A photo and the same photo with its EXIF location stripped.

Perceptual fingerprint f5b8f52e2509e804Perceptual fingerprint f5b8f52e2509e804Fingerprint difference: 0 of 64 bits differSHA-256 =decoded pixels

Cryptographic certainty on pixels. Safe to bulk-remove: every pixel matches; only metadata differs.

Near duplicate

Resized, recompressed or format-converted copies, confirmed by perceptual hashes and structural similarity.

A 12 MP HEIC original and the 1600 px JPEG you emailed.

Perceptual fingerprint 77cd78cfa27f8908Perceptual fingerprint 75cd71cfa27f8988Fingerprint difference: 4 of 64 bits differ4/64 bitsperceptual distance

High confidence · review recommended. Review recommended. Bulk-apply needs a separate confirmation.

Visually similar

Images that look alike but may be different photos — bursts, crops, edits. Never removed automatically.

Two frames from the same burst, a second apart.

Perceptual fingerprint 0fc44049123b1af7Perceptual fingerprint 1fcc42da921b5af3Fingerprint difference: 11 of 64 bits differ11/64 bitsperceptual distance

Probabilistic · manual review only. Always reviewed by you. Never bulk-applied.

Keeper recommendation

Ranked by resolution, compression (bits per pixel), sharpness and quality score — with the reasons shown. Removed copies go to Trash and stay recoverable for your retention period.

Proof that holds up without us

Hashes go on-chain; your images never do. Three mechanisms, each independently verifiable from a block explorer and the manifest in your export.

Individual registration

Each image's SHA-256 is written to the registry contract with a pseudonymous reference to your account and the block time. The contract enforces uniqueness — the first registrant wins, permanently.

register(0x3f9a…77b0)

✓ ImageRegistered · block #18,342

register(0x3f9a…77b0)

✕ AlreadyRegistered(first: 0x6aED…Fb40)

Merkle collection snapshots

Your whole collection folds into one 32-byte root anchored in a single transaction. Every image gets a short proof of membership — cheap at any scale, and the hashes stay private.

Hash-chained audit log

Every upload, scan, decision and purge is an event that commits to the previous event's hash. The head is checkpointed on-chain, so rewriting history is detectable.

  1. #41upload.batch
  2. #42scan.completed
  3. #43group.resolved
  4. #44chain.checkpoint

Bring the folder you've been avoiding.

Upload a library, review the first scan in minutes, and register what's yours.