BLACK FRIDAY
Save 59% on PageForge Annual $191/year $485/year
Claim 59% Off →
Two Factor icon
Maintained Tested up to 6.9.9 #348 most installed plugin #4 in 2FA Community

Two Factor

Enable Two-Factor Authentication (2FA) using time-based one-time passwords (TOTP), email, and backup verification codes.

Active installs100K+100K+ tier
Downloads · 30d47.3K▲ +28.1% vs prev. 30d
Rating4.8/5208 reviews
Health score60/100Fair
All-time downloads1.8MSince Aug 2015
Support resolved2 / 450% in last 2 months
RequiresWP 6.8PHP 7.2+
Overall rank#348of 69,475 plugins
Our verdict

Use with caution

Two Factor works, but test it on a staging site before relying on it in 2026. It runs on 100K+ sites, is rated 4.8/5 and was last updated 6 months ago, and scores 60/100 on our health check.

  • Proven at scale on 100K+ active sites
  • Loved by users — 4.8/5 from 208 reviews
  • Momentum — downloads up 28.1% vs the previous 30 days
  • Only tested up to WordPress 6.9 (latest is 7.1)

How does it stack up?

Side-by-side on installs, updates, ratings & support

Daily downloads

6911.4K2.1KJun 28Aug 11Sep 25
Yesterday1,965
Daily average (1y)1,351
Peak day22,236Dec 11, 2025
Last 12 months491.8K

Download spikes usually follow a new release — each site that auto-updates counts as a download.

Rankings

Where Two Factor stands today
Overall popularity #348 of 69,475 WordPress.org plugins Top 0.5%
100K+ installs tier 216 of 334
Next tier: 500K+ installs
2FA #4 of 106 plugins → Authentication #3 of 263 plugins → MFA #1 of 12 plugins → Security #24 of 1,571 plugins → Totp #1 of 9 plugins →

WordPress.org search rankings

Live position in the plugin search, top 100
KeywordPositionCompeting pluginsCategory
2FA #23 408 Best 2FA plugins →
authentication #28 4,250 Best authentication plugins →
MFA #3 46 Best MFA plugins →
security >100 10,000 Best security plugins →
totp #4 142 Best totp plugins →

Version adoption

Share of active sites per release.

  • 0.1670.6%
  • 0.812.6%
  • 0.146.0%
  • Other10.7%

Rating breakdown

★★★★★★★★★★ 4.8 from 208 reviews

  • 5★88.5%
  • 4★7.2%
  • 3★0.00%
  • 2★1.0%
  • 1★3.4%

About Two Factor

From the official readme · v0.16.0

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.

Setup Instructions

Important: Each user must individually configure their two-factor authentication settings.

For Individual Users

  1. Navigate to your profile: Go to “Users” → “Your Profile” in the WordPress admin
  2. Find Two-Factor Options: Scroll down to the “Two-Factor Options” section
  3. Choose your methods: Enable one or more authentication providers (noting a site admin may have hidden one or more so what is available could vary):
    • Authenticator App (TOTP) – Use apps like Google Authenticator, Authy, or 1Password
    • Email Codes – Receive one-time codes via email
    • Backup Codes – Generate one-time backup codes for emergencies
    • Dummy Method – For testing purposes only (requires WP_DEBUG)
  4. Configure each method: Follow the setup instructions for each enabled provider
  5. Set primary method: Choose which method to use as your default authentication
  6. Save changes: Click “Update Profile” to save your settings

For Site Administrators

  • Plugin settings: The plugin provides a settings page under “Settings → Two-Factor” to configure which providers should be disabled site-wide.
  • User management: Administrators can configure 2FA for other users by editing their profiles
  • Security recommendations: Encourage users to enable backup methods to prevent account lockouts

Available Authentication Methods

Authenticator App (TOTP) – Recommended

  • Security: High – Time-based one-time passwords
  • Setup: Scan QR code with authenticator app
  • Compatibility: Works with Google Authenticator, Authy, 1Password, and other TOTP apps
  • Best for: Most users, provides excellent security with good usability

Backup Codes – Recommended

  • Security: Medium – One-time use codes
  • Setup: Generate 10 backup codes for emergency access
  • Compatibility: Works everywhere, no special hardware needed
  • Best for: Emergency access when other methods are unavailable

Email Codes

  • Security: Medium – One-time codes sent via email
  • Setup: Automatic – uses your WordPress email address
  • Compatibility: Works with any email-capable device
  • Best for: Users who prefer email-based authentication

