Block pages · Cloudflare
Cloudflare Turnstile: the "Verify you are human" check explained
Cloudflare Turnstile is the "Verify you are human" check used in place of a CAPTCHA. It appears inside the "Just a moment..." challenge page and as a widget on forms. It tests the browser with small scripts, and most visitors never click anything. On a challenge page, the Web Unlocker lets a real browser clear it and returns the page.
- 9 of 9
- calls to Cloudflare-protected pages answered with the real page, canary of 11 November 2026
- 88.9%
- across all 27 protected targets of the same run
- 4.1 s
- median response across the run
What you are looking at
Turnstile is one technology in two places. On a challenge page it stands in front of the content. On a form it guards one action. What you see depends on the mode the site chose.
| Where to look | What it shows |
|---|---|
| Where it appears | Inside Cloudflare's "Just a moment..." challenge page, and as a widget on the forms of any site: logins, sign-ups, contact forms. A site does not have to be behind Cloudflare to use the widget. |
| What it shows | "Verify you are human" next to a box to tick, or a spinner while the checks run, then a success mark. |
| Managed mode | Cloudflare decides: the checks run by themselves, and a box to tick appears only when a further check is needed. |
| Non-interactive mode | A visible widget with a spinner. The visitor is never asked to do anything. |
| Invisible mode | Nothing on screen. The checks run in the background. |
| What it runs | Small JavaScript challenges in the browser: computing puzzles, probes of browser features, checks for the quirks of a real browser and for human behaviour. No images or text to decipher. |
| Where it loads from | challenges.cloudflare.com. |
| Status code | On a challenge page, 403 with the header cf-mitigated: challenge. On a form there is no special status: the page loads normally and the widget sits inside it. |
| What a pass gives | On a form, a token that the site's server validates with Cloudflare. On a challenge page, the cf_clearance cookie. |
If you are a visitor
For most people Turnstile is a spinner that turns into a success mark. When it asks, the whole task is to tick one box. When it fails or keeps coming back, Cloudflare's own troubleshooting page names the causes: an unstable network, a setting or an extension that blocks its scripts, an unsupported browser, JavaScript turned off, or signals that look automated.
- Update the browser. Turnstile supports all major browsers; an old one gets the "outdated or unsupported browser" state.
- Disable extensions for a moment, ad blockers above all, and reload. They may block the scripts Turnstile needs.
- Make sure JavaScript is enabled: Turnstile cannot run without it.
- Try a private window, then another browser or device, to rule out cached data and your own setup.
- Turn off the VPN or proxy, or switch to another network such as a mobile hotspot.
- If the box sat unticked for a long time, or you waited long before sending the form, reload the page. The check times out and has to be issued again.
- If it still fails, tell the site. Its administrator can read the error and report it to Cloudflare.
If your script gets it
For code, Turnstile is two different things, and only one of them stands between a script and a public page.
- On a challenge page, Turnstile is the gate. An HTTP client cannot run it and stays on the
403. A real browser runs the checks, receives thecf_clearancecookie and then the page. - On a form, Turnstile guards the submission, not the page. The page loads without it; what needs the token is the login, the sign-up or the message someone would send.
- What it reads is the browser and how it behaves. A browser driven by an automation tool leaves marks that the checks look for, which is why a box that clears for a person may ask a script to click, or loop.
- A pass does not travel. The clearance cookie is tied to the visitor and the device that earned it, so one copied from another machine is ignored.
The whole picture of the system is in the guide: How to Bypass Cloudflare When Scraping. See also "Just a moment...".
Get the page with one call
Send the URL of the page to the REST endpoint. With mode: "auto", the default, the first attempt is a browser-grade request from a residential IP. When Cloudflare answers with a challenge page, the browser tier opens the page, waits for the check to clear, and returns the page behind it.
curl -X POST https://app.quanticdata.io/api/v1/scraper/unlock \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/", "country": "us"}'
The call fetches pages; it does not send forms. For many pages of one site, keep calling from the same account: after a pass the session is reused, and the next calls come back faster.
What the answer tells you
| Field | What it says |
|---|---|
blocked | false when the real page came back. true only when every attempt met the block; the block page is then in body. |
vendor | The system the engine recognised on a blocked attempt. For this page: cloudflare. |
blockClass | js_challenge or captcha when the check did not clear: the answer then comes back with blocked: true. |
tier_served | tls for a browser-grade request, browser when a real browser had to open the page. |
attempts, latency_ms | How many tries the call took and how long it lasted. |
cost | The bytes this call moved and what it was charged. |
Measured, with a date
In the canary of 11 November 2026, all 9 calls to Cloudflare-protected pages came back with the real page. Across the whole run, 72 of 81 calls on 27 protected targets did, with a median response of 4.1 s.
A call counts only when the answer is 2xx and carries the real page, not a challenge. The list, the method and every run are on the Web Unlocker status page.
What it is for, and what it does not do
- It is for pages anyone can open in a browser without signing in: prices, listings, reviews, search results, public profiles.
- Challenges that need no human input are handled by the browser tier. An interactive captcha that asks a person to click, pick images or type is not solved: the answer comes back with
blocked: trueandblockClass: "captcha", so your code can skip the page or try later. - When the check does not clear, the answer comes back with
blocked: trueand its block class, never the challenge page passed off as content. - It does not fill or submit forms protected by Turnstile.
- It does not log in for you and it does not create accounts. Pages behind a login stay behind it.
- Whether you may collect a page depends on the terms of the site and on the law that covers the data. A protection system does not change that, in either direction.
Cloudflare Turnstile: questions people ask
What is Cloudflare Turnstile?
Turnstile is Cloudflare's alternative to a CAPTCHA. It runs small JavaScript challenges in the browser to tell a person from automated traffic, usually without asking the visitor to do anything. Sites use it on forms as a widget, and Cloudflare uses the same technology inside its "Just a moment..." challenge pages.
What does Cloudflare Turnstile look like?
A small box inside the page. In managed mode it shows "Verify you are human" with a box to tick only when a further check is needed; otherwise a spinner and then a success mark. In non-interactive mode there is never a click, and in invisible mode nothing is shown at all.
What does "verification failed" mean on Turnstile?
The checks could not complete in your browser, or they completed and then timed out. Cloudflare lists the causes: an unstable network, an extension or a setting that blocks the scripts, an unsupported browser, JavaScript turned off, or behaviour that looks automated. Reload the page, pause extensions and try without a VPN.
Is Turnstile the same as reCAPTCHA?
No. Both tell people from bots, but reCAPTCHA is Google's service and Turnstile is Cloudflare's. Turnstile never shows images or text to decipher: at most it asks for one tick. A site can use it without sending its traffic through Cloudflare, so you will meet it on sites of every kind.
Can a scraper get the page behind Cloudflare Turnstile?
It depends on where the check is. On a challenge page, a real browser on a residential or mobile IP is usually let through, and the page comes back: that is what the Web Unlocker does. When the check does not clear, the call comes back with blocked: true and its block class.
Why does Turnstile loop or fail in an automated browser?
Because the checks look at the browser as well as at the address. A browser driven by an automation tool leaves marks that a person's browser does not, so the widget asks for a click, fails or starts again. A different User-Agent does not change that. Cloudflare calls this a challenge loop and ties it to strong bot signals.
Does the Web Unlocker submit forms protected by Turnstile?
No. It fetches pages anyone can open in a browser, and on a challenge page it lets the check clear by itself. It does not fill or submit a form that Turnstile protects, it does not log in and it does not create accounts. Those actions belong to a person on the site.
Send the URL that shows you this page
Create the free account, open Web Unlocker in the dashboard and paste the URL into the test box. The answer shows the status, the tier that served the page, the attempts and the cost of the call.
References
- Cloudflare docs: Turnstile overview (how it works, the widget types)
- Cloudflare docs: Turnstile widgets (managed, non-interactive and invisible modes, error states)
- Cloudflare docs: challenge solve issues (loops, causes and the troubleshooting steps for visitors)
- Cloudflare docs: interstitial challenge pages
- Cloudflare docs: clearance and the cf_clearance cookie
- Web Unlocker in the QuanticData API docs: request, answer, errors and how to read a block (vendor and blockClass)
- Web Unlocker status: the canary list, the method and every run