Discord moderation · perceptual hashing
Every image has a fingerprint.
ImageCheck fingerprints every image and video posted in your server and blocks the ones your trusted communities have flagged — automatically, before your moderators have to see them again.
free · slash commands only · nothing stored but hashes
How it works
Scan. Hash. Enforce.
ImageCheck watches attachments, link previews, and media links in message text. Each item is reduced to a 64-bit perceptual hash and compared against your server's blocklists — in memory, in milliseconds.
Every new or edited message is checked for media: uploaded files, Tenor/Giphy-style embeds, and bare image links pasted as text. Messages without media are ignored instantly.
Media is downloaded, fingerprinted, and discarded. The fingerprint survives recompression and resizing, so re-uploads of a blocked image still match. Videos are fingerprinted at two points of their runtime.
On a match, the message is deleted and the action your admins chose for that category runs: a warning DM, a timeout, or a ban — with a full audit embed in your private log channel.
blocklist entry
same image, re-uploaded
recompressed · resized · re-posted
threshold: 5
→ blocked
Exact-match filters are trivial to beat with one screenshot. Perceptual fingerprints barely move — three flipped bits out of sixty-four is still the same image.
Federation
Blocklists are shared, not siloed.
A scam image seen in one community shouldn't have to be re-discovered by every other one. Blocklists are first-class objects that servers curate together — with consent and control built in.
Own it
Your server creates lists and owns them. Contributors you trust can add entries; subscribers get read-only protection. Every entry is tagged with a reason (harassment, spam, nsfw…) that carries the enforcement action.
Share it — with consent
Invites are two-sided: the other server must accept before it joins. Public lists can be browsed and self-subscribed. Shareable join codes with expiry and use limits make onboarding partners easy.
Stay in control
Subscribers cap how severe a shared list's actions can get, override or disable any tag, and rank their lists so the right one wins on conflicts. A bad upstream never gets to ban your members.
Built for real moderation
The details that matter at 3 a.m.
Tags carry the action
Block reasons are structured, not free text. Each tag has a default action (log, warn, timeout, ban); the most severe enabled tag wins. Retag an entry and enforcement follows.
Video fingerprinting
Videos are hashed at 25% and 75% of runtime and match on either frame. A per-list noise deny-list stops channel logos and stock intros from causing false positives.
Edit-proof scanning
Link embeds populate after the message posts, and users edit links in later. ImageCheck re-scans on both, so the delayed-embed trick doesn't slip media past it.
Role tiers
Helper, mod, and admin tiers gate every command, configured by the
/imgsetup wizard. Discord administrators always retain access — no
lock-out states.
Actionable log embeds
Every block posts an embed with the matched entry, the reason, and modify/remove buttons — moderate the blocklist from the log channel without leaving Discord.
Safe lists to trust
Whitelist trusted users and roles to skip scanning; exempt staff so their posts are
removed but never punished. Dry-run commands (/imgblock test,
/imgblock scan_recent) preview matches before enforcement.
Privacy
Built to know as little as possible.
- No message text, images, or usernames are ever stored. The database holds 64-bit fingerprints and numeric Discord IDs — an image can't be reconstructed from its hash.
- Everything expires. Enforcement records auto-delete after 90 days, audit logs after a year, and a server's data is purged ~30 days after the bot is removed.
- Encrypted at rest. The database and its backups live on an encrypted volume.
- This site is static. No cookies, no analytics, no third-party requests — not even fonts. Full details in the privacy policy.