FIDO U2F Security Keys

  • Deprecated and removed due to loss of browser support.

Dummy Method

  • Security: None – Always succeeds
  • Setup: Only available when WP_DEBUG is enabled
  • Purpose: Testing and development only
  • Best for: Developers testing the plugin

Important Notes

HTTPS Requirement

  • All methods work on both HTTP and HTTPS sites

Browser Compatibility

  • TOTP and email methods work on all devices and browsers

Account Recovery

  • Always enable backup codes to prevent being locked out of your account
  • If you lose access to all authentication methods, contact your site administrator

Security Best Practices

  • Use multiple authentication methods when possible
  • Keep backup codes in a secure location
  • Regularly review and update your authentication settings

For more information about two-factor authentication in WordPress, see the WordPress Advanced Administration Security Guide.

For more history, see this post.

Actions & Filters

Here is a list of action and filter hooks provided by the plugin:

  • two_factor_providers filter overrides the available two-factor providers such as email and time-based one-time passwords. Array values are PHP classnames of the two-factor providers.
  • two_factor_providers_for_user filter overrides the available two-factor providers for a specific user. Array values are instances of provider classes and the user object WP_User is available as the second argument.
  • two_factor_enabled_providers_for_user filter overrides the list of two-factor providers enabled for a user. First argument is an array of enabled provider classnames as values, the second argument is the user ID.
  • two_factor_user_authenticated action which receives the logged in WP_User object as the first argument for determining the logged in user right after the authentication workflow.
  • two_factor_user_api_login_enable filter restricts authentication for REST API and XML-RPC to application passwords only. Provides the user ID as the second argument.
  • two_factor_email_token_ttl filter overrides the time interval in seconds that an email token is considered after generation. Accepts the time in seconds as the first argument and the ID of the WP_User object being authenticated.
  • two_factor_email_token_length filter overrides the default 8 character count for email tokens.
  • two_factor_backup_code_length filter overrides the default 8 character count for backup codes. Provides the WP_User of the associated user as the second argument.
  • two_factor_rest_api_can_edit_user filter overrides whether a user’s Two-Factor settings can be edited via the REST API. First argument is the current $can_edit boolean, the second argument is the user ID.
  • two_factor_before_authentication_prompt action which receives the provider object and fires prior to the prompt shown on the authentication input form.
  • two_factor_after_authentication_prompt action which receives the provider object and fires after the prompt shown on the authentication input form.
  • two_factor_after_authentication_input action which receives the provider object and fires after the input shown on the authentication input form (if form contains no input, action fires immediately after two_factor_after_authentication_prompt).
  • two_factor_login_backup_links filters the backup links displayed on the two-factor login form.

Redirect After the Two-Factor Challenge

To redirect users to a specific URL after completing the two-factor challenge, use WordPress Core built-in login_redirect filter. The filter works the same way as in a standard WordPress login flow:

add_filter( 'login_redirect', function( $redirect_to, $requested_redirect_to, $user ) {
    return home_url( '/dashboard/' );
}, 10, 3 );

Frequently asked questions

What PHP and WordPress versions does the Two-Factor plugin support?

This plugin supports the last two major versions of WordPress and the minimum PHP version supported by those WordPress versions.

How can I send feedback or get help with a bug?

The best place to report bugs, feature suggestions, or any other (non-security) feedback is at the Two Factor GitHub issues page. Before submitting a new issue, please search the existing issues to check if someone else has reported the same feedback.

Where can I report security bugs?

The plugin contributors and WordPress community take security bugs seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions. To report a security issue, please visit the WordPress HackerOne program.

What if I lose access to all my authentication methods?

If you have backup codes enabled, you can use one of those to regain access. If you don’t have backup codes or have used them all, you’ll need to contact your site administrator to reset your account. This is why it’s important to always enable backup codes and keep them in a secure location.

Can I use this plugin with WebAuthn?

The plugin previously supported FIDO U2F, which was a predecessor to WebAuthn. There is an open issue to add WebAuthn support here: https://github.com/WordPress/two-factor/pull/427

Is there a recommended way to use passkeys or hardware security keys with Two-Factor?

Yes. For passkeys and hardware security keys, you can install the Two-Factor Provider: WebAuthn plugin: https://wordpress.org/plugins/two-factor-provider-webauthn/ . It integrates directly with Two-Factor and adds WebAuthn-based authentication as an additional two-factor option for users.

Changelog

Bumps WordPress minimum supported version to 6.3 and PHP minimum to 7.2.

