Check the photo,not the sender.
Chainmail is an encrypted messenger that can stamp the photos you send with a fingerprint recorded on Solana (devnet today). If someone edits the file later, anyone can see it — in their own browser.
Seeing is no longer believing.
AI can make a convincing photo in seconds, and most people cannot tell. When a picture arrives in a chat, the only question that matters is whether it is the picture that was taken.
of US adults are not confident they can spot AI-made content
Pew Research Center, Sep 2025say it matters to tell AI content from human content
Pew Research Center, Sep 2025of 2,000 people identified every real and fake item in a test
iProov, Feb 2025 (vendor study)Guesses, stripped data, and trust.
Detectors guess
AI detectors give a probability, and they fall behind each new model.
Metadata is easy to strip
Most apps re-encode photos and drop provenance data on the way.
Badges ask for trust
A platform's checkmark is a promise from the platform, not something you can test.
A stamp you can check without trusting us.
Chainmail seals three hashes into each stamped photo and records them on Solana (devnet today). Our open-source verifier re-derives the result from the file itself, so the answer never depends on our servers.
Edits show
Change one byte after stamping and the check fails.
Private by default
Messages in one-to-one and group chats are end-to-end encrypted.
Checked locally
The web checker runs in your browser. The photo does not upload.
Scope stated
Every result says what it proves and what it does not.
What ships today, and what is next.
Stamped photos
Turn on stamping and each JPEG you send gets an IH1 fingerprint with a memo on Solana (devnet today). Recipients see “Hashed on-chain”.
Encrypted messages
X3DH and Double Ratchet with XChaCha20-Poly1305. Groups use sender keys.
Your phone
ed25519 · on device
3f9a…c1e0 7b2d…server sees ciphertext
Their phone
ed25519 · on device
Open verifier
@chainmail/verifier is open source. Run the same check our web tool runs.
import { verifyPhoto, summarizePhoto } from "@chainmail/verifier";
const bytes = await Bun.file("IMG_2048.JPG").bytes();
const report = verifyPhoto(bytes);
console.log(summarizePhoto(report));
// → Chainmail-verified: these bytes match the original stamp.
Video and voice stamps
The same fingerprint for clips and voice notes.
Four steps.
Join the waitlist
Coming soon to the App Store. We email you when it is ready.
Turn on stamping
Link a Solana wallet, or use the one the app makes for you.
Send a photo
The stamp is sealed in before it leaves your phone.
They check it
Recipients see “Hashed on-chain”. Anyone can verify the file on the web.
Where a stamp helps.
Every result states its limits.
- The JPEG has not changed since it was stamped.
- The fingerprint matches a record on Solana, with its time. Devnet today; mainnet is in development.
- Anyone can repeat the check with open-source code.
- That the photo was taken in Chainmail. Imported photos can be stamped too.
- Who took the photo, or who sent it.
- That a camera made it rather than an AI model.
- That the scene was honest when the photo was taken.
Try the app.
Coming soon to the App Store. For teams, we set up a demo on your own photos.