The CAPTCHA Tax

Legacy CAPTCHAs are a conversion killer and an accessibility wall everyone just tolerates. Turnstile verifies humans invisibly. No puzzles, no image grids.

The pain

Legacy CAPTCHAs cost you conversions and wall out users on screen readers, friction everyone just absorbs.

The fix

Turnstile verifies humans invisibly: no puzzles, no image grids, no Google ad-tag baggage.

So what

Recover lost conversions, stay ADA/WCAG-accessible, and still stop credential-stuffing bots.

Try it

Sign-in form, protected invisibly

Uses Cloudflare's official Turnstile test keys, so both outcomes are demoable on command. In production a real sitekey + TURNSTILE_SECRET makes the "Human" path a genuine live verification; the "Blocked bot" toggle keeps using the test path so the failure is always reproducible.

How it works

One script tag in your form, one check on your server. No infrastructure to run.

👤
Visitor
your form
loads
🛡️
Turnstile
Cloudflare edge
token
🖥️
Your server
/siteverify
Verified → allowed
Failed → blocked

Add it to your site

~10 lines · no infrastructure
Client: drop into your form
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" defer></script>
<div class="cf-turnstile" data-sitekey="YOUR_SITEKEY"></div>
Server: verify the token on submit
const r = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
  method: 'POST',
  body: new URLSearchParams({ secret: env.TURNSTILE_SECRET, response: token }),
}).then((res) => res.json());

if (!r.success) return new Response('Blocked', { status: 403 });
01
Paste the widget into your form
02
Verify the token when the form submits
03
Ship. There is nothing to host.
Works with:Static HTMLNext.jsWordPressAny backend