0.16.0 – 2026-03-27

  • Breaking Changes: Remove legacy FIDO U2F provider support by #439.
  • New Features: Add a dedicated settings page for plugin configuration in wp-admin by #764.
  • New Features: Add a support links filter so consumers can customize contextual recovery/help links by #615.
  • New Features: Refresh backup codes UI styling and behavior by #804.
  • Bug Fixes: Delete stored TOTP secrets when the TOTP provider is disabled by #802.
  • Bug Fixes: Harden provider handling so login/settings checks do not fail open when expected providers disappear by #586.
  • Bug Fixes: Ensure only configured providers are saved and enabled in user settings by #798.
  • Bug Fixes: Improve settings-page accessibility and fix profile settings link behavior by #828 and #830.
  • Bug Fixes: Resolve PHPCS violations in provider files by #851.
  • Development Updates: Move login styles and provider scripts from inline output to enqueued/external assets by #807 and #814.
  • Development Updates: Improve inline docs and static-analysis compatibility (WPCS/phpstan) by #810, #815, and #817.
  • Development Updates: Improve unit test reliability and integrate CI code coverage reporting by #825, #841, and #842.
  • Development Updates: Update readme docs and modernize CI workflow infrastructure by #835, #837, #843, and #849.
  • Dependency Updates: Bump qs from 6.14.1 to 6.14.2 by #794.
  • Dependency Updates: Bump basic-ftp from 5.0.5 to 5.2.0 by #816.
  • Dependency Updates: Apply automatic lint/format updates and associated Composer package refreshes by #799.

0.15.0 – 2026-02-13

  • Breaking Changes: Trigger two-factor flow only when expected by @kasparsd in #660 and #793.
  • New Features: Include user IP address and contextual warning in two-factor code emails by @todeveni in #728
  • New Features: Optimize email text for TOTP by @masteradhoc in #789
  • New Features: Add “Settings” action link to plugin list for quick access to profile by @hardikRathi in #740
  • New Features: Additional form hooks by @eric-michel in #742
  • New Features: Full RFC6238 Compatibility by @ericmann in #656
  • New Features: Consistent user experience for TOTP setup by @kasparsd in #792
  • Documentation: @since docs by @masteradhoc in #781
  • Documentation: Update user and admin docs, prepare for more screenshots by @jeffpaul in #701
  • Documentation: Add changelog & credits, update release notes by @jeffpaul in #696
  • Documentation: Clear readme.txt by @masteradhoc in #785
  • Documentation: Add date and time information above TOTP setup instructions by @masteradhoc in #772
  • Documentation: Clarify TOTP setup instructions by @masteradhoc in #763
  • Documentation: Update RELEASING.md by @jeffpaul in #787
  • Development Updates: Pause deploys to SVN trunk for merges to master by @kasparsd in #738
  • Development Updates: Fix CI checks for PHP compatability by @kasparsd in #739
  • Development Updates: Fix Playground refs by @kasparsd in #744
  • Development Updates: Persist existing translations when introducing new helper text in emails by @kasparsd in #745
  • Development Updates: Fix missing_direct_file_access_protection by @masteradhoc in #760
  • Development Updates: Fix mismatched_plugin_name by @masteradhoc in #754
  • Development Updates: Introduce Props Bot workflow by @jeffpaul in #749
  • Development Updates: Plugin Check: Fix Missing $domain parameter by @masteradhoc in #753
  • Development Updates: Tests: Update to supported WP version 6.8 by @masteradhoc in #770
  • Development Updates: Fix PHP 8.5 deprecated message by @masteradhoc in #762
  • Development Updates: Exclude 7.2 and 7.3 checks against trunk by @masteradhoc in #769
  • Development Updates: Fix Plugin Check errors: MissingTranslatorsComment & MissingSingularPlaceholder by @masteradhoc in #758
  • Development Updates: Add PHP 8.5 tests for latest and trunk version of WP by @masteradhoc in #771
  • Development Updates: Add phpcs:ignore for falsepositives by @masteradhoc in #777
  • Development Updates: Fix(totp): otpauth link in QR code URL by @sjinks in #784
  • Development Updates: Update deploy.yml by @masteradhoc in #773
  • Development Updates: Update required WordPress Version by @masteradhoc in #765
  • Development Updates: Fix: ensure execution stops after redirects by @sjinks in #786
  • Development Updates: Fix WordPress.Security.EscapeOutput.OutputNotEscaped errors by @masteradhoc in #776
  • Dependency Updates: Bump qs and express by @dependabot[bot] in #746
  • Dependency Updates: Bump lodash from 4.17.21 to 4.17.23 by @dependabot[bot] in #750
  • Dependency Updates: Bump lodash-es from 4.17.21 to 4.17.23 by @dependabot[bot] in #748
  • Dependency Updates: Bump phpunit/phpunit from 8.5.44 to 8.5.52 by @dependabot[bot] in #755
  • Dependency Updates: Bump symfony/process from 5.4.47 to 5.4.51 by @dependabot[bot] in #756
  • Dependency Updates: Bump qs and body-parser by @dependabot[bot] in #782
  • Dependency Updates: Bump webpack from 5.101.3 to 5.105.0 by @dependabot[bot] in #780

