Anti-Bot

What Is Cloudflare Turnstile?

What Is Cloudflare Turnstile? — conceptual illustration
On this page

Cloudflare Turnstile is a service that checks whether a visitor is a real human, but without showing the kind of puzzle a normal CAPTCHA does. Instead of asking you to click images or type warped letters, it quietly runs checks in your browser — looking at your browser's fingerprint (the unique mix of settings that identify it), watching how you behave on the page, making the browser do a small math puzzle (proof-of-work), and scoring all of it with machine learning. If the visitor passes, Turnstile hands out a token (a short pass that proves the check succeeded). Sites put Turnstile on forms and protected pages, so any scraper or bot has to produce a valid token to get through.

Quick facts

VendorCloudflare
ReplacesCloudflare's older hCaptcha-based challenge
User experienceMostly invisible — a brief "Verifying" widget, no puzzle
Token TTLUsually 5 minutes
How it worksReal-browser verification widget, scored server-side

How Turnstile works

Turnstile loads a small piece of JavaScript (a widget) from `challenges.cloudflare.com`. That widget quietly runs a batch of tests. It reads browser APIs that reveal hardware and software details — canvas, WebGL, audio, and `navigator` properties (all common fingerprinting sources). It watches subtle human signals like mouse movement timing, focus events, and timing jitter (tiny natural variations in how events arrive). And it runs a small proof-of-work calculation in the background — a deliberate bit of busywork that a real browser can easily do but that costs bots at scale. The results go to Cloudflare, which scores the visitor and, if the score is high enough, returns a token. That token rides along as a hidden form field when the page is submitted, and Cloudflare double-checks it on the server through a separate API call. Bots either fail one check outright or score too low, so Turnstile keeps them stuck at the widget.

Turnstile vs Cloudflare Bot Management — what's the difference

This is the most common point of confusion. Cloudflare ships two separate bot-protection products that people often mix up:

TurnstileBot Management
What it isA CAPTCHA replacement widgetAn ML-driven scoring system
Where it firesOn specific forms / endpoints you chooseOn every request to your zone
TierFreeEnterprise add-on
Cookie evidencecf_clearance after solve__cf_bm on every request
Header evidenceWidget script from challenges.cloudflare.comcf-mitigated: challenge when blocked
How verification worksThe widget runs and is scoredThe underlying fingerprint is scored

The two short forms above: a zone is a domain Cloudflare protects, and a token is the pass Turnstile issues when verification succeeds. A site can run both products at once — Bot Management scores every request, and only when your score is borderline does it pop up a Turnstile widget as a light, low-friction challenge. So a Turnstile token alone is not sufficient if the underlying score is already low.

Why Turnstile differs from old CAPTCHAs

Old CAPTCHAs were image puzzles — one self-contained task a human or a solving service could complete and be done. Turnstile is continuous: it scores the whole browser environment, not just one click. An automated client that produces a token from a Playwright instance with an inconsistent fingerprint will get a low score back, and the form rejects the token anyway. The challenge is also tied tightly to the exact page: a token solved on `challenges.cloudflare.com` won't work on `example.com`, because Cloudflare checks the sitekey (the site's unique Turnstile ID) and the origin (the domain it was solved on). So services that solve and resell tokens have to do it at the right scope, with the right fingerprint, inside the right session.

How automated browsers interact with Turnstile

On sites you own or are permitted to access, automated tooling typically interacts with Turnstile in two parts. First, a real browser with consistent fingerprint signals — for example Chrome run with `--headless=new`, or a genuinely headful (real, visible-style) browser running under display virtualization so it behaves like a normal desktop. Second, the Turnstile widget runs inside that browser, is scored naturally, and produces a token. API-only approaches that never run a real browser produce low-score tokens that the server rejects. Integrated tools that bundle the browser and proxy into one service tend to be more consistent, because every layer is configured to work together.

Related terms

What Is a CAPTCHA Solver?
A CAPTCHA solver is software that automatically completes CAPTCHA challenges for an automated client. A CAPTCHA is the "prove you're human" …
What Is Anti-Bot Detection?
Anti-bot detection is the set of techniques websites use to tell automated traffic apart from real human visitors — and then block, challeng…
What Is Browser Fingerprinting?
Browser fingerprinting is a technique that identifies and tracks a visitor by combining dozens of small, observable characteristics of their…
What Is Cloudflare Error 1015?
Cloudflare error 1015 "You are being rate limited" means a website is blocking you because you sent too many requests too quickly. The site …
Anti-Bot Vendor Detection Cheatsheet
A useful first step when working with any protected site you are authorized to access is identifying which anti-bot vendor sits in front of …
What Is TLS Fingerprinting (JA3/JA4)?
TLS fingerprinting is a way to recognize what software made a connection just by looking at how it sets up encryption — before the server re…
What Is a 520 Error?
HTTP 520 is a non-standard Cloudflare status code meaning the origin server returned a response Cloudflare cannot interpret. Cloudflare is a…
What Is Cloudflare Bot Management?
Cloudflare Bot Management is the enterprise-tier ML scoring system Cloudflare runs on every request to a protected zone. In plain terms: it …
What Is a CAPTCHA?
A CAPTCHA is a challenge a website uses to tell a human visitor apart from an automated script. The name stands for Completely Automated Pub…
Why Do JS Hooks Miss Out-of-Process Iframes (OOPIF)?
An out-of-process iframe (OOPIF) is a cross-origin frame that Chromium runs in its own renderer process, with its own isolated JavaScript co…

Concept map

How Cloudflare Turnstile connects

The terms most directly tied to this one. Hover a node to see its neighbours, click to preview, drag to rearrange.

0 terms · 0 connections
You are here · Anti-Bot
Building map…

Frequently asked questions

Is Turnstile a CAPTCHA?

Cloudflare calls it a CAPTCHA alternative. To a normal user there's no puzzle, just a brief verification. To a scraper it behaves like a CAPTCHA — you still need a valid token to get through, and producing one takes the same kind of solver setup a CAPTCHA would.

Does Turnstile work without JavaScript?

No. If JavaScript is turned off, Turnstile can't run and the protected form won't submit. Plain HTTP scrapers (ones that just fetch HTML and don't execute JavaScript) can't pass Turnstile on their own — they need a JavaScript-capable client.

How long does a Turnstile token last?

Usually 5 minutes from the moment it's issued. After that it expires and a fresh challenge has to be completed. Sites can set a shorter or longer window.

Why is my Turnstile token being rejected?

Usually one of three reasons: it has expired, it was solved for a different sitekey or origin (so it doesn't match this page), or it scored too low for the site's threshold. A low score normally means the fingerprint that produced the token didn't look human enough.

I see __cf_bm on every response but no Turnstile widget — what does that mean?

The site is running Cloudflare Bot Management (or the simpler Bot Fight Mode), which scores every request silently in the background. No Turnstile widget means your current score is good enough to let you through quietly. Hurt that score — rotate to a bad IP, change your User-Agent — and the widget or an outright block will start appearing.

Why does the cf_clearance cookie stop working after I rotate proxies?

The cf_clearance cookie is tied to the exact IP address and User-Agent that solved the challenge. Change either one and the cookie is invalidated, so you get challenged again. Keep both stable for the whole session — it's the same rule as Akamai's _abck cookie.

Last updated: 2026-05-31