Comparisons

Cloudflare Turnstile vs Cloudflare Challenge: Complete Comparison

Cloudflare Turnstile and Cloudflare Challenge are often confused because both come from Cloudflare and both are used to stop bots. But for developers, they are not the same problem.

Cloudflare Turnstile is an embedded verification widget. It usually appears inside a form, checkout, login, signup, or protected action. When the challenge is solved, the page receives a token and submits that token to the website backend.

Cloudflare Challenge is a full-page browser verification flow. It appears before the target page loads. When the visitor passes the challenge, Cloudflare issues a cf_clearance cookie that allows the browser session to continue accessing the protected site.

That difference matters because each flow needs a different integration strategy.

If you treat a Cloudflare Challenge page like Turnstile, you will look for a sitekey that may not exist. If you treat a Turnstile widget like a full Challenge page, you will overcomplicate the flow and use the wrong API method.

This guide explains the difference, how to identify which one you are facing, and which CaptchaAI API method to use.


Quick answer: Cloudflare Turnstile vs Cloudflare Challenge

Feature Cloudflare Turnstile Cloudflare Challenge
Main role Protects a form or specific action Protects access to an entire page or site
Where it appears Inside the page Before the page loads
What the user sees Widget, spinner, checkbox, or nothing Full-page interstitial such as “Just a moment”
Common result Turnstile token cf_clearance cookie and user agent
CaptchaAI method turnstile cloudflare_challenge
Sitekey needed Yes Usually no
Proxy required Usually no Yes
How result is used Submit token as cf-turnstile-response Reuse cookie, user agent, and same proxy
Best next guide How to Solve Cloudflare Turnstile Using API How to Solve Cloudflare Challenge Using API

The simplest rule:

Turnstile gives you a token. Cloudflare Challenge gives you access.

If the page loads and you see a widget or hidden Turnstile response field, you are probably dealing with Turnstile.

If the real page does not load because Cloudflare shows a full-page verification screen first, you are probably dealing with Cloudflare Challenge.


What is Cloudflare Turnstile?

Cloudflare Turnstile is Cloudflare’s CAPTCHA alternative. It lets websites verify visitors without relying on traditional image puzzles.

A Turnstile widget usually appears in one of three ways.

1. HTML widget

<div class="cf-turnstile" data-sitekey="0x4AAAAAA..."></div>

2. Turnstile script

<script src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script>

3. JavaScript render call

turnstile.render("#captcha-container", {
  sitekey: "0x4AAAAAA...",
  callback: function (token) {
    console.log(token);
  }
});

When Turnstile completes, the page receives a token. The token is commonly submitted through a field named:

cf-turnstile-response

The target site backend then verifies the token with Cloudflare.

For automation developers, the key idea is simple:

Cloudflare Turnstile = sitekey + pageurl -> token -> form submission

That makes Turnstile closer to reCAPTCHA-style token solving than to full-page Cloudflare clearance.


What is Cloudflare Challenge?

Cloudflare Challenge is a browser verification flow that appears before the real page loads.

Common messages include:

Just a moment...
Checking your browser...
Verify you are human

Unlike Turnstile, the challenge is not just a widget inside the page. It is a gate in front of the page.

A typical Cloudflare Challenge flow looks like this:

Request protected page
        ↓
Cloudflare intercepts request
        ↓
Challenge page appears
        ↓
Browser verification runs
        ↓
cf_clearance cookie is issued
        ↓
Original page becomes accessible

After the challenge is passed, Cloudflare sets a cf_clearance cookie. That cookie tells Cloudflare that the visitor has passed a challenge and can continue browsing while the clearance remains valid.

For automation developers, the key idea is:

Cloudflare Challenge = pageurl + proxy -> cf_clearance + user agent -> page access

That makes Cloudflare Challenge a session-access problem, not just a form-token problem.


Cloudflare Challenge vs Cloudflare Turnstile: which one are you facing?

