FunCAPTCHA is the public name for the Arkose Labs MatchKey challenge: pick the matching image, rotate the animal until it faces the right way, count the dice. It is the CAPTCHA most likely to interrupt a Twitter / X account creation flow, a Microsoft account recovery, or a Roblox login. It is also one of the most expensive CAPTCHAs to solve at scale — most providers price FunCAPTCHA at 2–3× the rate of reCAPTCHA.
This article explains why: how the challenge model works, what the solver actually has to do, and where Arkose's pricing power comes from.
For a Python integration walkthrough, see the FunCAPTCHA Guide. For the ranked solver list, see best FunCAPTCHA solver.
What FunCAPTCHA is, in one paragraph
FunCAPTCHA is a JavaScript-rendered, animation-based challenge that presents one of ~15 distinct puzzle types — rotate-the-animal, count-the-dice, count-the-fingers, find-the-matching-image, etc. Each session generates a fresh public_key (or siteKey) and a surl (server URL) that bind the challenge to the site. The user solves N challenges in sequence (typically 1–3), and on success the widget produces a token that the site posts to the verify endpoint.
Where it is deployed
The largest production deployments:
- X (formerly Twitter) — account creation, account recovery, login from new device
- Microsoft / Outlook / LinkedIn — account recovery, anomalous-login challenge
- Roblox — account creation, age verification, purchase confirmation
- Various crypto exchanges — KYC and login flows
If you have ever been served an "are you a robot? rotate this seal until it faces the right way" challenge, you have hit FunCAPTCHA.
The MatchKey challenge model
Arkose's MatchKey design is deliberately diverse — instead of one challenge type that solvers can specialize in, MatchKey rotates between a pool of distinct visual tasks. Current observed types:
| Type | Description | Solver difficulty |
|---|---|---|
| Rotation (animal) | Rotate the animal until it faces the icon direction | Medium |
| 3D dice count | Count dice faces in a 3D scene | Medium |
| Card pair | Find two cards that pair together | Medium |
| Hand finger count | Count extended fingers on a 3D hand | High |
| Train direction | Identify which way the train is facing | Low |
| Galaxy / planet match | Match the orbit to the diagram | High |
| Coin balance | Pick the heavier side of the scale | Low |
| Color path | Trace the path of one color through tangled lines | High |
The point is that no single ML model can clear all of them. A solver provider must train and host distinct vision models for each type, and Arkose periodically rotates new types in.
Why FunCAPTCHA is expensive to solve
Three factors:
- Challenge diversity — solvers must support every active type.
- Sequenced challenges — sites typically configure FunCAPTCHA to require 2–3 successful sub-challenges per session.
- Behavioral telemetry — the widget collects mouse / touch trajectories during the solve. A "click directly on the answer" pattern fails even when the answer is correct.
The economic effect: per-solve cost is 2–3× hCaptcha or reCAPTCHA. Based on current CaptchaRank benchmark data:
| Solver | FunCAPTCHA | hCaptcha | reCAPTCHA v2 |
|---|---|---|---|
| CaptchaAI | $2.99 / 1k | $1.49 / 1k | $0.99 / 1k |
| 2Captcha | $3.00 / 1k | $1.45 / 1k | $1.00 / 1k |
| Anti-Captcha | $2.50 / 1k | $2.00 / 1k | $1.50 / 1k |
| CapSolver | $2.50 / 1k | $1.20 / 1k | $0.80 / 1k |
For the full pricing matrix see pricing comparison.
What a solver actually does
A typical FunCAPTCHA solver call:
payload = {
"key": api_key,
"method": "funcaptcha",
"publickey": public_key, # from page HTML
"pageurl": page_url,
"surl": surl, # server URL from widget JS
"json": 1,
}
The provider:
- Loads the FunCAPTCHA widget on its own browser farm.
- Identifies the challenge type and routes to the matching vision model.
- Solves each sub-challenge (typically 2–3) with synthesized human-like cursor motion.
- Captures the resulting token.
- Returns it to your call.
End-to-end is typically 15–30 seconds — the slowest of the major CAPTCHA types.
Token field
<input name="fc-token" type="hidden" value="...token...">
<!-- Some integrations also use: -->
<input name="arkoseToken" type="hidden" value="...token...">
Field names vary by deployment. Check the live form before assuming.
FunCAPTCHA Enterprise differences
Enterprise / custom deployments may add:
dataparameter — site-specific behavior data the widget injects; some solvers require you to pass this through.- Custom challenge skinning — same models, different visual themes; solvers handle these without code changes.
- Tighter behavioral validation — fingerprint and proxy hygiene matter more.
FAQ
Is FunCAPTCHA the same as Arkose Labs? Yes — FunCAPTCHA is Arkose's product brand for the public-web CAPTCHA. The MatchKey challenge format is the underlying tech.
Why does X use FunCAPTCHA instead of hCaptcha or reCAPTCHA? Arkose's enterprise pricing model and the diversity of challenge types make solver-as-a-service less economical for attackers, which suits high-value account flows.
Can a single solver clear all FunCAPTCHA types? The major providers (CaptchaAI, 2Captcha, Anti-Captcha, CapSolver) advertise full-type coverage. Smaller providers often only cover the 2–3 most common types and silently fail on the rest.
Why is FunCAPTCHA so much slower? Sequenced sub-challenges. A typical session is 2–3 challenges back to back, each ~8–10s.
See live FunCAPTCHA solver performance On captcharank.com/compare — speed and success rate refresh continuously.