0.14.2 – 2025-12-11

  • New Features: Add filter for rest_api_can_edit_user_and_update_two_factor_options by @gutobenn in #689
  • Development Updates: Remove Coveralls tooling and add inline coverage report by @kasparsd in #717
  • Development Updates: Update blueprint path to pull from main branch instead of a deleted f… by @georgestephanis in #719
  • Development Updates: Fix blueprint and wporg asset deploys by @kasparsd in #734
  • Development Updates: Upload release only on tag releases by @kasparsd in #735
  • Development Updates: Bump playwright and @playwright/test by @dependabot[bot] in #721
  • Development Updates: Bump tar-fs from 3.1.0 to 3.1.1 by @dependabot[bot] in #720
  • Development Updates: Bump node-forge from 1.3.1 to 1.3.2 by @dependabot[bot] in #724
  • Development Updates: Bump js-yaml by @dependabot[bot] in #725
  • Development Updates: Mark as tested with the latest WP core version by @kasparsd in #730

0.14.1 – 2025-09-05

  • Don’t URI encode the TOTP url for display. by @dd32 in #711
  • Removed the duplicate Security.md by @slvignesh05 in #712
  • Fixed linting issues by @sudar in #707
  • Update development dependencies and fix failing QR unit test by @kasparsd in #714
  • Trigger checkbox js change event by @gedeminas in #688

0.14.0 – 2025-07-03

  • Features: Enable Application Passwords for REST API and XML-RPC authentication (by default) by @joostdekeijzer in #697 and #698. Previously this required two_factor_user_api_login_enable filter to be set to true which is now the default during application password auth. XML-RPC login is still disabled for regular user passwords.
  • Features: Label recommended methods to simplify the configuration by @kasparsd in #676 and #675
  • Documentation: Add WP.org plugin demo by @kasparsd in #667
  • Documentation: Document supported versions of WP core and PHP by @jeffpaul in #695
  • Documentation: Document the release process by @jeffpaul in #684
  • Tooling: Remove duplicate WP.org screenshots and graphics from SVN trunk by @jeffpaul in #683

0.13.0 – 2025-04-02

  • Add two_factor_providers_for_user filter to limit two-factor providers available to each user by @kasparsd in #669
  • Update automated testing to cover PHP 8.4 and default to PHP 8.3 by @BrookeDot in #665

View the complete changelog details here.

Full changelog on WordPress.org →

Screenshots

Two-factor options under User Profile - Shows the main configuration area where users can enable different authentication methods.
Two-factor options under User Profile - Shows the main configuration area where users can…
Email Code Authentication during WordPress Login - Shows the email verification screen that appears during login.
Email Code Authentication during WordPress Login - Shows the email verification screen…
Authenticator App (TOTP) setup with QR code - Demonstrates the QR code generation and manual key entry for TOTP setup.
Authenticator App (TOTP) setup with QR code - Demonstrates the QR code generation and…
Backup codes generation and management - Shows the backup codes interface for generating and managing emergency access codes.
Backup codes generation and management - Shows the backup codes interface for generating…

For developers

Is this your plugin? Show off the numbers.

Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.

Active installs badge Rating badge Health score badge

Best Two Factor alternatives

