FCaptcha vs Cloudflare Turnstile
FCaptcha vs Cloudflare Turnstile: a self-hosted, open-source CAPTCHA against Cloudflare's hosted one. Same siteverify API, so switching is a URL change.
Cloudflare Turnstile and FCaptcha both replace the image-grid CAPTCHA with a check most visitors never notice. The difference is where it runs and who can see how it decides. Turnstile is a hosted service on Cloudflare’s network with a closed scoring model. FCaptcha is open source (MIT) and runs on your own server.
At a glance
| FCaptcha | Cloudflare Turnstile | |
|---|---|---|
| Where it runs | Your server (Docker, Go, Node.js or Python) | Cloudflare |
| Source code | Open source, MIT | Closed |
| Visitor data | Stays on your server | Sent to Cloudflare |
| Image or audio puzzle | Never | Never |
| Scoring | Open and itemised: every score comes with its reasons | Proprietary |
| AI agent detection | Input-event forensics for agents driving a real browser over CDP, and vision agents | Proprietary |
| Backend API | Turnstile-compatible siteverify | siteverify |
| Cost | Free software; you run the server | Free tier and paid plans |
Where they differ
Who sees your visitors
Every Turnstile check sends the visitor’s browser data to Cloudflare. For many sites that’s fine. For sites with strict GDPR requirements, procurement reviews, or a policy of no third-party processors, it can be the deciding factor. FCaptcha has no third party: the widget, the signals and the verdict stay on infrastructure you control.
Knowing why a visitor was blocked
Turnstile returns pass or fail. FCaptcha returns a score along with the detections that produced it, each with a human-readable reason. When a real customer is blocked, you can see why and tune it.
Accessibility
Neither shows a puzzle. FCaptcha also checks its widget against WCAG 2.2 AA in CI, and runs a benchmark of screen-reader, keyboard-only, motor-tremor and elderly users with a false-positive budget that fails the build when it’s exceeded.
Running it
Turnstile is zero operations: Cloudflare runs it. FCaptcha is a service you run. It’s a single container with no database, and Redis is optional for running more than one replica, but it’s still something you have to operate.
Migrating from Turnstile
The backend is a URL change. FCaptcha answers the Turnstile siteverify contract on the same path:
- https://challenges.cloudflare.com/turnstile/v0/siteverify
+ https://your-fcaptcha-server.com/turnstile/v0/siteverifyThe request fields (secret, response, remoteip, idempotency_key) and the response shape (success, challenge_ts, hostname, action, cdata, error-codes) are the same. FCaptcha adds one field, score, which you can ignore.
On the frontend, swap the Turnstile script and container for FCaptcha’s widget:
<form method="post" action="/signup">
<div data-fcaptcha="your-site-key" data-endpoint="https://your-fcaptcha-server.com"></div>
<button>Sign up</button>
</form>
<script src="https://your-fcaptcha-server.com/fcaptcha.js"></script>Your backend then reads the token from the form field fcaptcha_token instead of cf-turnstile-response. From v1.45.0 the widget adds that field itself; on earlier versions, set it from the widget’s callback.
Try it
Frequently Asked Questions
Is FCaptcha compatible with Cloudflare Turnstile?
On the backend, yes. FCaptcha serves the same siteverify contract at /turnstile/v0/siteverify, with the same request fields and response shape, so an existing Turnstile verification call works when you point it at your FCaptcha server. The browser widget is different: you swap Turnstile's script tag for FCaptcha's.
Can FCaptcha be self-hosted?
Yes, that is its default. It runs as a single Docker container, or from source in Go, Node.js or Python. Turnstile runs only on Cloudflare's infrastructure.
Does FCaptcha use cookies?
No. FCaptcha sets no cookies and writes nothing to disk; every retention window is listed in its COMPLIANCE.md.
Is FCaptcha free?
The software is MIT licensed and free to run. You pay for the server you run it on.
Need help choosing a bot protection solution?
Our team can help you compare options and find the right fit for your needs.