v1.0.0 — audited, GPL v2+, ready for production

Your face.
Your server.
No third parties.

Recognition is a privacy-first face recognition login plugin for WordPress. It runs entirely in the user’s browser with TensorFlow.js and face-api.js. No biometric data ever leaves your server — only an encrypted 128-number descriptor is stored.

  • WordPress 6.0+ · PHP 8.0+
  • No third-party API
  • AES-256 at rest
  • GDPR-friendly export & erase
The problem with face login

Most “face login” plugins ship your face to someone else.

Off-the-shelf face login often means AWS Rekognition, Azure Face, or a SaaS middleman. That introduces three real risks for a WordPress site owner.

Privacy

The third party now has a copy of your users’ biometric data — and the long-term obligations that come with it.

GDPR & compliance

Biometric data is “special category” under GDPR. Sending it off-site requires a separate legal basis, DPIA, and processor agreements.

Per-login cost

Per-call billing turns a free user experience into a metered line item that scales with your success.

The Recognition approach

Recognition runs entirely on the user’s device and your server.

The browser extracts a 128-number mathematical descriptor using a local face-api.js model. Your server only ever stores that encrypted descriptor — not a photo, not a face vector you can’t audit, not a stream to a third party.

  • Local — TensorFlow.js + face-api.js in the browser
  • Encrypted at rest — AES-256-CBC, HKDF per-record key, HMAC integrity
  • Reversible by design — the descriptor cannot be turned back into a photo
Core features

What ships in the main plugin.

Everything below is in the core recognition plugin. Some capabilities are unlocked further by the Pro license and the two add-ons.

Local-only recognition

All matching runs in the browser with bundled face-api.js weights. No external API calls, no data egress.

Free

Encrypted descriptors

Each 128-number descriptor is encrypted with AES-256-CBC and stored as ciphertext. Per-record HKDF key + HMAC integrity check.

Free

Liveness detection

Eye-aspect-ratio blink check defeats photo and screen replay attacks. Configurable and built in.

Free

Brute-force protection

Per-IP transient-based rate limiting, configurable lockout, and WordPress nonce verification on every endpoint.

Free

GDPR export & erase

Per-user export and erasure endpoints out of the box. Descriptors are removed with the user, not orphaned.

Free

Admin dashboard

Stats, authentication logs, enrolled users, settings, and a license screen — all under a single sidebar.

Free

Multi-device enrollment

Up to 5 faces per user, each with a device name. Rename, delete, and audit per-device from the user profile.

Free

REST + AJAX API

