Remove the reCAPTCHA script and site key
Delete the Google reCAPTCHA script tag and the g-recaptcha-response widget from your markup. There's nothing to load in its place.
reCAPTCHA alternative
Filter spam server-side after the browser submits — no Google script, no tracking cookie, and no puzzle for real visitors to solve.

Nothing loads before submit — no reCAPTCHA script, cookie, or badge on the page.
The honeypot and time-trap are hidden; real people never see a puzzle.
Allowed-domain checks, rate limits, and content scoring run after the POST.
Drop-in pattern
Keep your existing HTML, drop in a hidden honeypot and time-trap, and POST to https://splitforms.com/api/submit. Every request is filtered server-side — no Google script, cookie, or puzzle.
<form action="https://splitforms.com/api/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<input type="hidden" name="form_loaded_at" id="form_loaded_at" />
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<!-- reCAPTCHA alternative: hidden honeypot -->
<input
type="checkbox"
name="botcheck"
autocomplete="off"
tabindex="-1"
aria-hidden="true"
style="position:absolute;left:-9999px"
/>
<button type="submit">Send</button>
</form>
<script>
document.getElementById('form_loaded_at').value = Date.now();
</script>Step by step
You don't need a new tool to drop reCAPTCHA — remove the Google script, add a hidden honeypot and time-trap, and point the form at the splitforms endpoint. Five steps, no puzzle, no client-side dependency.
Delete the Google reCAPTCHA script tag and the g-recaptcha-response widget from your markup. There's nothing to load in its place.
Add a hidden botcheck field to the form, visually hidden and marked aria-hidden. Real visitors never see or fill it; a bot that auto-fills every input gives itself away.
Add a hidden form_loaded_at field and set it to the current timestamp with a one-line script when the page loads. Submissions sent back within a couple of seconds are treated as automated.
Set action to https://splitforms.com/api/submit with method="POST" and your access_key as a hidden field. That endpoint enforces allowed-domain checks, a 6-per-minute-per-IP rate limit, and server-side content heuristics on every request.
If a specific form keeps attracting human-driven abuse after the layers above, turn on the optional reCAPTCHA v2 add-on with your own site key. Most forms never need it.
reCAPTCHA vs splitforms
reCAPTCHA v2 and v3 both load a Google script before anyone can submit. A reCAPTCHA alternative runs the equivalent checks server-side after the POST, so nothing loads on the way in — and real visitors never solve a puzzle.

No Google script
reCAPTCHA v2 shows a checkbox that can expand into an image puzzle; v3 skips the puzzle but still loads Google's script and scores every page view. Most contact-form spam is automated, so a honeypot, time-trap, and rate limits stop it with none of that. See the tradeoffs in honeypot vs reCAPTCHA.

Works everywhere
It doesn't matter what renders the form — React forms, WordPress forms, or plain HTML all POST to the same endpoint and hit the same spam checks. Filter spam server-side once and every form you ship is covered.

How SplitForms works
Connect your form, collect every submission, and send data where it needs to go — without building backend infrastructure.

Point your form to your unique SplitForms endpoint. That's it.

We instantly capture and organize every submission in your inbox.

Send data to email, spreadsheets, CRMs, webhooks, and 7,000+ apps.

No credit card required. Set up in under 60 seconds.
Connect & automate
SplitForms works with the destinations you route to and the platforms you build on — from Slack and Sheets to WordPress, Shopify, and Next.js. And with Stripe connected, your forms can take payments too.

Trusted by indie teams and agencies shipping forms worldwide
Testimonials
40 quotes on record — from indie hacks to agency migrations.
“I replaced a Lambda + DynamoDB + SES contact form with six lines of HTML. It took eleven minutes, and the dashboard is better than what I was going to build.”
“We migrated 14 client sites off Formspree in a single weekend. The price is a third of what we paid, the API is more honest, and the spam filter actually works.”
“The webhook payload is signed, idempotent, and well-shaped. It reads like code from a competent team, not a CRUD app held together with duct tape.”
“I stopped reaching for Typeform on small marketing sites. splitforms covers 90% of the use case at none of the bloat.”
“I onboarded our whole agency in an afternoon. The MCP integration meant Cursor literally dropped the form straight into our client repos for us.”
“The free plan gave me 200 submissions before I paid a cent, and Pro is five dollars a month. I've spent more on coffee deciding which backend to use.”
“Spam went from forty junk entries a day to zero, with no reCAPTCHA puzzle ruining the form. The honeypot and time-trap just quietly do their job.”
“Point the form action at one endpoint and you're done. No SDK, no client library, no build step. This is how a form backend should feel.”
“Leads land in Slack the second someone submits, and a copy goes to Google Sheets for the sales team. I wired both up in under ten minutes.”
“I run a static Hugo site on a five-dollar VPS. splitforms gave it a real contact form without me standing up a single server.”
Questions
For most contact forms, the best alternative is a layered server-side filter: a honeypot field, a time-trap, IP rate limits, and content heuristics. This avoids Google scripts, puzzle friction, and the accessibility issues visible CAPTCHAs cause.
Yes. Most form spam is automated and can be blocked with a honeypot field, a time-trap, and rate limits. Add the optional reCAPTCHA v2 layer only if you have evidence of human-driven abuse those simpler layers don't catch.
A honeypot is better for user experience because real visitors never see it, it catches simple bots, and it adds no page weight. Pair it with a time-trap and server-side content heuristics to catch what a honeypot alone misses, including messages written with AI tools.
No. The default splitforms spam stack runs server-side after submission. There is no Google reCAPTCHA script, no tracking badge, no puzzle, and no extra client-side dependency.
Yes. reCAPTCHA v2 is available as an optional, per-form add-on — bring your own Google site key and secret. It sits on top of the honeypot, time-trap, and rate-limit layers rather than replacing them, so most forms never need to turn it on.
No. splitforms doesn't add a client-side script, cookie, or widget by default, so there's nothing extra to load before a visitor can submit. The honeypot field is invisible, and the time-trap, rate-limit, and content-heuristic checks all run after the POST — the form stays as fast as plain HTML.
Free covers 200 submissions total across unlimited forms, with email notifications included. Pro ($5/mo) raises that to 1,000 and adds exports, webhooks, and auto-responders; Pro ($5/mo) covers 5,000 with CC/BCC and priority support; the $59 3-Year plan (first 3 years, then $59/year) covers 15,000/month. Business plans are unlimited — contact [email protected].
Simple pricing
Choose a plan that fits your workflow — from a free form endpoint to full automations, exports, Stripe payments, and higher submission limits.
For side projects and indie devs.
For agencies and growing products.
Pay $59. 3 years sorted.
No credit card required on Free • Cancel anytime