Explainers

What Is FunCaptcha (Arkose Labs) and How It Works

FunCaptcha, now officially called Arkose Labs MatchKey, is a CAPTCHA system that uses interactive 3D challenges instead of traditional image grids. If your automation workflow encounters a challenge asking you to rotate a 3D object, pick the image that matches a silhouette, or identify an animal from an unusual angle, you are most likely dealing with FunCaptcha. Arkose Labs serves major platforms including EA Games, Roblox, Microsoft Outlook, and LinkedIn.

This explainer covers how FunCaptcha works, its challenge types, its technical identifiers, and how it compares to traditional CAPTCHA systems.


How FunCaptcha works

FunCaptcha uses a multi-layered defense model that combines behavioral analysis with interactive visual challenges:

  1. Detection layer — The Arkose Labs script evaluates device telemetry, browser fingerprint, mouse movement patterns, and IP reputation before deciding whether to present a challenge.
  2. Challenge presentation — If the risk score exceeds the threshold, the user sees an interactive challenge inside an iframe hosted on arkoselabs.com or funcaptcha.com.
  3. Challenge interaction — Unlike image-grid CAPTCHAs, FunCaptcha challenges require spatial reasoning: rotating objects to match a target, picking the correct image from transformed perspectives, or identifying objects from unusual angles.
  4. Token generation — After successful completion, FunCaptcha returns a session token that the website validates server-side.
  5. Adaptive difficulty — Failed attempts increase challenge complexity. Repeated failures may trigger longer challenge sequences or additional verification steps.

Technical identifiers

Signal What to look for
Script source https://client-api.arkoselabs.com/ or https://api.funcaptcha.com/
Public key A UUID-format key (e.g., 476068BF-9B07-4D4E-B5F5-9A1CEDFBA4F4)
iframe source https://client-api.arkoselabs.com/fc/
API domain arkoselabs.com or funcaptcha.com
HTML attribute data-pkey for the public key

FunCaptcha challenge types

FunCaptcha is distinct from reCAPTCHA and hCaptcha because it uses interactive 3D and spatial challenges:

3D rotation challenges

The most common type. Users must rotate a 3D-rendered object (animal, dice, hand gesture) to match a target orientation. The rendering changes per attempt to prevent simple pattern matching.

Image matching challenges

Users see a set of images and must select the one that matches a described criterion (e.g., "select the image that shows the arrow pointing right"). Images are often distorted or transformed.

Perspective challenges

Users must identify an object shown from an unusual angle or perspective. This tests spatial reasoning rather than object recognition.

Sequential challenges

Some deployments require multiple correct answers in sequence. An incorrect answer resets the sequence but does not immediately fail the challenge.

Audio challenges

An accessibility mode provides audio-based challenges, though these are less common than in reCAPTCHA.


FunCaptcha vs reCAPTCHA vs hCaptcha comparison

Factor FunCaptcha / Arkose Labs reCAPTCHA v2 hCaptcha
Challenge style 3D rotation, spatial reasoning Image grid selection Image grid selection
Difficulty model Adaptive — harder on repeated failure Fixed difficulty per challenge Configurable by site owner
Primary clients Gaming (EA, Roblox), Microsoft, LinkedIn Broad web adoption Cloudflare customers, privacy-focused sites
Detection method Device telemetry + behavioral + IP Browser signals + interaction + cookies Browser signals + behavioral
Script domain arkoselabs.com / funcaptcha.com google.com/recaptcha hcaptcha.com
Response field Custom token via callback g-recaptcha-response h-captcha-response
Enterprise tier Always enterprise-grade reCAPTCHA Enterprise available hCaptcha Enterprise available
Token lifetime Varies by deployment (60-300 seconds) ~120 seconds ~120 seconds

How to detect FunCaptcha on a target page

Method 1: Check page source for Arkose script

import requests

response = requests.get("https://example.com/login")
html = response.text

if "arkoselabs.com" in html or "funcaptcha.com" in html:
    print("FunCaptcha detected")
    # Extract public key
    import re
    pkey_match = re.search(r'data-pkey="([^"]+)"', html)
    if pkey_match:
        print(f"Public key: {pkey_match.group(1)}")

Method 2: Monitor network requests

// In Puppeteer
page.on('request', request => {
    const url = request.url();
    if (url.includes('arkoselabs.com') || url.includes('funcaptcha.com')) {
        console.log(`FunCaptcha request detected: ${url}`);
    }
});

Method 3: Check iframe sources

const frames = page.frames();
const arkoseFrame = frames.find(f =>
    f.url().includes('arkoselabs.com/fc/') ||
    f.url().includes('funcaptcha.com/fc/')
);

if (arkoseFrame) {
    console.log('FunCaptcha iframe found');
}

What makes FunCaptcha challenging for automation

  1. 3D rendering — Challenges render differently each time, making template matching ineffective.
  2. Adaptive difficulty — The system increases difficulty based on solving patterns, IP reputation, and session history.
  3. Device telemetry — Arkose Labs collects extensive client-side data including hardware characteristics, browser plugins, and timing patterns.
  4. Sequential challenges — Some configurations require 3-6 correct answers in sequence, with a reset on any error.
  5. Token binding — Tokens are bound to specific sessions and device fingerprints, making transfer complex.

Impact on scraping and automation workflows

When your workflow encounters FunCaptcha, you need to:

  1. Identify the public key — Extract it from data-pkey attributes or API calls
  2. Determine the service URL — Usually https://client-api.arkoselabs.com/fc/gt2/public_key/{pkey}
  3. Choose a solving approach — API-based solving services can handle FunCaptcha challenges
  4. Handle token injection — FunCaptcha tokens are typically submitted via JavaScript callbacks rather than hidden form fields