The reversed keyword deserves a direct answer.

Cloudflare Challenge vs Cloudflare Turnstile is not only a naming difference. It is a difference in where the protection happens.

Turnstile protects a specific action. You can usually access the page, but you cannot complete the protected action until the Turnstile token is submitted.

Cloudflare Challenge protects access to the page itself. You may not be able to see the real page until Cloudflare verifies the browser session.

Use this shortcut:

Can you load the real page?
Yes -> likely Turnstile or another in-page CAPTCHA
No -> likely Cloudflare Challenge

And this result-based shortcut:

Need a token? -> Turnstile
Need cf_clearance? -> Cloudflare Challenge

The biggest practical difference is the output.

Turnstile output: token

Turnstile produces a short-lived token. The website backend validates that token with Cloudflare.

Typical field:

cf-turnstile-response

Typical usage:

Submit form + Turnstile token

Cloudflare Challenge output: clearance

Cloudflare Challenge produces browser clearance, usually through a cf_clearance cookie.

Typical cookie:

cf_clearance=...

Typical usage:

Send cf_clearance cookie + same user agent + same proxy

This is why the two flows cannot be swapped. A Turnstile token will not replace a cf_clearance cookie, and a cf_clearance cookie will not replace a Turnstile form token unless the site has specifically configured a combined clearance flow.


How to identify Cloudflare Turnstile

You are probably facing Turnstile if one or more of these signals appear after the page loads.

HTML signals

Search the page source or DevTools Elements panel for:

cf-turnstile
data-sitekey
cf-turnstile-response
turnstile.render
challenges.cloudflare.com/turnstile

Sitekey signal

Turnstile sitekeys commonly start with:

0x4

Example:

<div class="cf-turnstile" data-sitekey="0x4AAAAAA..."></div>

Form submission signal

If the page has a login, signup, checkout, or contact form and a hidden field named cf-turnstile-response, you are almost certainly dealing with Turnstile.

Callback signal

Some sites do not rely only on the hidden field. They pass the token into a callback:

turnstile.render("#container", {
  sitekey: "0x4AAAAAA...",
  callback: onTurnstileSolved
});

If you find these signals, use the Turnstile guide:

How to Solve Cloudflare Turnstile Using API


How to identify Cloudflare Challenge

You are probably facing Cloudflare Challenge if the real page is blocked before it loads.

Page-level signals

Look for text like:

Just a moment...
Checking your browser...
Verify you are human

Network or HTML signals

Look for:

/cdn-cgi/challenge-platform/
cf_clearance
Cloudflare Ray ID
cf-mitigated: challenge

Access signal

If the page content appears only after a browser verification step, you are dealing with a Cloudflare clearance flow.

After a successful manual pass, inspect browser cookies. If you see:

cf_clearance

then Cloudflare has issued challenge clearance.

If you find these signals, use the Cloudflare Challenge guide:

How to Solve Cloudflare Challenge Using API


API method comparison

Use the correct CaptchaAI method based on what you are solving.

Protection CaptchaAI method Required inputs Result
Cloudflare Turnstile turnstile API key, sitekey, page URL Turnstile token
Cloudflare Challenge cloudflare_challenge API key, page URL, proxy, proxy type cf_clearance and user agent

If you choose the wrong method, the integration may fail even if your code is otherwise correct.


Solving Cloudflare Turnstile: token workflow

Turnstile solving follows the same general submit-and-poll pattern as other token-based CAPTCHA types.

Find sitekey
      ↓
Submit sitekey + pageurl with method=turnstile
      ↓
Poll for result
      ↓
Receive token
      ↓
Submit token as cf-turnstile-response

Minimal request shape:

import requests

response = requests.post(
    "https://ocr.captchaai.com/in.php",
    data={
        "key": "YOUR_API_KEY",
        "method": "turnstile",
        "sitekey": "0x4AAAAAA...",
        "pageurl": "https://example.com/login",
        "json": 1,
    },
    timeout=30,
)

