PHPackages                             georgestephanis/two-factor - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. georgestephanis/two-factor

ActiveWordpress-plugin[Authentication &amp; Authorization](/categories/authentication)

georgestephanis/two-factor
==========================

Two-Factor Authentication for WordPress.

0.16.0(1mo ago)80959177[68 issues](https://github.com/WordPress/two-factor/issues)[26 PRs](https://github.com/WordPress/two-factor/pulls)GPL-2.0-or-laterPHPPHP &gt;=7.2.24|^8CI passing

Since Sep 4Pushed 2d ago41 watchersCompare

[ Source](https://github.com/WordPress/two-factor)[ Packagist](https://packagist.org/packages/georgestephanis/two-factor)[ Docs](https://wordpress.org/plugins/two-factor/)[ RSS](/packages/georgestephanis-two-factor/feed)WikiDiscussions master Synced yesterday

READMEChangelog (10)Dependencies (16)Versions (53)Used By (0)

Two-Factor
==========

[](#two-factor)

[![Two-Factor](https://github.com/WordPress/two-factor/raw/master/.wordpress-org/banner-1544x500.png)](https://github.com/WordPress/two-factor/blob/master/.wordpress-org/banner-1544x500.png)

[![Required PHP Version](https://camo.githubusercontent.com/196aa234457b2a856cace87c3641baddf3446e2de2a649373450cfab6bbed9c0/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f72657175697265642d7068702f74776f2d666163746f723f6c6162656c3d5265717569726573253230504850)](https://camo.githubusercontent.com/196aa234457b2a856cace87c3641baddf3446e2de2a649373450cfab6bbed9c0/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f72657175697265642d7068702f74776f2d666163746f723f6c6162656c3d5265717569726573253230504850) [![Required WordPress Version](https://camo.githubusercontent.com/abfb97fc1326905e97d2e5eaddaee1a5cd8d5e41dbf066bc66641eb53384385b/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f77702d76657273696f6e2f74776f2d666163746f723f6c6162656c3d5265717569726573253230576f72645072657373)](https://camo.githubusercontent.com/abfb97fc1326905e97d2e5eaddaee1a5cd8d5e41dbf066bc66641eb53384385b/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f77702d76657273696f6e2f74776f2d666163746f723f6c6162656c3d5265717569726573253230576f72645072657373) [![WordPress Tested Up To](https://camo.githubusercontent.com/f27608a6d85368d5f99ba0ce3a0f36f3af0ea0d1296aa6e6a5e3fddcc9dcf088/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f7465737465642f74776f2d666163746f723f6c6162656c3d576f72645072657373)](https://camo.githubusercontent.com/f27608a6d85368d5f99ba0ce3a0f36f3af0ea0d1296aa6e6a5e3fddcc9dcf088/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f7465737465642f74776f2d666163746f723f6c6162656c3d576f72645072657373) [![GPL-2.0-or-later License](https://camo.githubusercontent.com/665cb45e8d48c378cfd0e47cbeba231ad646c70f5b728a036337d2e479588962/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f576f726450726573732f74776f2d666163746f722e737667)](https://github.com/WordPress/two-factor/blob/trunk/LICENSE.md?label=License)

[![WordPress.org Rating](https://camo.githubusercontent.com/2fee091dd785142481e216bcaeed1016d82f5e52aa5b967cf97a923af6ce2fe5/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f726174696e672f74776f2d666163746f723f6c6162656c3d57502e6f7267253230526174696e67)](https://camo.githubusercontent.com/2fee091dd785142481e216bcaeed1016d82f5e52aa5b967cf97a923af6ce2fe5/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f726174696e672f74776f2d666163746f723f6c6162656c3d57502e6f7267253230526174696e67) [![WordPress Plugin Downloads](https://camo.githubusercontent.com/8c213fa28cd94574f967647e89b29fe8730f35a89226e6cc0789f6f0f105abab/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f64742f74776f2d666163746f723f6c6162656c3d57502e6f7267253230446f776e6c6f616473)](https://camo.githubusercontent.com/8c213fa28cd94574f967647e89b29fe8730f35a89226e6cc0789f6f0f105abab/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f64742f74776f2d666163746f723f6c6162656c3d57502e6f7267253230446f776e6c6f616473) [![WordPress Plugin Active Installs](https://camo.githubusercontent.com/1fa4ba89938a64ce6bf291e866c2238c215ab3c2c4060682923e7c5d7675719d/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f696e7374616c6c732f74776f2d666163746f723f6c6162656c3d57502e6f7267253230416374697665253230496e7374616c6c73)](https://camo.githubusercontent.com/1fa4ba89938a64ce6bf291e866c2238c215ab3c2c4060682923e7c5d7675719d/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f696e7374616c6c732f74776f2d666163746f723f6c6162656c3d57502e6f7267253230416374697665253230496e7374616c6c73) [![WordPress Playground Demo](https://camo.githubusercontent.com/36110f8acd8252d68de99817f7b1373035bed45b75efbf28f134ca6bacded5ce/68747470733a2f2f696d672e736869656c64732e696f2f776f726470726573732f706c7567696e2f762f74776f2d666163746f723f6c6f676f3d776f72647072657373266c6f676f436f6c6f723d464646464646266c6162656c3d4c69766525323044656d6f266c6162656c436f6c6f723d33383538453926636f6c6f723d333835384539)](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/WordPress/two-factor/master/.wordpress-org/blueprints/blueprint.json)

[![Test](https://github.com/WordPress/two-factor/actions/workflows/test.yml/badge.svg)](https://github.com/WordPress/two-factor/actions/workflows/test.yml) [![Deploy](https://github.com/WordPress/two-factor/actions/workflows/deploy.yml/badge.svg)](https://github.com/WordPress/two-factor/actions/workflows/deploy.yml) [![codecov](https://camo.githubusercontent.com/8cb31ca776334c5b4768554be90518e3c2089ea40ebe18121bea625dba98dcc6/68747470733a2f2f636f6465636f762e696f2f67682f576f726450726573732f74776f2d666163746f722f67726170682f62616467652e737667)](https://codecov.io/gh/WordPress/two-factor)

> Two-Factor plugin for WordPress. [View on WordPress.org →](https://wordpress.org/plugins/two-factor/)

Description
-----------

[](#description)

The Two-Factor plugin adds an extra layer of security to your WordPress login by requiring users to provide a second form of authentication in addition to their password. This helps protect against unauthorized access even if passwords are compromised.

Usage
-----

[](#usage)

See the [readme.txt](readme.txt) for installation and usage instructions.

Contribute
----------

[](#contribute)

Please [report (non-security) issues](https://github.com/WordPress/two-factor/issues) and [open pull requests](https://github.com/WordPress/two-factor/pulls) on GitHub. See below for information on reporting potential security/privacy vulnerabilities.

Join the `#core-passwords` channel [on WordPress Slack](http://wordpress.slack.com) ([sign up here](http://chat.wordpress.org)).

To use the provided development environment, you'll first need to install and launch Docker. Once it's running, the next steps are:

```
git clone https://github.com/wordpress/two-factor.git
cd two-factor
npm install
npm run build
npm run env start

```

See `package.json` for other available scripts you might want to use during development, like linting and testing.

When you're ready, open [a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) with the suggested changes.

Testing
-------

[](#testing)

1. Run `npm test` or `npm run test:watch`.

To generate a code coverage report, be sure to start the testing environment with coverage support enabled: npm run env start -- --xdebug=coverage

To view the code coverage report, you can open a web browser, go to `File > Open file...`, and then select `{path to two-factor}/tests/logs/html/index.html`.

Deployments
-----------

[](#deployments)

Deployments [to WP.org plugin repository](https://wordpress.org/plugins/two-factor/) are handled automatically by the GitHub action [.github/workflows/deploy.yml](.github/workflows/deploy.yml). Versioned releases are deployed from [Git tags](https://github.com/WordPress/two-factor/tags) [under the `tags` directory](https://plugins.trac.wordpress.org/browser/two-factor/tags). See the workflow for current branch/release conditions used for readme and asset updates.

[View release documentation →](RELEASING.md)

Known Issues
------------

[](#known-issues)

- PHP codebase doesn't pass the WordPress coding standard checks, see [\#437](https://github.com/WordPress/two-factor/issues/437).

Changelog
---------

[](#changelog)

A complete listing of all notable changes are documented in [CHANGELOG.md](https://github.com/wordpress/two-factor/blob/master/CHANGELOG.md).

Credits
-------

[](#credits)

Created [by contributors](https://github.com/WordPress/two-factor/blob/master/CREDITS.md) and released under [GPLv2 or later](LICENSE.md).

Security
--------

[](#security)

Please privately report any potential security issues to the [WordPress HackerOne](https://hackerone.com/wordpress) program.

###  Health Score

57

—

FairBetter than 98% of packages

Maintenance94

Actively maintained with recent releases

Popularity34

Limited adoption so far

Community35

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~80 days

Recently: every ~51 days

Total

35

Last Release

47d ago

PHP version history (3 changes)0.4.2PHP &gt;=5.4

0.5.0PHP &gt;=5.6

0.10.0PHP &gt;=7.2.24|^8

### Community

Maintainers

![](https://www.gravatar.com/avatar/92bfcd3a8c3a21a033a6484d32c25a40b113ec6891f674336081513d5c98ef76?d=identicon)[kasparsd](/maintainers/kasparsd)

![](https://www.gravatar.com/avatar/2a1654c91ec4bad0c45dfdc398320653bfbecafc0f1df6b9e1c22c3fa4e9a60d?d=identicon)[valendesigns](/maintainers/valendesigns)

---

Top Contributors

[![kasparsd](https://avatars.githubusercontent.com/u/169055?v=4)](https://github.com/kasparsd "kasparsd (591 commits)")[![georgestephanis](https://avatars.githubusercontent.com/u/941023?v=4)](https://github.com/georgestephanis "georgestephanis (171 commits)")[![masteradhoc](https://avatars.githubusercontent.com/u/6242098?v=4)](https://github.com/masteradhoc "masteradhoc (142 commits)")[![valendesigns](https://avatars.githubusercontent.com/u/62798?v=4)](https://github.com/valendesigns "valendesigns (80 commits)")[![shield-9](https://avatars.githubusercontent.com/u/3660715?v=4)](https://github.com/shield-9 "shield-9 (72 commits)")[![stevenkword](https://avatars.githubusercontent.com/u/1030598?v=4)](https://github.com/stevenkword "stevenkword (71 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (63 commits)")[![jeffpaul](https://avatars.githubusercontent.com/u/2818133?v=4)](https://github.com/jeffpaul "jeffpaul (47 commits)")[![dd32](https://avatars.githubusercontent.com/u/767313?v=4)](https://github.com/dd32 "dd32 (39 commits)")[![iandunn](https://avatars.githubusercontent.com/u/484068?v=4)](https://github.com/iandunn "iandunn (26 commits)")[![aaroncampbell](https://avatars.githubusercontent.com/u/802412?v=4)](https://github.com/aaroncampbell "aaroncampbell (13 commits)")[![scotchfield](https://avatars.githubusercontent.com/u/5611966?v=4)](https://github.com/scotchfield "scotchfield (12 commits)")[![sjinks](https://avatars.githubusercontent.com/u/7810770?v=4)](https://github.com/sjinks "sjinks (8 commits)")[![joshbetz](https://avatars.githubusercontent.com/u/300429?v=4)](https://github.com/joshbetz "joshbetz (7 commits)")[![ericmann](https://avatars.githubusercontent.com/u/605474?v=4)](https://github.com/ericmann "ericmann (6 commits)")[![christianc1](https://avatars.githubusercontent.com/u/5025568?v=4)](https://github.com/christianc1 "christianc1 (6 commits)")[![StevenDufresne](https://avatars.githubusercontent.com/u/1657336?v=4)](https://github.com/StevenDufresne "StevenDufresne (6 commits)")[![nimesh-xecurify](https://avatars.githubusercontent.com/u/81643855?v=4)](https://github.com/nimesh-xecurify "nimesh-xecurify (6 commits)")[![paragonie-scott](https://avatars.githubusercontent.com/u/11591518?v=4)](https://github.com/paragonie-scott "paragonie-scott (5 commits)")[![swissspidy](https://avatars.githubusercontent.com/u/841956?v=4)](https://github.com/swissspidy "swissspidy (5 commits)")

---

Tags

2faauthenticationtotpwordpresswordpress-plugin

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/georgestephanis-two-factor/health.svg)

```
[![Health](https://phpackages.com/badges/georgestephanis-two-factor/health.svg)](https://phpackages.com/packages/georgestephanis-two-factor)
```

###  Alternatives

[namshi/jose

JSON Object Signing and Encryption library for PHP.

1.8k99.6M101](/packages/namshi-jose)[league/oauth1-client

OAuth 1.0 Client Library

99698.8M106](/packages/league-oauth1-client)[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[gesdinet/jwt-refresh-token-bundle

Implements a refresh token system over Json Web Tokens in Symfony

70516.4M35](/packages/gesdinet-jwt-refresh-token-bundle)[league/oauth2-google

Google OAuth 2.0 Client Provider for The PHP League OAuth2-Client

41721.2M118](/packages/league-oauth2-google)[illuminate/auth

The Illuminate Auth package.

9327.3M1.0k](/packages/illuminate-auth)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
