hCaptcha Not Working
hCaptcha โnot workingโ usually means one of three things: the checkbox never loads, every correct answer is followed by another puzzle, or the page reports a code such as `rate-limited`, `network-error` or `script-error`. Each points to a different layer, from an extension on your laptop to the websiteโs own server. This guide uses hCaptchaโs developer documentation to tell them apart, then gives the fixes in the order that costs you the least.
Short answer
- A widget that never appears is usually a blocked script: an extension, a filtering DNS service or a firewall that stops hcaptcha.com or one of its subdomains.
- Puzzle after puzzle means hCaptcha has low confidence in the session, or the site set a hard difficulty. Blocked cookies, a changing IP and automation all lower confidence.
- `rate-limited` means too many requests from you. Waiting helps and repeated refreshing makes it worse.
- If the puzzle passes but the form still fails, the siteโs server rejected the token. That is the site ownerโs fix, usually an expired or reused token.
How hCaptcha decides to show a puzzle
hCaptcha does not show the same thing to everyone. Its FAQ says whether a visitor sees a challenge depends on its computed confidence in the visitorโs humanity, combined with the difficulty the site owner selected and other security settings. A failed answer always produces a new challenge. Paid tiers add modes that rarely or never show a puzzle, so two sites using hCaptcha can treat the same visitor very differently.
The hCaptcha privacy policy lists the kinds of data it collects to judge whether a visitor is human: mouse movements, scroll position, key presses and touch events, alongside technical data such as IP address, browser type, internet provider, device type and operating system. It does not publish how much weight any of these carry. Treat any list of โthe factors hCaptcha usesโ as an informed guess, including this one.
In practice, confidence drops when the session looks new every time (no cookies), when the address is shared or flagged, when input looks scripted, and when the IP changes during the visit.
Five failure types and what each points to
| What you see | Likely layer | First check |
|---|---|---|
| Checkbox or puzzle never loads | Script blocked, filtering DNS or firewall | Open the page with extensions off, then on another network |
| New puzzle after every correct answer | Low confidence or high site difficulty | Allow cookies for hcaptcha.com and keep one IP for the visit |
| Error mentions too many requests | Rate limit on your requests | Stop retrying and wait before the next attempt |
| Loads on mobile data, fails on Wi-Fi | Network filter on that connection | Check router DNS blocklists and security software |
| Puzzle passes, form says verification failed | Site server rejected the token | Report it to the site with the time of the attempt |
The hCaptcha configuration reference documents the client-side error codes a site receives. Visitors rarely see the raw code, but the behavior matches it:
rate-limited: the user has sent too many requests.network-error: there are connection problems, for example the device is offline.script-error: the hCaptcha JavaScript could not be loaded.challenge-errorandinternal-error: setup or client failures; hCaptcha suggests the user may need to select the checkbox again.challenge-expired: the time limit to answer ran out.
Before changing anything on your side, check the hCaptcha status page. A reported incident explains failures across many sites at once.
Fixes in order, cheapest first
- Reload once, then wait. Repeated refreshes add requests and can trigger
rate-limited. - Check the status page. If hCaptcha reports an incident, nothing on your side will help.
- Turn off extensions for the site. hCaptchaโs accessibility page says that when challenges keep returning even with its accessibility cookie set, the usual cause is an aggressive ad blocker, an anti-cookie extension or browser settings that refuse cross-site cookies, and it recommends allowing cookies for hcaptcha.com and *.hcaptcha.com. A per-site exception is better than turning protection off everywhere.
- Allow cross-site cookies for the check. The widget runs inside a frame from hcaptcha.com, so a setting that blocks cross-site cookies can stop it remembering you. The same page gives the settings to change in Safari (cross-site tracking prevention) and Brave (shields).
- Update the browser. According to the FAQ, official support covers each browserโs two latest major releases.
- Look for DNS filtering. Router blocklists, filtering DNS services and some security suites block tracker-like domains. Site owners are told to allow both hcaptcha.com and its subdomains, so a filter that blocks only one subdomain can still break the widget.
- Compare one network. Try mobile data instead of Wi-Fi, keeping the same browser. If it works, the network or its address is the cause.
- Use the accessibility cookie if puzzles are a barrier. hCaptcha offers an accessibility sign-up that sets an encrypted cookie usable several times a day, refreshed by logging in again.
If verification fails on your own site
When visitors solve the puzzle but your form rejects them, the problem sits between your server and hCaptcha. The developer guide lists the siteverify error codes. The ones that cause most real failures:
expired-input-response: tokens expire, 120 seconds by default. Long forms that load the widget early hit this.already-seen-response: a token was verified twice, often by a retry, a double submit or a second server-side check.sitekey-secret-mismatch: the site key and secret come from different configurations.missing-input-responseorinvalid-input-response: the token never reached your server or was altered on the way.
Send a form-encoded POST, not JSON, and include remoteip and sitekey:
curl -s https://api.hcaptcha.com/siteverify \
-d secret="$HCAPTCHA_SECRET" \
-d response="$TOKEN" \
-d remoteip="$VISITOR_IP" \
-d sitekey="$HCAPTCHA_SITEKEY"
If you use a Content Security Policy, allow https://hcaptcha.com and https://*.hcaptcha.com for scripts, frames, styles and connections. The API does not accept localhost as a hostname, so test through a hosts-file name instead, and keep the documented test keys out of production.
For proxy and automation users
A puzzle you solve is tied to the session that received it. If the exit address changes between loading the widget and submitting the form, the site sees a new session and asks again. With a rotating setup, keep one address for the whole task: rotate between tasks, not during them. On mobile proxies from Coronium the rotation timer has a 60 second minimum, and a rotation link rotates on every GET request, including link previews, so a link pasted into a chat app can change your IP in the middle of a puzzle.
Shared addresses work against you here. The IETFโs RFC 6269 explains that blocking or penalizing a shared address also hits everyone else behind it, which is why a busy carrier or VPN address can see more puzzles than a quiet one. A dedicated line removes other customersโ traffic from your address, though the address may still have history from before you used it.
For automation, assume every page script can see that the browser is automated: the W3C WebDriver standard sets navigator.webdriver to true under remote control. hCaptcha does not document whether it reads this flag. Solving services exist, and whether you may use one depends on the websiteโs terms, not on hCaptcha. For a broader view of the causes, read why CAPTCHAs keep appearing.
Sources and review scope
Sources reviewed October 30, 2026. Vendor documentation was read on October 30, 2026. Where a vendor does not document a behavior, the article says so. We cannot see a websiteโs private rules, scores or account decisions, and no step here is certain to fix it.
Frequently asked questions
Other block pages and CAPTCHA errors
Each guide names the system behind the message, then lists the fixes in the order worth trying.
Related workflows
Tell an IP cause from a browser or pattern cause.
What solving services do, and where they are allowed.
The deeper guide for Cloudflare-protected sites.
Confirm which browser process uses the proxy.
Timers, sessions and when a new address helps.
The full set of error and checker guides.
Where to get a dedicated line
A Coronium mobile proxy is one physical device with its own SIM, rented to one customer. It connects over HTTP or SOCKS5, the IP changes by dashboard button, API link or timer, and data is not metered on dedicated lines. Brazil lines are the exception: 20 GB of data a month and a new IP on request only, with no timer. Stock and prices differ by country and carrier.