Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: OpenID Connect / OAuth client 3.0.0-alpha9 New alpha version released for module openid_connect (3.0.0-alpha9). Release: Opensolr Search 4.5.0 Minor update available for module opensolr_search (4.5.0). Release: Timelinr 1.0.1 Minor update available for module timelinr (1.0.1). Usage Milestone: Simplify Module simplify crossed 10,000 active installs. Usage Milestone: Views Reference Filter Module entityreference_filter crossed 10,000 active installs. Usage Milestone: Dropdown Language Module dropdown_language crossed 10,000 active installs. Usage Milestone: Paragraphs Browser Module paragraphs_browser crossed 10,000 active installs. Usage Milestone: OpenAPI Module openapi crossed 10,000 active installs. Usage Milestone: Decoupled Router Module decoupled_router crossed 10,000 active installs. Module Revived: Entityqueue Buttons 1.1.2 Module entityqueue_buttons updated after 8 months of inactivity (1.1.2).

Captcha Keypad

316 sites Security covered Drupal 10–11 Captcha ecosystem
View on drupal.org

Captcha Keypad is a security module that replaces traditional text CAPTCHAs with a numeric keypad. Users click a sequence of numbers displayed on a shuffled keypad, which is intuitive for humans but difficult for bots to bypass. It supports various forms and integrates with the core CAPTCHA module.

Captcha Keypad blocks spam registrations and form submissions with an
on-screen numeric keypad instead of distorted text — a privacy-friendly
alternative to reCAPTCHA that keeps every request on your own site.

No third-party service. No Google. No data leaves your server, so there is
nothing extra to declare in your privacy policy.

Why a keypad

Distorted-text CAPTCHAs are solved by OCR, and image recognition has made most
"pick the traffic lights" challenges cheap to bypass. Captcha Keypad asks for
something a scripted bot does not do by default: read a short code from the
page and click it, key by key, on a keypad whose buttons move on every load.

Features

  • On-screen numeric keypad — visitors click the code rather than type it.
  • Shuffled keys — button order is randomised on every page load, so recorded click coordinates are useless.
  • Three layouts — Plain, Horizontal and Vertical, to suit your theme.
  • Configurable code length — from a single digit up to sixteen.
  • Skip for administrators — trusted users are not challenged.
  • Choose the forms you protect — user registration, login, login block, password reset, contact forms, comments, forum topics and any content type.
  • Works with CAPTCHA, or on its own — use it as a CAPTCHA challenge type, or let Captcha Keypad place itself on the forms you pick.

Requirements

Drupal 10.2, 11 or 12. PHP 8.1 or later. No other modules required.

Installation

    composer require 'drupal/captcha_keypad:^2.0'

Enable the module, then configure it at
Administration › Configuration › System › Captcha Keypad
(`/admin/config/system/captcha_keypad`).

Pick a code length, choose a layout, and tick the forms you want protected.
That is the whole setup.

Using it with the CAPTCHA module

If the CAPTCHA module is installed, Captcha Keypad registers itself as a
challenge type called Keypad, and you assign it to forms from CAPTCHA's own
settings page instead.

Note: the CAPTCHA module does not yet support Drupal 12. On Drupal 12, use
Captcha Keypad on its own until that lands.

Accessibility

The keypad has to be clicked or tapped; typing the code is rejected. It is
therefore not suitable as the only challenge on forms that must be usable by
keyboard-only or screen reader users. Consider pairing it with an accessible
alternative on those forms.

Similar modules

Antibot, Honeypot, CAPTCHA, Image CAPTCHA, Botcha, Spamicide.

Disabling

If you don't want to be filling in this for on your local/dev environment, you can disable it based on Environment variables or any other condition:

// Disable captcha keypad on Dev environment
if (!is_null(getenv('ENVIRONMENT') && getenv('ENVIRONMENT') == 'dev') {
  $conf['securepages_enable'] = 0;
}

Contributing

Issues and merge requests are welcome in the https://www.drupal.org/project/issues/captcha_keypad.

Supporting

If you want to support this project you can use https://gratipay.com/~marcelovani/

Live demo

http://csvconverter.biz/user/register

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
8
Tracked since
Feb 2025
Latest release
6 days ago
Releases (12 mo)
7 ▲ from 1
Maintenance
Active

Release Timeline

Releases

Version Type Core Release date
2.0.1 Stable 10–11 Aug 25, 2026
2.0.x-dev Dev 10–11 Aug 25, 2026
2.0.0 Stable 10–11 Aug 24, 2026
8.x-1.11 Stable 8–11 Mar 11, 2026
8.x-1.10 Stable 8–11 Mar 1, 2026
8.x-1.9 Stable 8–11 Mar 1, 2026
8.x-1.8 Stable 8–11 Mar 1, 2026
8.x-1.7 Stable 8–11 Feb 7, 2025