

Know you're protected at a glance: what was blocked, how it's trending, and anything that needs you.
Zero Spam is a free anti-spam plugin for WordPress that stops spam bots before they post: no captchas, no moderation queue, nothing to clean up. It protects your comments, logins, registrations and the forms you already use, and it runs on more than 20,000 WordPress sites.
Most anti-spam tools either let spam in and leave you to sort it, or make every visitor prove they are human. Zero Spam does neither. It checks each comment, login, sign-up and form submission quietly in the background and turns bots away at the door. Real visitors never see a puzzle, and your comment queue and inbox stay clean.
Zero Spam uses layers, so a bot that gets past one meets the next. Every layer can be turned on or off.
Setup switches on protection for each one it finds; turn on any you add later under Zero Spam › Protection › Integrations.
Zero Spam works without any outside service, and its activity log stays in your own database. Services that receive data about your site or visitors are only contacted once you choose them, either in setup, which shows you what each one receives, or in the settings. The External services section below lists exactly what each one receives, with its terms of use and privacy policy.
Questions? The built-in Help screen has every guide, and the wiki covers the developer reference.
The plugin’s complete source code is on GitHub: Highfivery/zero-spam-for-wordpress. The admin scripts and styles in assets/dist/ are built from the human-readable sources in assets/src/ with @wordpress/scripts. To build them yourself, check out the repository and, with Node.js 22, run npm ci && npm run build. The sources in assets/src/ and the build tools are not part of the plugin download (they are listed in .distignore); get them from the repository. The fonts in assets/fonts/ (Plus Jakarta Sans and JetBrains Mono, SIL Open Font License 1.1) are included unmodified; their sources are listed in assets/fonts/FONTS.md.
Zero Spam works without any external service. The services below are only contacted when the feature that uses them is turned on, and only send what is listed. The only one on by default is the Zero Spam news feed, which sends nothing about your site or visitors. Stop Forum Spam is offered, with what it sends, in first-run setup; Usage Data Sharing starts off.
When the “Zero Spam News” setting is on (it is by default), the Zero Spam admin screens show the latest articles and security notices from zerospam.org. Your server downloads the public feed at https://www.zerospam.org/articles/feed/ at most once every six hours (once for a whole network), and at most once an hour after a failed download. The request carries only a generic user agent (“Zero Spam for WordPress/” and the plugin version): no site address, no user or visitor data. Turn it off under Settings, or with the zerospam_news_feed_enabled filter. Terms of use, privacy policy.
Used for Enhanced Protection and for sharing detections. Terms of use, privacy policy.
When the Stop Forum Spam check is on, the following are sent to https://api.stopforumspam.org/ to check their reputation, unless the visitor is logged in or on your allowlist: the visitor’s IP address (on page requests, the login and registration forms and XML-RPC), the email address of a comment author (when comments are protected), and the email address and IP address of a new registration (when registrations are protected, on single sites: a network’s sign-up page is not checked; usernames are never sent). Running “Test my protection” sends a fixed test IP address instead. Like every WordPress request, these also carry your site’s address in the user agent. Answers are cached on your site: for a day when nothing is listed, otherwise for the Cache Expiration you set (14 days by default). After repeated failures, lookups pause for 10 minutes. Terms of use, privacy policy.
When a Project Honeypot http:BL access key is set, the visitor’s IPv4 address (reversed) and your access key are looked up by DNS under dnsbl.httpbl.org. Terms of use, privacy policy.
When you enter an API key for one of these services, the IP address of visitors who are not logged in (on page requests, and for each logged detection) is sent with your key to look up its location (country, region, city), which is used for location blocks and stored with detections in the log. Answers are cached on your site for the Cache Expiration you set (14 days by default, or 30 days for ipbase with the recommended settings).