Explainers

reCAPTCHA Grid Challenge Explained

The reCAPTCHA grid challenge presents a 3x3 or 4x4 image grid and asks users to "Select all squares with [traffic lights / crosswalks / buses]". Users must click the correct tiles, sometimes waiting for new images to fade in.

This is the visual challenge component of reCAPTCHA v2. It appears when v2 cannot verify the user through the checkbox alone, or when v3 scores are too low and the site falls back to a visual challenge.


How grid challenges work

Static grids

One large image is split into a 3x3 or 4x4 grid. The user selects all tiles containing the target object (e.g., traffic lights), then clicks "Verify."

┌───┬───┬───┐
│ 1 │ 2 │ 3 │  ← "Select all squares with traffic lights"
├───┼───┼───┤
│ 4 │ 5 │ 6 │  ← User clicks tiles 2, 5, 6
├───┼───┼───┤
│ 7 │ 8 │ 9 │
└───┴───┴───┘

Dynamic grids

After selecting a tile, it fades out and a new image fades in. The user must continue selecting until no more target objects remain. This makes the challenge take longer and prevents simple screenshot-based solving.

4x4 grids

Some challenges use a 4x4 grid (16 tiles) with smaller individual tiles. These appear for higher-risk interactions and require more precise object recognition.


What triggers a grid challenge

Trigger Description
v2 checkbox failure Clicking "I'm not a robot" with suspicious signals
v3 low score Site falls back to v2 challenge when v3 score is below threshold
Suspicious IP Datacenter or flagged IP address
Missing cookies No Google browsing history
Headless browser detected navigator.webdriver = true or missing plugins
Repeated requests Same user solving too many captchas

Common challenge categories

Google uses a fixed set of image categories:

  • Traffic lights
  • Crosswalks / pedestrian crossings
  • Buses
  • Bicycles
  • Motorcycles
  • Fire hydrants
  • Stairs
  • Chimneys
  • Palm trees
  • Mountains
  • Bridges
  • Boats
  • Taxis

Solving grid challenges with CaptchaAI

Grid challenges can be solved by sending the image to CaptchaAI. The API returns which tiles contain the target object.

Python

import requests
import time
import base64

# Capture the grid image
with open("captcha_grid.png", "rb") as f:
    image_data = base64.b64encode(f.read()).decode()

# Submit to CaptchaAI
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "post",
    "body": image_data,
    "recaptcha": 1,
    "json": 1
})

task_id = response.json()["request"]

# Poll for result
for _ in range(30):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY", "action": "get", "id": task_id, "json": 1
    }).json()
    if result.get("status") == 1:
        # Returns click coordinates or tile indices
        answer = result["request"]
        print(f"Selected tiles: {answer}")
        break

Alternative: Solve reCAPTCHA v2 by token

Instead of solving the image grid directly, you can solve the entire reCAPTCHA v2 challenge via the token method:

response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
    "pageurl": "https://example.com/page",
    "json": 1
})

This approach is simpler because CaptchaAI handles the entire challenge internally and returns the g-recaptcha-response token.


Grid challenge vs token solving

Approach When to use
Token solving (method=userrecaptcha) Standard reCAPTCHA v2 on web pages — simpler, more reliable
Image solving (method=post) Standalone grid images outside of reCAPTCHA context
Grid solving (method=grid) Grid-based challenges that are not standard reCAPTCHA

For most reCAPTCHA v2 use cases, token solving is recommended because it handles the grid challenge internally.


FAQ

How many tiles do I need to select?

Typically 2–4 tiles in a 3x3 grid. For 4x4 grids, usually 3–6 tiles. Selecting too few or too many fails the challenge.

What happens if I select the wrong tiles?

Google presents a new challenge. After 5–10 failures, it may show an audio challenge instead or block the session entirely.

Can dynamic grid challenges be solved automatically?

Yes, but they require multiple rounds of image recognition. CaptchaAI handles dynamic grids when you use the token-based method (method=userrecaptcha).

Why do I keep getting grid challenges?

Frequent grid challenges indicate suspicious signals — headless browser detection, datacenter IP, or missing cookies. Improve your browser stealth setup to reduce challenge frequency.


Discussions (0)

No comments yet.