data = response.json()

When the token is ready, submit it through the form or request body:

const token = "TOKEN_FROM_CAPTCHAAI";

const field = document.querySelector('[name="cf-turnstile-response"]');
if (field) {
  field.value = token;
}

If the page uses a callback, call the callback with the token as well.

For the full implementation, use:

How to Solve Cloudflare Turnstile Using API


Solving Cloudflare Challenge: clearance workflow

Cloudflare Challenge solving is different because the goal is not one form token. The goal is to obtain clearance for the browser session.

Detect full-page Cloudflare Challenge
      ↓
Submit pageurl + proxy with method=cloudflare_challenge
      ↓
Poll for result
      ↓
Receive cf_clearance + user agent
      ↓
Use same proxy + user agent + cookie
      ↓
Access protected page

Minimal request shape:

import requests

response = requests.post(
    "https://ocr.captchaai.com/in.php",
    data={
        "key": "YOUR_API_KEY",
        "method": "cloudflare_challenge",
        "pageurl": "https://example.com/protected-page",
        "proxy": "user:password@123.123.123.123:8080",
        "proxytype": "HTTP",
        "json": 1,
    },
    timeout=30,
)

data = response.json()

After solving, use the returned clearance values with the same session identity:

import requests

cf_clearance = "CF_CLEARANCE_FROM_CAPTCHAAI"
user_agent = "USER_AGENT_FROM_CAPTCHAAI"
proxy = "user:password@123.123.123.123:8080"

session = requests.Session()
session.headers.update({"User-Agent": user_agent})
session.cookies.set("cf_clearance", cf_clearance, domain="example.com")

proxies = {
    "http": f"http://{proxy}",
    "https": f"http://{proxy}",
}

response = session.get(
    "https://example.com/protected-page",
    proxies=proxies,
    timeout=30,
)

print(response.status_code)

For the full implementation, use:

How to Solve Cloudflare Challenge Using API


Why Cloudflare Challenge requires a proxy

Cloudflare Challenge clearance is tied to the browser/session that passed verification. If the solve happens from one network identity and your later request comes from another, the clearance may fail.

For Cloudflare Challenge, keep these consistent:

1. Proxy IP
2. User-Agent
3. cf_clearance cookie

This is why proxy is mandatory for the Challenge solver flow.

Turnstile usually does not require the same clearance workflow because you are submitting a token to a protected action, not reusing a browser clearance cookie across page requests.


Can Turnstile also issue cf_clearance?

Sometimes, yes.

By default, Turnstile issues a one-time token. But Cloudflare also supports Turnstile pre-clearance configurations, where Turnstile can issue a cf_clearance cookie in addition to the default Turnstile token.

This is an advanced configuration and should not be assumed.

For most developer integrations:

Turnstile -> token
Cloudflare Challenge -> cf_clearance

If you see both a Turnstile widget and a cf_clearance cookie, inspect the full flow carefully. The site may be using Turnstile as part of a larger Cloudflare clearance strategy.


Can one website use both?

Yes.

A website can use Cloudflare Challenge at the edge and Turnstile inside the page.

Example:

1. Cloudflare Challenge blocks page access
2. You solve Challenge and receive cf_clearance
3. The real page loads
4. The page contains a Turnstile widget
5. You solve Turnstile and submit cf-turnstile-response

In that case, solve them in order:

Cloudflare Challenge first
Turnstile second

Do not try to solve Turnstile before the real page loads. You may not have access to the correct widget, sitekey, callback, or form context yet.


Decision table for developers