All 2FA plugins →
Alternatives
Rank Plugin Active installs Rating Updated Health
1 Wordfence Security – Firewall, Malware Scan, and Login Security Wordfence Security Firewall, Malware Scanner, Two Factor Auth, and Comprehensive Security Features, powered by… by Mark Maunder 5M+ ★★★★★★★★★★ 4.7 (5K) 3 weeks ago 96
2 Really Simple Security – Simple and Performant Security (formerly Really Simple SSL) Really Simple Security Easily improve site security with WordPress Hardening, Two-Factor Authentication (2FA)… by Really Simple Plugins 3M+ ★★★★★★★★★★ 4.9 (8.9K) 2 weeks ago 97
3 Limit Login Attempts Security – Login Security, 2FA, Firewall, Brute Force Prevention Limit Login Attempts Security WordPress login security with brute force protection, Two-factor authentication (2FA/MFA)… by WPChef 1M+ ★★★★★★★★★★ 4.8 (1.5K) 3 days ago 91
5 WP 2FA – Two-factor authentication for WordPress WP 2FA – Two-factor authentication for WordPress Get better WordPress login security; add two-factor authentication (2FA) for all your users… by Melapress 100K+ ★★★★★★★★★★ 4.7 (177) 2 months ago 80
6 WP Hide & Security Enhancer WP Hide & Security Enhancer Protect your website by concealing vulnerable WordPress traces, plugins, themes… by nsp-code 50K+ ★★★★★★★★★★ 4.3 (275) 3 days ago 92
7 Security Plugin, Firewall & Malware Scanner with Auto Removal Security Plugin, Firewall & Malware Scanner with Auto Remov… Protect WordPress from malware, hackers, brute-force attacks & suspicious traffic. Includes… by CleanTalk Inc 40K+ ★★★★★★★★★★ 4.8 (391) 2 weeks ago 93
8 Shield Security – Smart Bot Blocking, Brute-Force Login Protection & File Scanning Shield Security Smart WordPress security that blocks bots automatically, guides you to what matters, and… by Paul 30K+ ★★★★★★★★★★ 4.8 (1K) 5 days ago 94
9 Two Factor Authentication Two Factor Authentication Secure WordPress login with Two Factor Authentication - supports WP, Woo + other login… by David Anderson / Team Updraft 20K+ ★★★★★★★★★★ 4.4 (77) 1 month ago 83
10 Login With Ajax – Fast Logins, 2FA, Redirects Login With Ajax – Fast Logins, 2FA, Redirects Add beautiful login forms with smooth AJAX login/registration effects, 2FA support, custom… by Marcus (aka @msykes) 10K+ ★★★★★★★★★★ 4.6 (166) 4 months ago 62
11 miniOrange 2FA – Two Factor Authentication for WordPress (OTP, SMS, Email, Google Authenticator) miniOrange 2FA Free 2FA plugin for unlimited users with Passkey, Google Authenticator, Email/SMS OTP, Push… by miniOrange 10K+ ★★★★★★★★★★ 4.5 (385) 6 days ago 88

FAQ

Two Factor: quick answers

Straight answers, pulled from live WordPress.org data.

Live data from WordPress.org · checked Sep 26, 2026

Is Two Factor free?

Yes. Two Factor is free to download and use from the official WordPress.org plugin directory.

Is Two Factor safe to use in 2026?

Two Factor works, but test it on a staging site before relying on it in 2026. It runs on 100K+ sites, is rated 4.8/5 and was last updated 6 months ago, and scores 60/100 on our health check.

How many websites use Two Factor?

Two Factor is active on 100K+ WordPress websites and has been downloaded 1,798,381 times since it launched in August 2015. It was downloaded 47,259 times in the last 30 days.

Does Two Factor work with WordPress 7.1?

Two Factor is officially tested up to WordPress 6.9.9, while the latest release is 7.1.2. It may still work, but try it on a staging site first.

What PHP version does Two Factor need?

Two Factor requires PHP 7.2 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.

When was Two Factor last updated?

The latest version, 0.16.0, was released on March 27, 2026 (6 months ago).

Who makes Two Factor?

Two Factor is developed and maintained by WordPress.org.

What are the best alternatives to Two Factor?

The most popular alternatives to Two Factor are Wordfence Security (5M+ installs), Really Simple Security (3M+ installs) and Limit Login Attempts Securi… (1M+ installs).

Powered by PageForge

Want thousands of pages that rank like these? Build them in an afternoon.

This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.

  • CSV, Google Sheets & API data sources
  • AI content, schema & internal links per page
  • Works with Elementor, Gutenberg, Yoast & Rank Math
  • Free on WordPress.org — no credit card
Sarah is here to help!
Hi there! 👋 Need help finding what you're looking for?
Sarah
Sarah
Online & Ready to Help
Hi there! 👋 Need help finding what you're looking for?

We'll use this to continue our conversation

Just now ✓ Verified

Join 500+ SEO Pros Scaling Their Strategy

Get exclusive programmatic SEO tactics, AI content workflows, and the latest PageForge updates delivered straight to your inbox. Stay ahead of the algorithm.

We care about your data in our privacy policy.