Find out who made an image, from the image itself.
Content credentials get stripped by every screenshot and re-upload. Grain finds them again — even after the file has been through the wringer.
Free. No account needed to check an image. Watch it catch a forgery →
How it works
Try to fool it →Step 1
Register it before you post
One biometric prompt. An invisible watermark goes into the file and a fingerprint of it goes on chain, timestamped before anyone can copy it. No wallet, no seed phrase.
Step 2
It gets copied
Screenshotted, cropped, compressed, re-uploaded. Every one of those strips the credentials out of the file.
Step 3
It still resolves
Drop any copy into Grain and the original creator comes back — from the watermark, or from the picture itself when the watermark is gone.
Nobody can delete your record
C2PA already defined how content credentials work. What it doesn’t say is who runs the database you look them up in — today that’s a handful of private companies, and a record can be dropped or lost when one shuts down.
Grain keeps that registry open. Anyone can read it, anyone can check an answer against it, and no single company can retract yours.
Built on Monad
A registry that searches itself, and proves the answer
The fingerprint index lives on chain, so anyone can find an image’s record and prove the match without trusting a server, ours included. That only works where a record per image is cheap and instant.
- 0.5 s
- median from sending a registration to its confirmed receipt
- 8,687 gas
- for anyone to prove, on chain, how close an image is to a record
- ~93k gas
- to register an image: one record and eight on-chain index entries
Measured on Monad testnet. Method and figures in the README.
Live from Monad
Recently registered
559 records · 10 named creators
Record #559 · @grain-survival-test
block 70,276,957 · 9 h ago
Record #558 · @grain-survival-test
block 70,276,935 · 9 h ago
Record #557 · @grain-survival-test
block 70,276,923 · 9 h ago
Record #556 · @grain-survival-test
block 70,276,910 · 9 h ago
Record #555 · @grain-survival-test
block 70,276,882 · 9 h ago
Record #554 · @grain-survival-test
block 70,276,861 · 9 h ago
Indexed by Envio. Each square is a record’s fingerprint — Grain stores those, never the images.