What you see Likely protection Use this CaptchaAI method Main requirement
cf-turnstile element Turnstile turnstile Sitekey + page URL
turnstile.render() Turnstile turnstile Sitekey + callback handling
cf-turnstile-response field Turnstile turnstile Token injection
Page loads but form submit is blocked Turnstile turnstile Submit token with form
“Just a moment…” before page loads Cloudflare Challenge cloudflare_challenge Proxy + page URL
/cdn-cgi/challenge-platform/ Cloudflare Challenge cloudflare_challenge Proxy + user-agent consistency
cf_clearance cookie after manual pass Cloudflare Challenge cloudflare_challenge Reuse clearance cookie
Page never reaches real content Cloudflare Challenge cloudflare_challenge Solve access gate first
Page loads, then has embedded widget Both may exist Solve Challenge first, then Turnstile Correct order

Common mistake 1: using Turnstile method for a Challenge page

This happens when developers see Cloudflare scripts and assume the page contains Turnstile.

Wrong approach:

Full-page Cloudflare interstitial
      ↓
Search for sitekey
      ↓
method=turnstile

Correct approach:

Full-page Cloudflare interstitial
      ↓
method=cloudflare_challenge
      ↓
Use proxy
      ↓
Receive cf_clearance

If the real page never loads, do not start by looking for a form token. First solve the access gate.


Common mistake 2: using Challenge method for a Turnstile widget

This happens when developers assume every Cloudflare protection requires cf_clearance.

Wrong approach:

Embedded Turnstile widget
      ↓
method=cloudflare_challenge
      ↓
Look for cf_clearance

Correct approach:

Embedded Turnstile widget
      ↓
Extract sitekey
      ↓
method=turnstile
      ↓
Submit cf-turnstile-response token

If the page loads normally and only a form action is blocked, start with Turnstile.


Common mistake 3: ignoring the callback

Some Turnstile pages do not accept field injection alone. They expect the token to pass through a JavaScript callback.

Look for:

turnstile.render("#container", {
  sitekey: "0x4AAAAAA...",
  callback: onSolved
});

If the token is returned but the page still rejects the action, check whether the callback must be called.


Common mistake 4: changing proxy or user agent after Challenge solving

For Cloudflare Challenge, this is one of the most common reasons clearance fails.

Wrong:

Solve with proxy A
Request with proxy B

Wrong:

Solve with user agent A
Request with user agent B

Correct:

Solve with proxy A
Request with proxy A
Use returned user agent
Use returned cf_clearance

For Challenge flows, consistency is part of the solution.


Troubleshooting comparison

Problem Most likely cause Fix
No sitekey found It may be Cloudflare Challenge, not Turnstile Check for full-page interstitial signals
No cf_clearance found It may be Turnstile, not Challenge Check for cf-turnstile-response token flow
Turnstile token returned but form fails Token not submitted correctly, callback missing, or token expired Submit token promptly and handle callback
Challenge returns clearance but page still blocks Proxy, user agent, cookie domain, or expiry problem Use same proxy, returned user agent, and correct domain
Page shows Cloudflare repeatedly Clearance expired or session identity changed Re-solve and keep session identity stable
API request fails immediately Wrong method or missing required parameters Re-check method and required fields
Both systems appear Site uses edge Challenge plus Turnstile form Solve Challenge first, then Turnstile

Which CaptchaAI solver should you use?

Use this rule:

If you need a token for a form, use Cloudflare Turnstile.
If you need access to a blocked page, use Cloudflare Challenge.

Use Turnstile when you have:

sitekey
pageurl
cf-turnstile-response

Use Cloudflare Challenge when you have:

pageurl
proxy
proxytype
cf_clearance result
user_agent result

For most developers, this one distinction prevents most failed integrations.


If you are building a scraper, QA automation flow, browser automation workflow, or protected data pipeline, use this order.

Step 1: Request the target page

Check whether the real content loads.

Step 2: Detect Cloudflare Challenge first

If the response is a full-page Cloudflare interstitial, solve Cloudflare Challenge before doing anything else.

Step 3: Reuse clearance state

Use the returned cf_clearance, returned user agent, and same proxy.

Step 4: Load the page again

Now inspect the actual page.

Step 5: Detect Turnstile