Clean /wp-json/frl/v1/* routes and admin-ajax actions for headless and decoupled setups.

Free

Advanced analytics

Longer retention, cohort breakdowns, and a deeper admin reports screen for security-sensitive sites.

Pro

Multi-factor combinations

Combine face with the QR Login add-on for a true second factor, or stack it with your existing 2FA plugin.

Pro

Priority email support

Direct line to the team behind the plugin. Reasonable SLAs, real engineers, no outsourced tier-1.

Pro

Multisite + auto-updates

Network-activate the plugin across a WordPress multisite and receive one-click automatic updates.

Pro
Free vs Pro

The free plugin is fully functional. Pro adds depth.

Recognition Free gives you a complete, private, GDPR-friendly face login. Pro adds the security, analytics, and integration layer that stores, agencies, and high-traffic sites need.

Capability
Free
Pro
Local face enrollment & login
AES-256 encrypted descriptors
Liveness detection (blink)
Rate limiting & brute-force protection
Admin dashboard, logs, users, settings
GDPR export & erase
REST + AJAX API
WooCommerce integration add-on
QR Code Login add-on
Advanced analytics dashboard
Multisite network support
Automatic plugin updates
Priority email support

The exact feature list is defined in FRL_License_Manager::get_free_features() and get_premium_features() in the audited 1.0.0 source.

Pro plan

For sites where face login is infrastructure, not a demo.

Pro is a per-site license that unlocks the add-ons, the advanced analytics surface, multisite support, and direct support. The free plugin stays free — Pro exists for the parts that take real engineering to keep running.

  • WooCommerce & QR add-ons included. Use checkout verification, trusted devices, and cross-device sign-in out of the box.
  • Server-enforced license gating. Entitlements come from the validation response, not inferred client-side.
  • Grace period on revalidation. Transient license-server outages do not immediately downgrade your site.
  • Direct support from the engineers. No tier-1 outsourcing. The people who wrote the code answer the tickets.
The add-on ecosystem

Two add-ons, one privacy-first approach.

Both add-ons are first-party plugins maintained by the same team. Each one requires the core Recognition plugin to be active.

WooCommerce Add-on

v1.0.0 · WordPress 6.0+ · WooCommerce 7.0+

Passwordless WooCommerce login, face verification at checkout, high-value order protection with risk-based rules, and trusted-device management — with HPOS and Cart/Checkout Blocks compatibility.

  • Passwordless customer login
  • Checkout face verification
  • High-value order protection
  • Trusted devices with HMAC fingerprinting
  • My Account face-security dashboard
  • Order verification logs & reports
Requires Pro license Documentation

QR Code Login Add-on

v1.0.0 · WordPress 6.0+ · PHP 8.0+

Sign in on devices without a webcam. A short-lived QR code appears on the desktop, the user scans it with their phone, and the same face-recognition pipeline signs the desktop in. Server-Sent Events for instant handoff, with polling as fallback.

  • 60–120 second single-use QR sessions
  • State machine: pending → scanned → authenticated
  • 256-bit tokens, stored as HMAC-SHA256 hashes
  • SSE desktop notification + AJAX polling fallback
  • Customer self-service profile tab
  • Admin sessions, logs, statistics screens
Requires Pro license Documentation
How it works

From wp-admin/plugins.php to signed-in user in four steps.

No external service to set up, no accounts to create off-site.

  1. 01

    Install the plugin

    Upload the recognition folder via Plugins → Add New → Upload Plugin and activate. Models are bundled locally.

  2. 02

    Configure thresholds

    Open Face Login → Settings. Set the match threshold, liveness, rate limit, encryption, and HTTPS requirement. Defaults are sensible.

  3. 03

    Users enroll their face

    From Users → Profile (or after a fresh registration), a user captures multiple samples. The browser averages them into a single descriptor.

  4. 04

    Sign in with a glance

    The login page gains a Sign in with face button. The browser re-extracts a descriptor, the server matches it, and the user is signed in.

New in 1.0.0

A camera popup that looks like it belongs.

Every popup in the main plugin, the WooCommerce add-on, and the QR Login add-on was redesigned around the same calm, premium pattern. The face scan, the checkout verification, the QR handoff — same tokens, same motion, same trust signals.

  • 01

    Calm, dark camera viewport

    Soft radial gradient orbs, a single dashed scan ring, and four L-shaped corner brackets. No harsh overlays, no neon.

  • 02

    Status you can read at a glance

    A live Camera on pill with a pulsing dot, a one-tap Switch, and a Position your face here prompt — all inline.

  • 03

    Trust row replaces disclaimers

    Four short signals — Secure, Private, Fast, Passwordless — replace the usual block of fine print under the form.

  • 04

    One design system, three plugins

    The same tokens, motion, and spacing ship across the main plugin, the WooCommerce add-on, and the QR Login add-on.

License

One license, one site, one portal.

Recognition uses a server-validated license system. The free plugin does not require a license — the Pro features and the add-ons do.

  1. 1
    Get a license key Sign in to the licensing portal, choose a plan, and receive a license key bound to a domain.
  2. 2
    Activate in WordPress Paste the key into Face Login → License. The plugin calls the validation server and stores the entitlement map.
  3. 3
    Use the add-ons Install and activate the WooCommerce and / or QR Login add-on. Pro features unlock without a second key.
  4. 4
    Daily revalidation A background cron revalidates the license and respects a grace period for transient server outages.

The license portal lives at license.jsswebsolutions.com. Replace this URL with your own portal if you fork or rebrand the plugin.

FAQ

Questions, answered from the source.

Only what the audited 1.0.0 plugin actually does.

  • No. The browser extracts a 128-number mathematical descriptor from your face. The plugin stores that descriptor (encrypted) — not a photo — and the descriptor cannot be reversed into an image.

  • No. Recognition runs face-api.js locally in the browser and matches against the descriptor stored on your own server. The plugin does not call AWS Rekognition, Azure Face, or any other third-party face API.

  • Everything you need for a production face login: enrollment, login, liveness detection, encrypted descriptors, rate limiting, the admin dashboard, the logs, the user manager, and the REST + AJAX API. The exact list is defined in FRL_License_Manager::get_free_features().

  • Pro unlocks the WooCommerce and QR Code Login add-ons, advanced analytics, multisite network support, automatic plugin updates, extended log retention, custom branding hooks, and priority email support.

  • A license key is bound to a domain. The plugin calls the validation server on activation and on a daily cron, and stores the resulting entitlement map. A grace period keeps Pro features available during transient server outages.

  • No. Both the WooCommerce and the QR Code Login add-ons are gated by a Pro license. The core plugin will run them but the protected endpoints return frl_premium_required until a valid license is present.

  • Pro features are disabled on the nextvalidation. The core plugin keeps working — enrollment, login, and the admin UI stay available. Reactivating the license restores the add-ons and Pro capabilities without a reinstall.

  • Yes — that is the main use case. A short-lived QR code appears on the desktop, the user scans it with their phone, and the phone’s camera runs the same face-recognition pipeline. Tokens are HMAC-SHA256 hashed before being stored.

  • Yes. The plugin meets WCAG 2.1 AA contrast, exposes proper ARIA, traps focus in modals, restores focus on close, and respects prefers-reduced-motion. Native alert() and confirm() were replaced with an accessible in-house modal in 1.0.0.

  • Free users get community support through the WordPress.org support forum. Pro users get direct priority email support from the engineering team behind the plugin.

Add face login to WordPress without giving anyone your face.

Free to install. Privacy-first by design. Ready for production. Start with the core plugin and add the add-ons when you need them.