OpenPorte Spam Protection

openporte · By J-C Berthon
600+ installs 5.0 (5) Updated 5 days ago v1.30.1 WP 5.6–7.1.4 PHP 8.0+

Impact score

Footprint Score across the two most representative contexts.

7 scans · last scan 1 month ago

Compare with another plugin

Homepage Score

Impact measured on the public homepage

···
—

v1.29.1 · 3 scans · Consolidated score over 90 days · 2 versions

Not enough data to publish the grade (15 scans min, currently 3).

What it adds to every page load

Added time
6 ms
Added memory
0.0 MB
SQL queries
+0
CSS/JS files
+0
External calls
0

Admin Score

Impact measured in the WordPress admin

Scan being analyzed. The score will be published once we have enough measurements.

About

OpenPorte is a free and open-source anti-spam plugin that protects WordPress
forms from spam using a lightweight Proof-of-Work challenge instead of CAPTCHAs.
The goal is to make spam expensive for bots while keeping the experience almost
invisible for legitimate visitors and respecting their privacy.

For site owners, OpenPorte offers an easy to configure and deploy modern
spam protection under their control.
For the site users, it offers an accessible, transparent and privacy-friendly
alternative to CAPTCHAs.

OpenPorte is built around the open-source ALTCHA widget.

Read more

Some highlights:

For the list of contributors, refer to our GitHub project: Contributors.

AI-assisted project. Architecture, security decisions, and final review are
mine; AI tools (Claude, Mistral, and others) help with drafting code, tests,
translations, and documentation — without them, one person couldn’t keep
this fork alive.

The original ALTCHA Spam Protection WordPress plugin (v1) was open source
(GPLv2). Its authors have since released a version 2/3 which is no longer
open source. They no longer maintain the open source project and recommend
that users migrate to v2/v3. See the official project at https://altcha.org
for their offering.

OpenPorte started as a fork and continues the v1 line as free software
(GPLv2 or later) for users who want to stay on a fully open-source,
self-hosted solution. It is a faithful fork: existing v1 installations
can switch to OpenPorte and keep their settings (see Upgrading).

OpenPorte is backward-compatible with ALTCHA Spam Protection v1 plugin:

See the Deprecations section for the full list of compatibility aliases and
what they map to.

Deactivate the old ALTCHA plugin, then install and activate OpenPorte. Your
existing configuration is detected and copied into the OpenPorte settings on
first activation; the original ALTCHA settings are left untouched, so you can
roll back to ALTCHA v1 without losing anything. Do not run both plugins at the
same time.

If your site was already moved to ALTCHA v2/v3 (for example by the automatic
3.0.0 update), your original v1 settings are normally still in the database:
the v2/v3 upgrade neither migrates nor removes them. Deactivate ALTCHA, then
install and activate OpenPorte — it finds and imports the v1 settings, even
when the v1 plugin itself has long been deleted. Settings made in v2/v3 are
not read.

Upgrading to 1.30.0 changes nothing: every site keeps serving challenges
through the REST API until you select Ajax under Settings → OpenPorte.

If you selected Ajax and later downgrade to a release before 1.30.0, switch
back to REST API first and purge your page and CDN caches. If you have already
downgraded, purge those caches now: older release have no Ajax endpoint, so a
page cached with the Ajax challenge URL cannot load a challenge.

The following ALTCHA-era identifiers are kept as aliases for backward
compatibility and are scheduled for removal in a future release:

OpenPorte prioritizes user privacy by avoiding the use of cookies and fingerprinting techniques.

This plugin remains fully contained within your WordPress installation, eliminating any reliance on external services.

OpenPorte verifies submissions in one of two modes, selected in the settings
(API Mode):

The paid altcha.org regional SaaS classifier offered by earlier versions has
been removed; both remaining modes are free and self-hostable.

In Self-hosted mode the widget fetches each challenge from your own site. The
Self-hosted transport setting (Settings → OpenPorte, below API Mode) chooses
which endpoint serves it:

Both serve the same challenge, are verified the same way, and stay available
whichever one is selected. The deprecated /wp-json/altcha/v1/challenge alias
is still served too. In Custom API mode all of them refuse with an error
instead: your backend issues the challenges there.

Keep REST API unless a security plugin blocks the REST API for logged-out
visitors; then either allow /openporte/v1/challenge in that plugin, or switch
to Ajax. If admin-ajax.php is blocked for visitors instead, stay on REST API.
The same applies when a page cache or CDN stores the REST API’s responses
(opening the challenge URL twice, logged out, shows the same challenge): exclude
/openporte/v1/challenge from it, or switch to Ajax. Since 1.30.1 the challenge
endpoints already opt out of LiteSpeed Cache and of caching plugins that honour
DONOTCACHEPAGE.
OpenPorte does not test this automatically: a check from the server cannot see
firewall, CDN or browser-side rules. See the FAQ for how to check by hand.

On multisite, each site has its own transport setting; a site where it was
never saved uses the REST API.

All source code for the plugin, and the ALTCHA widget is available on GitHub. In the repository, you’ll also find versions of non-minified JavaScript and CSS assets:

Description published by J-C Berthon on WordPress.org, licensed under GPLv2 or later.

Tags
anti-spam captcha GDPR protect security

Screenshots

Screenshots published by J-C Berthon on WordPress.org, licensed under GPLv2 or later.

Friction-less Captcha without puzzles
Friction-less Captcha without puzzles
Configuration
Configuration
Protection on the login page
Protection on the login page
Protection with WooCommerce
Protection with WooCommerce
Floating UI Captcha
Floating UI Captcha

Per-version history

Show per-version detail (2 versions)

How the plugin evolves version by version.

Version Homepage Admin Last scan
v1.29.1 1 scan — 1 month ago
v1.29.0 2 scans — 1 month ago

Alternatives in the same category

Other security plugins measured by the community, ranked from lightest to heaviest.

Scan history

Show individual scan log (7 scans)

Date Version Context Score Grade Time Memory
1 month ago v1.29.1 messages.page_type.custom 98/100 A 4 ms 0.0 MB
1 month ago v1.29.1 Homepage 100/100 A 0 ms 0.0 MB
1 month ago v1.29.0 messages.page_type.custom 92/100 A 14 ms 2.0 MB
1 month ago v1.29.0 messages.page_type.custom 90/100 A 2 ms 2.0 MB
1 month ago v1.29.0 Homepage 97/100 A 27 ms 2.0 MB
1 month ago v1.29.0 messages.page_type.custom 98/100 A 0 ms 0.0 MB
1 month ago v1.29.0 Homepage 98/100 A 6 ms 0.0 MB