Search for cf-turnstile, turnstile.render(), data-sitekey, and cf-turnstile-response.

Step 6: Solve Turnstile if needed

Submit the Turnstile token with the form, request body, or callback.

This sequence handles the common case where a website uses both protections.


FAQ

Is Cloudflare Turnstile the same as Cloudflare Challenge?

No. Cloudflare Turnstile is an embedded widget that generates a token. Cloudflare Challenge is a full-page verification flow that grants access through a cf_clearance cookie.

What is the main difference between Cloudflare Turnstile and Cloudflare Challenge?

Turnstile protects a specific action, such as a form submission. Cloudflare Challenge protects access to the page or site before the real content loads.

What is the difference between Cloudflare Challenge vs Cloudflare Turnstile?

Cloudflare Challenge is clearance-based and usually requires a proxy. Cloudflare Turnstile is token-based and usually requires a sitekey and page URL.

Which one uses cf_clearance?

Cloudflare Challenge normally uses cf_clearance. Turnstile normally uses a token, although some advanced Turnstile pre-clearance configurations can also issue a cf_clearance cookie.

Which one uses cf-turnstile-response?

Cloudflare Turnstile uses cf-turnstile-response. The token is submitted with the protected form or request.

Does Cloudflare Turnstile require a proxy?

Usually no. The standard Turnstile flow requires a sitekey and page URL. A proxy may be useful in some advanced environments, but it is not the core requirement.

Does Cloudflare Challenge require a proxy?

Yes. Cloudflare Challenge solving requires a proxy because the clearance must match the same network identity used later to access the protected page.

Can a site use both Cloudflare Challenge and Turnstile?

Yes. A site can use Cloudflare Challenge before the page loads and Turnstile inside a form after the page loads. In that case, solve Cloudflare Challenge first, then solve Turnstile.

How do I know which one I am facing?

If the real page loads and you see cf-turnstile, data-sitekey, or cf-turnstile-response, it is probably Turnstile. If the page is blocked by “Just a moment” or “Checking your browser,” it is probably Cloudflare Challenge.

For embedded Turnstile widgets, read How to Solve Cloudflare Turnstile Using API. For full-page Cloudflare interstitials, read How to Solve Cloudflare Challenge Using API.


Final takeaway

Cloudflare Turnstile and Cloudflare Challenge are related, but they are not interchangeable.

Use Cloudflare Turnstile when the page loads and you need a token for a specific form or action.

Use Cloudflare Challenge when Cloudflare blocks access to the whole page and you need a valid cf_clearance session.

The fastest way to avoid wasted debugging time is to identify the protection type first.

Turnstile = token flow
Challenge = clearance flow

Once you know which one you are facing, the correct CaptchaAI method becomes clear:

Cloudflare Turnstile -> method=turnstile
Cloudflare Challenge -> method=cloudflare_challenge

Next steps:

Comments are disabled for this article.

Related Posts

Reference CAPTCHA Token Injection Methods Reference
Complete reference for injecting solved CAPTCHA tokens into web pages.

Complete reference for injecting solved CAPTCHA tokens into web pages. Covers re CAPTCHA, Turnstile, and Cloud...

Apr 08, 2026
Reference Chrome DevTools Protocol + CaptchaAI: Low-Level CAPTCHA Automation
Use Chrome Dev Tools Protocol (CDP) directly for CAPTCHA automation with Captcha AI — handleing Web Driver detection, intercepting network requests, and injecti...

Use Chrome Dev Tools Protocol (CDP) directly for CAPTCHA automation with Captcha AI — handleing Web Driver det...

Jan 12, 2026
API Tutorials Proxy Authentication Methods for CaptchaAI API
Configure proxy authentication with Captcha AI — IP whitelisting, username/password, SOCKS 5, and passing proxies directly to the solving API.

Configure proxy authentication with Captcha AI — IP whitelisting, username/password, SOCKS 5, and passing prox...

Mar 09, 2026