

Login page with hCaptcha widget.
The strongest CAPTCHA. Switch from reCAPTCHA and Turnstile for free.
Unique REST API protection: In our October 2026 review of the 10 most-installed WordPress.org plugins tagged captcha, none offered this combination: hCaptcha protects selected content in WordPress REST post, page, collection, and search responses; requires hCaptcha for native REST comments; and blocks REST post-password attempts. Each safeguard applies when its corresponding protection is enabled.
A built-in Migration Wizard helps you move from Google reCAPTCHA or Cloudflare Turnstile to hCaptcha in just a few clicks.
hCaptcha is a drop-in replacement for reCAPTCHA that puts user privacy first.
Need to keep out bots? hCaptcha protects privacy while offering better protection against spam and abuse. Help build a better web.
hCaptcha for WP makes security easy with broad integration support, detailed analytics, and strong protection. Start protecting logins, forms, and more in minutes.
Highlights
Anti-Spam
Customization
Ease of Use
The purpose of a CAPTCHA is to distinguish between people and machines via a challenge-response test and thus increase the cost of spamming or otherwise abusing websites by keeping out bots.
To use this plugin, install it and enter your sitekey and secret in the Settings hCaptcha menu after signing up on hCaptcha.com.
hCaptcha Free lets websites block bots and other forms of abuse via humanity challenges.
hCaptcha Pro goes beyond the free hCaptcha service with advanced machine learning to reduce the challenge rate, delivering high security and low friction along with more features like UI customization.
hCaptcha Enterprise delivers a complete advanced security platform, including fraud protection and more to address both human and automated abuse.
hCaptcha is designed to comply with privacy laws in every country, including GDPR, LGPD, CCPA, and more.
For example, hCaptcha has been certified under ISO 27001 and 27701 and is enrolled in the EU-US, UK-US, and Swiss-US Data Privacy Framework for GDPR compliance.
Details are available at www.hcaptcha.com/certifications and www.hcaptcha.com/gdpr.
With the default configuration, this plugin does not:
If you enable CAPTCHA protection for native WordPress password-protected posts, the plugin sets a first-party hcaptcha_postpass_ cookie after successful verification. It contains signed proof of the password scope without the password itself and follows the native post-password cookie lifetime, including session cookies. Existing post-password cookies without this proof require another password-form submission with CAPTCHA. REST password attempts are rejected while this protection is enabled; editor authorization remains available.
Once you activate this plugin, the hCaptcha-answering user’s IP address and browser data may be sent to the hCaptcha service on pages where you have activated hCaptcha protection. However, hCaptcha is designed to minimize data used, process it very close to the user, and rapidly discard it after analysis.
For more details, please see the hCaptcha privacy policy at:
If you enable the optional plugin-local statistics feature, the following additional data will be recorded in your database:
We recommend leaving IP and User Agent recording off. In that configuration, the local event records do not contain either value.
The separate Collect Anonymously setting controls only local event storage. If IP address or User Agent collection is enabled, this setting stores those values as salted hashes instead of their original values.
Statistics is optional and off by default. Enabling it sends the visitor IP of the current request (X-Forwarded-For), the full site URL with /plugin-stats appended, and plugin configuration to hCaptcha at https://a.hcaptcha.com/api/event to help prioritize plugin development. Configuration includes the plugin version, license type, active integrations and their enabled forms, multisite status, and site/secret key presence flags, without key values. Reports are sent when Statistics is turned on and on initialization after plugin updates. The IP belongs to the request triggering the report, which may be an administrator or cron request; if no public IP is available, 127.0.0.1 is sent as a fallback. The recipient also receives ordinary network metadata, such as the server IP. Collect Anonymously, Collect IP, and Collect User Agent affect only local event storage, not these reports. Custom code can force or filter sends even with Statistics off.
The existing telemetry transport is retained for compatibility. It posts JSON with Content-Type: application/json, a fixed browser-style User-Agent (not the visitor browser value), and X-Forwarded-For containing the IP selected by the plugin from the current request using its trusted IP header settings/filter, or the 127.0.0.1 fallback. This fallback is not an anonymized visitor IP. The JSON fields are d (wp-plugin.hcaptcha.com), n (plugin-stats), u (the full home_url('plugin-stats'), including any installation path), r (null), w (the fixed value 1024), and props (configuration). The configuration fields are hCaptcha, License, Site key, Secret key, Multisite, Active, and active integration names with their enabled form identifiers. At most 30 configuration fields are sent, with Active limited to 2000 characters. Site key and Secret key are presence flags (0 or 1); their values are not sent. Local event records are not included in the remote report.
For developers, ordinary calls to hcap_send_plugin_stats require Statistics to be enabled. The plugin forces a send when the setting changes from off to on, before the new value is saved; other code can also explicitly request a forced send. The hcap_allow_send_plugin_stats filter can allow or block any send, including a forced send. The Playground integration uses this filter to block telemetry. Collect Anonymously does not change the remote report.
NOTE: This is a community-developed plugin. Your PRs are welcome.
For feature requests and issue reports, please
open a pull request.
We also suggest emailing the authors of plugins you’d like to support hCaptcha: it will usually take them only an hour or two to add native support. This will simplify your use of hCaptcha and is the best solution in the long run.
You may use native hCaptcha support if available for your plugin. Please check with your plugin author if native support is not yet available.
However, the hCaptcha plugin provides a broader set of options and features so that you can use it with any form on your site.
Instructions for popular native integrations are below: