---
title: "reCAPTCHA v3 score for an AI agent: why 0.9 proves little"
description: "Our agent's browser scored 0.9 on reCAPTCHA v3, like ordinary Chrome. Why that proves little, the token trap that faked a 0.3, and what to measure instead."
canonical: "https://scalebrowser.net/blog/recaptcha-v3"
last_modified: "2026-09-25"
published: "2026-09-25"
author: "davide"
category: "challenges"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://scalebrowser.net/llms.txt
> Use this file to discover all available pages before exploring further.

# reCAPTCHA v3 score for an AI agent: why 0.9 proves little

> Our agent's browser scored 0.9 on reCAPTCHA v3, like ordinary Chrome. Why that proves little, the token trap that faked a 0.3, and what to measure instead.

reCAPTCHA v3 gave our agent's browser a score of 0.9, the same value ordinary Chrome got on the same line, and for a while that looked like the strongest single result we had. It is not. The same 0.9 came back for every browser we tried on a key without history, including runs with [no mouse movement at all](/blog/behavioral-biometrics), and one of our early readings dropped to 0.3 for a reason that had nothing to do with the browser. This case covers what the score means, the two traps, and the test we use instead.

## What does the reCAPTCHA v3 score mean?

The reCAPTCHA v3 score is a number between 0.0 and 1.0 that Google returns for each action, with no puzzle shown to the visitor. Google's [v3 documentation](https://developers.google.com/recaptcha/docs/v3) defines "1.0 is very likely a good interaction, 0.0 is very likely a bot" and suggests that "by default, you can use a threshold of 0.5". The site decides what to do below that threshold, so the same score can pass on one site and fail on another.

## Which score did the agent's browser get?

The agent's browser got 0.9 in both runs against Google's own v3 demo, each with a fresh token, and ordinary Chrome on the same line got exactly the same value. The result counts among the [18 measured challenge types](/blog/captcha-solving) our agent solved, with the caveat below.

<Evidence source="Scalebrowser agent and ordinary Chrome, Google reCAPTCHA v3 demo with a real key, same line, August 2026">

| Browser | Score | Runs |
| --- | --- | --- |
| Scalebrowser profile | 0.9 | 2, fresh token each |
| Ordinary Chrome, control | 0.9 | control run on the same line |
| Scalebrowser profile, token checked a second time | 0.3 | a measurement error, see below |

</Evidence>

The third row is the trap. Within a few minutes `grecaptcha.execute()` can return the same token again, and checking a token twice returns `success: false` with a low score. Google's [verification documentation](https://developers.google.com/recaptcha/docs/verify) says why: each token "is valid for two minutes, and can only be verified once", and a second check ends in `timeout-or-duplicate`. The giveaway is a `challenge_ts` that does not move between readings. Reload the page before every v3 measurement, or you record a drop from 0.9 to 0.3 that never happened.

## Why does a fresh key prove nothing?

A fresh key proves nothing because, without visitor history, v3 returns the same score to everyone. We tested it deliberately with 9 readings on a new key: 4 with full humanised input, 4 without any mouse movement at all, and 1 in an untouched Chrome. All 9 returned 0.9. A test page that gives a bot with no input the same score as a person tells you about the key, not about the browser, and a demo key without traffic can be exactly such a key.

### What decides the checkbox instead?

The address the request comes from decided the checkbox, and the history of the profile did not. We measured the reCAPTCHA v2 checkbox instead, counting how often it turned green without an image puzzle, over 191 measurements on 9 September 2026.

<Evidence source="Scalebrowser maturity bench, reCAPTCHA v2 checkbox, 191 measurements in 2 runs, 9 September 2026">

| Setup | Measurements | Without a puzzle |
| --- | --- | --- |
| 20 profiles, each on its own bought mobile exit | 89 usable | 18 percent overall; mature 22, fresh 15 |
| 13 profiles on one residential line | 70 usable | 0 of 70 |

</Evidence>

The maturity of a profile made no measurable difference (p = 0.60), and the single residential line never produced a green checkbox in seven rounds. Without a proxy, every round started with a puzzle and stayed that way, so the result is not a line that burned itself during the test.

## How do you measure reCAPTCHA honestly for a bot?

Measure it against a control and on a key that has history. Run ordinary Chrome on the same line in the same minute, reload before every v3 reading, and treat 0.9 on a demo key as no information. For the checkbox, count green checks against puzzles over several rounds and change one thing at a time, the exit address first. The [verification page of the documentation](/docs/agents/verification) lists what our agent solves once a puzzle does appear, and the [page on testing your setup](/docs/verify) covers the other measurements.
