Project 98, SEO and site tools
Spam-proof Contact Form
Stop most form spam without making people pick traffic lights. Bots fall into invisible traps, and real people never notice.
- Main API
- Honeypot + timing
- Extra
- Content rules
- Dependencies
- None
- Your browser
- Checking
Send a message
Fill in the form like a person, or press Act like a bot. The panel shows every check and the spam score.
Spam checks
Spam score 0 of 100
Waiting for a message
How it works
- A trap only bots seeThe website field is moved far off screen and hidden from screen readers. People never fill it in, but many bots fill every field.
- Humans are not instantReal people need several seconds to type a name, email and message. Forms sent faster than four seconds are suspicious.
- Score first, then decideEach failed check adds points. High scores are blocked, middle scores are sent but marked for review, so real people are rarely lost.
<div style="position:absolute;left:-10000px" aria-hidden="true">
<input name="website" tabindex="-1" autocomplete="off">
</div>
const started = Date.now();
form.onsubmit = (e) => {
let score = 0;
if (form.website.value) score += 60; // honeypot filled
if (Date.now() - started < 4000) score += 40; // too fast
if ((msg.match(/https?:\/\//g) || []).length > 2) score += 30;
if (score >= 50) { e.preventDefault(); /* drop silently */ }
};