comparison · content gate

Content Gate vs Cloudflare Turnstile

Updated October 11, 2026

Turnstile tells your server whether a visitor passed: yes or no. Content Gate tells it how likely the session is automated, as a 0–100 score with reasons, blocks at a threshold you set per form, and judges the text that was submitted, in the same call. Turnstile is free and unlimited and never sees your form text. Content Gate is in private beta and does read it.

Both are invisible to almost every visitor and neither shows an image puzzle. The difference is on your server: what comes back, who decides where the line is, and whether anything looks at the message itself.

Try the live Content Gate demo →A real contact form. Send it a message and see the exact response a site's backend gets.

At a glance

FeatureSiftfy Content GateCloudflare Turnstile
What it judgesThe visitor (a 0–100 bot score) and the text they submitted (a spam decision), in one siteverify call.The visitor only. Cloudflare: Turnstile "does not access, store, or transmit … form entries".
What your server gets backdecision (allow, review, block, indeterminate), reason, and bot: { score, reasons, rules_version }.success, challenge_ts, hostname, error-codes, action, cdata. metadata.ephemeral_id on Enterprise only.No score or reasons field is documented on any plan.
Why it decidedCoarse reasons: automation, client_mismatch, network, solver_reputation. The rule table is versioned (bot-rules-v2).Not returned. The verdict is pass or fail.
Who sets the lineYou, per form action: 1–100, or off. Blank uses the default, 90 on enforce sites. Set it in the dashboard or the policy API.Cloudflare decides pass or fail. You choose the widget mode: managed, non-interactive or invisible.
What the visitor seesNothing. Invisible proof of work. An optional stricter level for one form still shows no puzzle.Nothing in invisible and non-interactive mode. Managed mode may show a checkbox. No image puzzles.
Loading the scriptImmutable versioned URL (widget/v1.4.js) with a published SRI hash. Bytes never change.Load api.js from Cloudflare's exact URL. Cloudflare: proxying or caching it "will cause Turnstile to fail".
PriceChallenges and bot blocks are free. A verification that reaches the spam model is one request on your plan: 10,000 a month free, then $9 a month for 1,000,000.Free: unlimited challenges, up to 20 widgets, 10 hostnames per widget. Enterprise lifts the widget and hostname limits.
MaturityPrivate beta. Bot scoring launched October 2026.Runs on Cloudflare's network.

Turnstile figures read 2026-10-11 from Cloudflare's developer docs: server-side validation, the Turnstile overview, widget modes, plans and client-side rendering. If something here is out of date, email hi@siftfy.io and we'll fix it.

The response your backend acts on

With Content Gate, a blocked automated session reaches your server as a decision you can branch on, with the score and the reasons beside it for your logs. A monitor-mode site gets the same score without the block, so you can watch it for a week before enforcing.

jsonsiteverify, a stealth headless Chrome on the live demo
{
  "challenge_valid": true,
  "decision": "block",
  "reason": "bot",
  "bot": {
    "score": 100,
    "reasons": ["automation"],
    "rules_version": "bot-rules-v2"
  }
}

Turnstile's documented response has no field like bot. If you want a per-form threshold or a reason to log, you would build it from your own signals.

What we measured on Content Gate

On 2026-10-11 we drove 290 browser sessions against the live demo in production, at the default threshold of 90:

  • 149 of 149 Playwright Chromium sessions with the automation flags removed and a real Chrome User-Agent were blocked, headless and in a visible window. Before widget v1.4, the same recipe was blocked 0 times in 75.
  • 20 of 20 default headless Chromium sessions were blocked.
  • 0 of 120 human-paced sessions in Chromium, Firefox, WebKit and a mobile profile were blocked. They scored 0 or 10.

How to read this: the “human” sessions are real browser engines driven at human pace, not people, so they show the checks don't misfire on ordinary browsers but don't measure the real false-positive rate. 149 of 149 puts the block rate above 95% with 95% confidence for that recipe. We did not run the same browsers against Turnstile and make no claim about its detection rate.

Where Turnstile is the better choice

  • Price at volume. Turnstile's free plan has unlimited challenges. Content Gate's challenges are free, but each verification that reaches the spam model counts against your plan.
  • Your form text never leaves your server. Turnstile doesn't read form entries. Content Gate must receive the text to judge it. Verification keeps none of it; the text is stored, for 30 days, only when evaluation collection is enabled for your site.
  • Scale and maturity. Turnstile runs on Cloudflare's network and sees far more traffic than we do. Content Gate is in private beta and its bot rules are weeks old.
  • The hardest bots. Neither product proves a visitor is human. A real Chrome driven over the DevTools protocol, with a normal window and real key presses, can still score low on Content Gate today.

When Content Gate is the right call

  • You want a number and a reason to log on every submission, not only pass or fail.
  • You want to block harder on one form than another, such as 70 on a sign-in link request and the default 90 on a contact form, without writing scoring logic yourself.
  • Your spam comes from people or real browsers typing junk, which passes any visitor check. The same call also judges the text.
  • You want to pin the exact script you ship with an SRI hash.

You can also run both: Turnstile in front of everything, Content Gate on the forms where a wrong message costs you something.

Questions

Is Content Gate a drop-in replacement for Turnstile?

On the page, mostly: one script tag and a few data attributes on the form, no visible challenge. On the server it does more: siteverify takes the submitted text too, and returns a decision on the content and a 0-100 bot score with reasons, where Turnstile returns pass or fail.

Does Turnstile return a bot score?

No. Cloudflare documents the Turnstile siteverify response as success, challenge_ts, hostname, error-codes, action and cdata, plus metadata.ephemeral_id on Enterprise. There is no score or reasons field.

Can I use Turnstile and Content Gate together?

Yes. They answer different questions. Turnstile is free and unlimited for challenging visitors; Content Gate adds a threshold you control and a verdict on the text itself. Running both means two scripts and two server-side calls.

Is Content Gate bot-proof?

No, and nothing is. It is bot-resistant: the score raises the cost of automation. A real Chrome driven over the DevTools protocol, with a normal window and real key presses, can still score low today.

Try the live demo

Then read the bot resistance docs, the threshold guide, or pricing.