Honeypots catch naive bots with zero user friction. Turnstile and reCAPTCHA add visible or invisible challenges for higher bot pressure. Best practice: honeypot plus rate limits always; add Turnstile or reCAPTCHA when public marketing pages get hammered.
Guide
Compare honeypot fields, Cloudflare Turnstile, and Google reCAPTCHA for public contact forms—UX, bot resistance, privacy, and what hosted backends support.
| Control | UX cost | Bot resistance |
|---|---|---|
| Honeypot field | None if hidden well | Low–medium |
| Rate limiting | None until blocked | Medium |
| Cloudflare Turnstile | Low–medium | High |
| Google reCAPTCHA v3 | Low (score-based) | High with tuning |
| Google reCAPTCHA v2 checkbox | High | High |
Public contact forms attract bots. Signup spam, SEO pitches, and credential-stuffing scripts do not care that you only wanted five fields. Spam control is not optional on marketing pages—it is part of the form backend’s job alongside validation and storage.
This guide compares honeypot fields, Cloudflare Turnstile, and Google reCAPTCHA so you can choose layers that match your traffic, privacy stance, and UX—whether you use MuxForms, Formspree, or your own API.
MuxForms supports honeypot, rate limits, optional Turnstile, and per-form CORS—see features and embed docs.
A honeypot is an input bots fill but humans never see—often _hp or website positioned off-screen with CSS.
<input type="text" name="_hp" tabindex="-1" autocomplete="off"
style="position:absolute;left:-9999px" aria-hidden="true" />
If the field is non-empty, reject the submission silently or with 400.
| Pros | Cons |
|---|---|
| Zero UX friction | Smart bots skip or auto-fill |
| Easy on static HTML | Accessibility if poorly hidden |
| Works with any backend | Not enough alone on viral pages |
Best for: Low-to-medium traffic B2B contact forms, paired with rate limits.
Turnstile is Cloudflare’s CAPTCHA alternative—widgets range from invisible challenges to click-to-verify.
| Pros | Cons |
|---|---|
| Strong bot signal | Third-party script on your page |
| Often better UX than v2 checkbox | Requires site/secret keys in dashboard |
| Popular with privacy-conscious teams | Another vendor in the chain |
MuxForms: enable Turnstile on the form; embed loads site key from schema GET; failed verification returns 403.
Best for: Marketing sites with rising bot traffic when honeypot alone fails.
v2 (“I’m not a robot”) — obvious checkbox, high friction, familiar.
v3 — score-based, invisible-ish, requires tuning thresholds on your server or vendor.
| Pros | Cons |
|---|---|
| Industry standard | Google data processing concerns (GDPR narratives) |
| v3 low friction when tuned | v2 hurts conversion on mobile |
| Formspree and others bundle it | False positives block real users |
Best for: Teams already standardized on Google Cloud; legacy integrations.
| Control | User friction | Bot resistance | Privacy / compliance |
|---|---|---|---|
| Honeypot | None | Low–medium | Best |
| Rate limit | None until blocked | Medium | Best |
| Turnstile | Low–medium | High | Review Cloudflare DPA |
| reCAPTCHA v3 | Low | High with tuning | Review Google terms |
| reCAPTCHA v2 | High | High | Review Google terms |
CAPTCHA in WebViews is painful. Prefer ingest secret authentication on React Native POSTs so only your build can submit—documented in React Native guide and API.
display:none only—use aria-hidden and off-screen positioning; some bots detect type=hidden on wrong fields.MuxForms is the inbox, embed, and JSON API. Start free, or upgrade to Pro or Team.
Upgrade to Pro