An automatic CAPTCHA solver, built into the browser.

reCAPTCHA and hCaptcha get solved in the page while your Playwright script or AI agent waits. No solver API key, no sitekey, no token to inject. On by default, no extra charge.

example.com/search?q=shoesResults for “shoes”#resultsTrail runnerLightweight, for rough groundCanvas low-topEveryday, washableLeather chelsea bootResoleable, water resistantexample.com/search?q=shoesResults for “shoes”#resultsTrail runnerLightweight, for rough groundCanvas low-topEveryday, washableLeather chelsea bootResoleable, water resistant
per solve. No CAPTCHA line item, just browser time and proxy traffic
$0
of visits got through on 100 hard bot-protected sites with the solver on; 84% with it off
90.5%
sitekeys, tokens or solver API keys in your code
0

Stealth avoids challenges. The ones that render get solved in the page.

A challenge is what a site shows when it already suspects you. This browser is a hardened Chromium fork with per-session fingerprints and residential IPs, so fewer appear. When a reCAPTCHA or hCaptcha does render, the browser solves it where it stands and your script continues on the same page. On Stealth Bench V2, visits got through 90.5% of the time with the solver on and 84% with it off; the solver-off setup ran once, and a rerun with it on scored 90%. The 100 sites were picked because Browser Use Cloud historically got through where stock Chrome with a US proxy did not. They are hard on purpose and not a balanced sample of the web or of anti-bot vendors.
browserCAPTCHA solverproxy vendor
one browser session

On by default. Off with one field.

Connect Playwright, Puppeteer or any CDP client to the browser and run your script as it is. Every browser has a live view, so you can watch a challenge appear and clear. Teams that run their own solver set solveCaptchas to false on a standalone browser, and the page is theirs. Agent runs keep the solver on.
from browser_use_sdk.v4 import BrowserUsefrom playwright.sync_api import TimeoutError, sync_playwright with BrowserUse() as client:    session = client.browsers.create(proxy_country_code="us")  # solver on    print("Watch it:", session.live_url)    try:        with sync_playwright() as p:            context = p.chromium.connect_over_cdp(session.cdp_url).contexts[0]            page = context.pages[0] if context.pages else context.new_page()            page.goto("https://example.com/search?q=shoes")  # your page            # CAPTCHA in the way? Don't touch it: no sitekey, no token, no            # refresh, no clicking. Wait for what comes after it, up to 2 min.            try:                page.wait_for_selector("#results", timeout=120_000)            except TimeoutError:                # Still stuck: a person clears it before the browser stops.                input(f"Clear it in the live view, then press Enter: {session.live_url}")    finally:        client.browsers.stop(session.id)
main.pyOn by default · V4 browsers and runs

Which CAPTCHAs it solves

reCAPTCHA
Solved automatically when the challenge renders in the page, like the image grid in the recording above.
hCaptcha
Solved automatically, in the page. Newer than reCAPTCHA support and not guaranteed: test your site first.
Cloudflare challenge pages, PerimeterX and other bot walls
Not the solver. The stealth layer and residential proxies handle these; access is not guaranteed.
Cloudflare Turnstile
Not a listed solver type. It shows a checkbox only when its non-interactive checks flag the visitor, so a clean browser often passes on its own; if a checkbox stays, clear it in the live view.
FunCaptcha (Arkose Labs), GeeTest, text CAPTCHAs
Not listed as supported. Test your site first; if a challenge stays, clear it in the live view or email contact@browser-use.com with the session ID.
EU region
Automatic solving is off in the EU deployment.
If it does not clear
Hand the session to a person in the live view; the browser and cookies stay as they are. If the whole site blocks the browser, switch proxy country.

Questions people ask

How do I solve CAPTCHAs automatically in Playwright or Puppeteer?

Run the script on a Browser Use Cloud browser. Create one with the API or SDK, connect Playwright or Puppeteer to its CDP URL, and the solver is already on. When a challenge appears, stop driving the page, wait about ten seconds, then read it again; keep checking for up to two minutes. Do not refresh, click the challenge or replace the browser while it works. No solver API key, sitekey or token code.

Which CAPTCHA types does it solve?

reCAPTCHA and hCaptcha, in the page (hCaptcha support is newer). Cloudflare challenge pages and other whole-site bot walls are handled by the stealth layer and residential proxies, not by the solver. Cloudflare Turnstile is not a listed solver type: it shows a checkbox only when its non-interactive checks flag the visitor, so a clean browser often passes on its own. FunCaptcha (Arkose Labs), GeeTest and other types are not listed as supported: test your site first, and hand a stuck challenge to a person through the live view.

How is this different from wiring up a solver API like 2Captcha?

With a solver API, your code finds the sitekey and page URL, sends them to the API, polls for a token, then injects it into the g-recaptcha-response field or a callback. You pay per solve: 2Captcha lists reCAPTCHA v2 at $1 to $2.99 per 1,000 (its pricing page, October 2026). Here there is no solver integration in your code: the browser handles the challenge where it renders, with no per-solve fee.

When is a solver API the better pick?

When there is no browser, only raw HTTP requests that need a token. When you need a type we do not list, such as FunCaptcha. When you run your own browsers. And in the EU region, where automatic solving is off. You can also switch our solver off on a standalone browser and call your own.

Does it cost extra?

No. There is no CAPTCHA line item. You pay $0.02 per browser-hour and $5/GB of residential proxy traffic, the same as any browsing, on the free tier and pay-as-you-go alike.

What happens when a challenge is not cleared?

Solving is not guaranteed. Open the session's live view and let a person click through; the browser and cookies stay as they are. For an agent run, set keepAlive so the browser stays open, clear the challenge in the live view, then send a follow-up run on the same session. If the whole site blocks the browser instead of showing a challenge, try another proxy country.

Can I turn it off?

Yes, on standalone browsers: solveCaptchas: false over REST or in the TypeScript SDK, solve_captchas=False in Python. Agent runs keep the solver on; there is no run setting for it.

Where am I allowed to use it?

On automation you are allowed to do: your own accounts, your own sites, and sites whose terms permit it.