For CAPTCHA types that CaptchaAI supports with the highest solve rates, including reCAPTCHA, Cloudflare Turnstile, and GeeTest:


Frequently asked questions

Is FunCaptcha the same as Arkose Labs?

Yes. FunCaptcha was the original product name. Arkose Labs is the company, and the current product name is Arkose MatchKey. Most developers still refer to it as FunCaptcha because the API domains still use funcaptcha.com.

Which major sites use FunCaptcha?

EA Games, Roblox, Microsoft (Outlook, Xbox), LinkedIn, GitHub (for certain flows), and several banking and financial services platforms.

Is FunCaptcha harder to solve than reCAPTCHA?

FunCaptcha's 3D rotation challenges require spatial reasoning that image-grid CAPTCHAs do not. The adaptive difficulty system also makes repeated solving attempts progressively harder. For automated workflows, FunCaptcha is generally considered harder than standard reCAPTCHA v2 but comparable to reCAPTCHA Enterprise with strict configurations.

Does FunCaptcha work without JavaScript?

No. FunCaptcha requires JavaScript for rendering 3D challenges, collecting device telemetry, and returning tokens. The entire challenge is delivered via JavaScript within an iframe.

How long do FunCaptcha tokens last?

Token validity varies by deployment, typically between 60 and 300 seconds. The token is single-use and bound to the session where it was generated.


Summary

FunCaptcha (Arkose Labs) uses interactive 3D challenges instead of traditional image grids, making it structurally different from reCAPTCHA and hCaptcha. You can identify it by script loads from arkoselabs.com or funcaptcha.com, UUID-format public keys, and 3D/spatial challenge presentation. For developers building automation workflows, correctly identifying the CAPTCHA type is the first step. Explore the CaptchaAI API for solving the CAPTCHA types your workflows encounter most frequently.

Discussions (0)

No comments yet.

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...

Automation Python reCAPTCHA v2
Apr 08, 2026
Tutorials Pytest Fixtures for CaptchaAI API Testing
Build reusable pytest fixtures to test CAPTCHA-solving workflows with Captcha AI.

Build reusable pytest fixtures to test CAPTCHA-solving workflows with Captcha AI. Covers mocking, live integra...

Automation Python reCAPTCHA v2
Apr 08, 2026
Reference Browser Session Persistence for CAPTCHA Workflows
Manage browser sessions, cookies, and storage across CAPTCHA-solving runs to reduce repeat challenges and maintain authenticated state.

Manage browser sessions, cookies, and storage across CAPTCHA-solving runs to reduce repeat challenges and main...

Automation Python reCAPTCHA v2
Feb 24, 2026
Integrations Browser Profile Isolation + CaptchaAI Integration
Browser profile isolation tools create distinct browser environments with unique fingerprints per session.

Browser profile isolation tools create distinct browser environments with unique fingerprints per session. Com...

Automation Python reCAPTCHA v2
Feb 21, 2026
Comparisons WebDriver vs Chrome DevTools Protocol for CAPTCHA Automation
Compare Web Driver and Chrome Dev Tools Protocol (CDP) for CAPTCHA automation — detection, performance, capabilities, and when to use each with Captcha AI.

Compare Web Driver and Chrome Dev Tools Protocol (CDP) for CAPTCHA automation — detection, performance, capabi...

Automation Python reCAPTCHA v2
Mar 27, 2026
Tutorials CAPTCHA Handling in Flask Applications with CaptchaAI
Integrate Captcha AI into Flask applications for automated CAPTCHA solving.

Integrate Captcha AI into Flask applications for automated CAPTCHA solving. Includes service class, API endpoi...

Automation Cloudflare Turnstile
Mar 17, 2026
Use Cases CAPTCHA Solving in Ticket Purchase Automation
How to handle CAPTCHAs on ticketing platforms Ticketmaster, AXS, and event sites using Captcha AI for automated purchasing workflows.

How to handle CAPTCHAs on ticketing platforms Ticketmaster, AXS, and event sites using Captcha AI for automate...

Automation Python reCAPTCHA v2
Feb 25, 2026
Use Cases Event Ticket Monitoring with CAPTCHA Handling
Build an event ticket availability monitor that handles CAPTCHAs using Captcha AI.

Build an event ticket availability monitor that handles CAPTCHAs using Captcha AI. Python workflow for checkin...

Automation Python reCAPTCHA v2
Jan 17, 2026
Explainers How BLS CAPTCHA Works: Grid Logic and Image Selection
Deep dive into BLS CAPTCHA grid logic — how images are arranged, how instructions map to selections, and how Captcha AI processes BLS challenges.

Deep dive into BLS CAPTCHA grid logic — how images are arranged, how instructions map to selections, and how C...

Automation BLS CAPTCHA
Apr 09, 2026
Explainers Browser Fingerprinting and CAPTCHA: How Detection Works
How browser fingerprinting affects CAPTCHA challenges, what signals trigger CAPTCHAs, and how to reduce detection with Captcha AI.

How browser fingerprinting affects CAPTCHA challenges, what signals trigger CAPTCHAs, and how to reduce detect...

reCAPTCHA v2 Cloudflare Turnstile reCAPTCHA v3
Mar 23, 2026
Explainers GeeTest v3 Challenge-Response Workflow: Technical Deep Dive
A technical deep dive into Gee Test v 3's challenge-response workflow — the registration API, challenge token exchange, slider verification, and how Captcha AI...

A technical deep dive into Gee Test v 3's challenge-response workflow — the registration API, challenge token...

Automation Testing GeeTest v3
Mar 02, 2026