← Back to blog

Form spam protection in 2026: stop form spam without reCAPTCHA

The Formward TeamFormward, Stockholm8 min read

You can get strong form spam protection in 2026 without reCAPTCHA by stacking several lightweight defences instead of relying on one heavy challenge. The reliable layers are a honeypot field, rate limiting keyed on a hashed IP, an invisible challenge like Cloudflare Turnstile for forms that attract determined bots, and AI content scoring to catch the spam that is technically valid but obviously junk. No single layer is sufficient on its own, but together they stop the overwhelming majority of form spam while staying out of your visitors' way and out of Google's tracking graph.

It is worth saying plainly why people want to stop form spam without reCAPTCHA in the first place. reCAPTCHA loads Google scripts onto your page, observes your visitors, and uses that signal across the wider web. It makes real users solve puzzles, which costs you conversions, and it quietly turns you into a party that exports visitor data to a US company, which is a GDPR question you then have to answer. Those are three separate problems, and you can avoid all of them with defences that never phone home to a third party at all. The rest of this post is the layered alternative, with the tradeoffs of each piece.

The first layer is the honeypot, and it is the cheapest defence you will ever deploy. You add a form field that is hidden from humans with CSS and left empty by design. A real visitor never sees it and never fills it in. Many spam bots fill in every field they find, so a non-empty honeypot is a reliable signal that the submission is automated. You reject it silently. The tradeoff is that the honeypot only catches naive bots that blindly populate fields; a bot written specifically to target your form will learn to leave it alone. It costs nothing and catches a surprising amount of low-effort spam, so it belongs in every form, but it is a floor, not a ceiling.

The second layer is rate limiting, which counts how many submissions come from one source in a window and blocks the floods. The natural key is the visitor's IP address, since a single spammer hammering your form shares one address. The complication is that an IP address is personal data under the GDPR, so keeping a plain log of every submitter's IP is the kind of incidental data hoarding that becomes a liability the moment you have to account for it. The way out is to hash the IP with a keyed function before it touches storage. You keep a value that is stable enough to count against but useless for identifying anyone. Formward does exactly this: it never stores a raw IP, yet it still catches a flood from a single source. The tradeoff is that rate limiting does nothing against a distributed attack spread thinly across many addresses, which is why it is a layer and not the whole answer.

The third layer is an invisible challenge for forms that attract determined attackers, and in 2026 the sensible choice is Cloudflare Turnstile rather than reCAPTCHA. Turnstile runs a lightweight check in the background and, for most visitors, shows nothing at all: no traffic lights, no fire hydrants, no crosswalks. It establishes that a real browser is present without the image-puzzle tax that reCAPTCHA imposes. You turn it on per form, so you can reserve it for the public contact form that gets abused and leave it off the internal forms that do not.

Turnstile comes with one honest caveat for a privacy-first setup, and it is worth being precise about it. Cloudflare is a US company, so adding Turnstile introduces a non-EU party into your form flow. The mitigation is to send Cloudflare as little as possible. Turnstile's server-side verification works with just the opaque challenge token; it does not need the visitor's IP address. Formward verifies the token without forwarding the raw submitter IP to Cloudflare by default, so what leaves your infrastructure is an opaque token rather than an identifier. If you have disclosed Cloudflare as a sub-processor and want slightly stronger anti-replay binding, you can opt into sending the IP, but the default is the privacy-preserving choice. The tradeoff with any challenge is a small amount of friction and a third-party dependency, so use it where the abuse justifies it.

The fourth layer is AI content scoring, and it catches a category the other three cannot. Some spam is mechanically valid: it fills in the honeypot correctly by leaving it empty, it comes from a fresh IP so rate limiting sees nothing, and it passes the challenge because a human or a cheap solving service clicked through. What gives it away is the content itself, which reads like an SEO link drop or a crypto pitch. Scoring each submission for how spammy its text looks flags those before they reach your inbox. Formward does this on Pro plans, and crucially the scoring runs on Mistral in the EU, so the content never leaves European infrastructure to be analysed.

AI scoring is a judgement, not a rule, so it needs a threshold you can tune. Formward maps a per-form sensitivity setting to the score a submission must reach before it is flagged: turn sensitivity up and the bar to be marked as spam comes down, so more borderline messages get caught at the cost of occasionally flagging a real one. The default sits in the middle. The tradeoff is the one every classifier has: aggressive settings risk false positives, permissive settings let more through, and the right point depends on how costly a missed spam is versus a wrongly-flagged genuine message for your particular form. Because it is per form, you can be strict on a public form and lenient on one only your customers reach.

There is a fifth, almost free, layer that pairs well with the others: blocking disposable email domains and any addresses you have specifically banned. A large share of throwaway spam comes from a small set of temporary-mailbox providers, so rejecting submissions from those domains removes a chunk of noise before any of the heavier machinery runs. The tradeoff is that disposable-domain lists go stale and the occasional legitimate user genuinely uses a privacy mailbox, so treat it as a filter that trims volume rather than a hard guarantee.

The reason to think in layers rather than searching for one perfect defence is that each layer fails differently. The honeypot misses targeted bots. Rate limiting misses distributed attacks. A challenge misses humans paid to click. Content scoring misses spam that is written to read like a real message. Stack them and an attacker has to defeat all of them at once on the same submission, which is far more effort than most spam is worth. That economic asymmetry, making your form not worth the bother, is the actual goal of spam protection. You are not trying to make abuse impossible; you are trying to make it uneconomic.

Notice what is absent from this whole stack: none of these layers requires shipping your visitors to a third party that surveils them. The honeypot is markup. The rate limit is a hashed value you store and discard. Turnstile, when you use it, sends an opaque token and, by default, no raw IP. The AI scoring runs in the EU. You get a clean inbox without making your contact form a data-export event, which is the exact bargain reCAPTCHA asks you to accept and that you do not have to.

If you are assembling this yourself, a sensible order of operations is to add the honeypot and disposable-domain block first because they are free, turn on hashed-IP rate limiting next because it stops the noisiest floods, reach for Turnstile only on the specific forms that get abused, and add content scoring last for the spam that slips through everything mechanical. Build from cheapest and least intrusive toward heaviest, and stop adding layers when your inbox is quiet. Most forms never need the top of the stack.

Form spam protection in 2026 is a solved problem without reCAPTCHA, but it is solved by composition rather than by a single product. Honeypot plus hashed-IP rate limiting plus an optional invisible challenge plus EU-based content scoring covers the realistic threat model for a contact or signup form, and it does so without the surveillance, the puzzle friction, or the cross-Atlantic data transfer. Pick the layers your form actually needs, watch what gets through for a week, and tighten only where reality tells you to.

About the author

The Formward Team builds privacy-first form infrastructure in Stockholm. Read about our security and privacy practices. Our approach follows the principles set out by the European Data Protection Board at edpb.europa.eu.

Form spam protection in 2026: stop form spam without reCAPTCHA | Formward