BLACK FRIDAY
Save 59% on PageForge Annual $191/year $485/year
Claim 59% Off →
Restrict Usernames icon
Possibly abandoned Tested up to 4.9.33 #35 in registration

Restrict Usernames

This plugin allows you to restrict the usernames that new users may use when registering for your site.

Active installs200+100+ tier
Downloads · 30d98▲ +19.5% vs prev. 30d
Rating3.6/514 reviews
Health score32/100At risk
All-time downloads24.8KSince Jul 2009
Support resolved—No recent threads
RequiresWP 4.7PHP any
Downloads · 7d20▼ -44.4% week over week
Our verdict

Consider an alternative

Restrict Usernames shows warning signs in 2026 — compare the alternatives below before installing. It runs on 200+ sites, is rated 3.6/5 and was last updated 8 years ago, and scores 32/100 on our health check.

  • Small user base (200+ active installs)
  • No update in 8 years
  • Only tested up to WordPress 4.9 (latest is 7.1)

How does it stack up?

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

Daily downloads

257Jun 29Aug 12Sep 26
Yesterday5
Daily average (1y)2
Peak day10Apr 12, 2026
Last 12 months749

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

Rankings

Where Restrict Usernames stands today

WordPress.org search rankings

Live position in the plugin search, top 100
KeywordPositionCompeting pluginsCategory
registration >100 5,509 Best registration plugins →
restrictions >100 2,604 Best restrictions plugins →
signup >100 1,956 Best signup plugins →
username >100 3,476 Best username plugins →
users >100 10,000 Best users plugins →

Version adoption

Share of active sites per release.

  • 3.795.7%
  • 3.54.3%

Rating breakdown

★★★★★★★★★★ 3.6 from 14 reviews

  • 5★64.3%
  • 4★0.00%
  • 3★0.00%
  • 2★0.00%
  • 1★35.7%

About Restrict Usernames

From the official readme · v3.7

Description

This plugin allows you to restrict the usernames that new users may use when registering for your site.

If open registration is enabled for your site (via Settings -> General -> Membership (“Anyone can register”)), WordPress allows visitors to register for an account on your blog. By default, any username they choose is allowed so long as it isn’t an already existing account and it doesn’t include invalid (i.e. non-alphanumeric) characters.

Possible reasons for wanting to restrict certain usernames:

  • Prevent usernames that contain foul, offensive, or otherwise undesired words
  • Prevent squatting on usernames that you may want to use in the future (but don’t want to actually create the account for just yet) (essentially placing a hold on the username)
  • Prevent official-sounding usernames from being used (i.e. help, support, pr, info, sales)
  • Prevent official username syntax from being used (i.e. if all of your administrators use a prefix to identify themselves, you don’t want a visitor to use that prefix)
  • Prevent spaces from being used in a username (which WordPress allows by default)
  • Require that a username starts with, ends with, or contain one of a set of substrings (i.e. “support_”, “admin_”)
  • Require a minimum number of characters for usernames
  • Limit usernames to a maximum number of characters

When attempting to register with a restricted username, the visitor will be given an error notice that says:
ERROR: This username is invalid. Please enter a valid username.

NOTE: This plugin does not put any restrictions on usernames that the admin chooses for users when creating user accounts from within the WordPress admin. This only restricts the names that users choose themselves when registering for your site.

SPECIAL NOTE: Many membership plugins implement their own user registration handling that often bypasses checks (and hooks) performed by WordPress. As such, it is unlikely that the plugin is compatible with them without special plugin-specific amendments.

Compatible with Multisite and BuddyPress as well.

Links: Plugin Homepage | Plugin Directory Page | GitHub | Author Homepage

Hooks

The plugin exposes one filter for hooking. Typically, customizations utilizing this hook would be put into your active theme’s functions.php file, or used by another plugin.

c2c_restrict_usernames-validate (filter)

The ‘c2c_restrict_usernames-validate’ hook allows you to add your own customized checks for the username being registered. You can add additional restrictions or override the assessment performed by the plugin.

Arguments:

  • $valid (boolean): The assessment by the plugin about the validity of the username based on settings. True means username can be used.
  • $username (string): The username being registered.
  • $settings (array): The plugin’s settings.

Example:

/**
 * Add custom checks on usernames.
 *
 * Specifically, prevent use of usernames ending in numbers.
 *
 * @param bool   $valid    True if the username is valid, false if not.
 * @param string $username The username.
 * @param array  $options  Plugin options.
 */
function my_restrict_usernames_check( $valid, $username, $options ) {
    // Only do additional checking if the plugin has already performed its
    // checks and deemed the username valid.
    if ( $valid ) {
        // Don't allow usernames to end in numbers.
        if ( preg_match( '/[0-9]+$/', $username ) ) {
            $valid = false;
        }
    }
    return $valid;
}
add_filter( 'c2c_restrict_usernames-validate', 'my_restrict_usernames_check', 10, 3 );

Installation

  1. Whether installing or updating, whether this plugin or any other, it is always advisable to back-up your data before starting
  2. Install via the built-in WordPress plugin installer. Or download and unzip restrict-usernames.zip inside the plugins directory for your site (typically wp-content/plugins/)
  3. Activate the plugin through the ‘Plugins’ admin menu in WordPress. In Multisite, Network Activate the plugin.
  4. Go to the ‘Users’ -> ‘Name Restrictions’ admin settings page (which you can also get to via the ‘Settings’ link next to the plugin on the ‘Manage Plugins’ page) and specify username restrictions. On a Multisite install, go to ‘My Sites’ -> ‘Network Admin’ -> ‘Users’ -> ‘Name Restrictions’.

Changelog

Recommended minor update: bugfix for BuddyPress & Multisite; bugfix to make restricted usernames and conditions case-insensitive; updated plugin framework to v048; compatibility is now WP 4.7-4.9; updated copyright date (2018); added README.md; and more.

3.7 (2018-06-19)

Highlights:

  • This release fixes a few bugs (notably one preventing username restrictions from working well for BuddyPress and Multisite) and makes numerous behind-the-scenes changes.

Details:

  • Fix: Correct inverted conditional logic that prevented restrictions from being enforced for BuddyPress and Multisite
  • Fix: Make restricted usernames and partial usernames case insensitive for comparisons
  • Fix: Make username testing input field responsive
  • Change: Update plugin framework to 048
    • 048:
    • When resetting options, delete the option rather than setting it with default values
    • Prevent double “Settings reset” admin notice upon settings reset
    • 047:
    • Don’t save default setting values to database on install
    • Change “Cheatin’, huh?” error messages to “Something went wrong.”, consistent with WP core
    • Note compatibility through WP 4.9+
    • Drop compatibility with version of WP older than 4.7
    • 046:
    • Fix reset_options() to reference instance variable $options
    • Note compatibility through WP 4.7+
    • Update copyright date (2017)
    • 045:
    • Ensure reset_options() resets values saved in the database
    • 044:
    • Add reset_caches() to clear caches and memoized data. Use it in reset_options() and verify_config().
    • Add verify_options() with logic extracted from verify_config() for initializing default option attributes.
    • Add add_option() to add a new option to the plugin’s configuration.
    • Add filter ‘sanitized_option_names’ to allow modifying the list of whitelisted option names.
    • Change: Refactor get_option_names().
    • 043:
    • Disregard invalid lines supplied as part of hash option value.
  • New: Add README.md
  • Change: Store setting name in constant
  • Change: Make untranslated strings translatable
  • Change: Unit tests:
    • Add tests for bp_members_validate_user_signup()
    • Improve test initialization
    • Improve tests for settings handling
    • Default WP_TESTS_DIR to /tmp/wordpress-tests-lib rather than erroring out if not defined via environment variable
    • Enable more error output for unit tests
  • Change: Minor code reformatting (spacing)
  • Change: Add GitHub link to readme
  • Change: Note compatibility through WP 4.9+
  • Change: Drop compatibility with versions of WP older than 4.7
  • Change: Rename readme.txt section from ‘Filters’ to ‘Hooks’
  • Change: Modify formatting of hook name in readme to prevent being uppercased when shown in the Plugin Directory
  • Change: Update copyright date (2018)
  • Change: Update installation instruction to prefer built-in installer over .zip file

3.6 (2016-05-03)

Highlights:

  • This release largely consists of minor behind-the-scenes changes.

Details:

  • Change: Update plugin framework to 042:
    • Change class name to c2c_RestrictUsernames_Plugin_042 to be plugin-specific.
    • Set textdomain using a string instead of a variable.
    • Don’t load textdomain from file.
    • Change admin page header from ‘h2’ to ‘h1’ tag.
    • Add c2c_plugin_version().
    • Formatting improvements to inline docs.
  • Change: Add support for language packs:
    • Set textdomain using a string instead of a variable.
    • Remove .pot file and /lang subdirectory.
  • Change: Amend description for max_length setting to indicate WP already enforces a max length of 60, which the plugin cannot increase.
  • New: Hook ‘illegal_user_logins’ filter to add in usernames explicitly prohibited by the plugin.
  • New: Add special note and FAQ item to readme indicating the likely lack of compatibility with membership plugins that have custom registration handling.
  • Change: Declare class as final.
  • Change: Explicitly declare methods in unit tests as public or protected.
  • Change: Minor code reformatting.
  • Change: Minor improvements to inline docs and test docs.
  • Change: Prevent web invocation of unit test bootstrap.php.
  • New: Add LICENSE file.
  • New: Create empty index.php to prevent files from being listed if web server has enabled directory listings.
  • Change: Note compatibility through WP 4.5+.
  • Change: Remove support for versions of WordPress older than 4.1.
  • Change: Update copyright date (2016).

3.5.1 (2015-04-16)

  • Bugfix: compatibility fix for versions of WP older than 4.1; $error->remove() was introduced in 4.1

3.5 (2015-02-20)

  • Fix error message handling to override misleading default WP registration error message
  • Update plugin framework to 039
  • Add more unit tests
  • Explicitly declare activation() and uninstall() static
  • Reformat plugin header
  • Change documentation links to wp.org to be https
  • Minor documentation spacing changes throughout
  • Note compatibility through WP 4.1+
  • Update copyright date (2015)
  • Add plugin icon
  • Add Russian translation. props Kolya Korobochkin
  • Regenerate .pot

3.4.1 (2014-01-15)

  • Bugfix to prevent plugin from causing admin error/notice messages to appear twice

3.4 (2014-01-14)

  • Fix to display settings page update messages and username test tool results
  • Add setting to optionally enforce minimum length for usernames
  • Add setting to optionally enforce maximum length for usernames
  • Improve display of username test tool results:
    • Display as list
    • Color-code results as green or red
    • Make ‘valid’ and ‘invalid’ translatable
  • Add is_buddypress() to determine if BuddyPress’s user validation checks are being used
  • Move descriptive text from top of settings page into Help panel under new ‘About’ tab
  • Add unit tests
  • Update plugin framework to 037
  • Better singleton implementation:
    • Add get_instance() static method for returning/creating singleton instance
    • Make static variable ‘instance’ private
    • Make constructor protected
    • Make class final
    • Additional related changes in plugin framework (protected constructor, erroring __clone() and __wakeup())
  • Add checks to prevent execution of code if file is directly accessed
  • Use explicit path for require_once()
  • Discontinue use of PHP4-style constructor
  • Discontinue use of explicit pass-by-reference for objects
  • Minor documentation improvements
  • Minor code reformatting (spacing, bracing)
  • Note compatibility through WP 3.8+
  • Drop compatibility with version of WP older than 3.6
  • Update copyright date (2014)
  • Regenerate .pot
  • Change donate link
  • Update screenshot
  • Add banner

Full changelog on WordPress.org →

Screenshots

A screenshot of the plugin's admin settings page.
A screenshot of the plugin's admin settings page.

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 Restrict Usernames alternatives

All registration plugins →
Alternatives
Rank Plugin Active installs Rating Updated Health
1 WP-Members Membership Plugin WP-Members Membership Plugin The original WordPress membership plugin with content restriction, user login, custom… by Chad Butler 50K+ ★★★★★★★★★★ 4.6 (273) 3 weeks ago 89
2 User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor User Profile Builder Powerful user profile plugin to create front-end user registration forms, login & user… by Cozmoslabs 40K+ ★★★★★★★★★★ 4.7 (736) 4 days ago 94
3 WP Events Manager WP Events Manager The all in one Events Manager for WordPress: create and manage events, sell event tickets… by ThimPress 30K+ ★★★★★★★★★★ 2.7 (13) 1 month ago 62
4 New User Approve New User Approve WordPress user approval plugin to moderate registrations. Approve or deny real users and… by Saad Iqbal 20K+ ★★★★★★★★★★ 4.3 (131) 6 days ago 76
5 UsersWP – Front-end login form, User Registration, User Profile & Members Directory plugin for WP UsersWP Light weight Front-end login form, User Registration, User Profile and Members Directory… by Stiofan 20K+ ★★★★★★★★★★ 4.7 (183) 2 weeks ago 89
6 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
7 Allow Multiple Accounts Allow Multiple Accounts Allow multiple user accounts to be created, registered, and updated having the same email… by Scott Reilly 9K+ ★★★★★★★★★★ 5 (22) 9 years ago 46
8 RegistrationMagic – Custom Registration Forms, User Registration, Payment, and User Login RegistrationMagic Create user registration forms, build advanced registration forms, accept payments, track… by Metagauss 7K+ ★★★★★★★★★★ 4.5 (459) 4 days ago 91
9 Clean Login Clean Login Custom frontend login, registration, user profile and password reset forms via shortcodes —… by Alberto Hornero 5K+ ★★★★★★★★★★ 4.7 (143) 2 weeks ago 80
10 AJAX Login and Registration modal popup + inline form AJAX Login and Registration modal popup + inline form Easy to integrate modal with Login and Registration features. by Max K 3K+ ★★★★★★★★★★ 4.7 (120) 11 months ago 59

FAQ

Restrict Usernames: quick answers

Straight answers, pulled from live WordPress.org data.

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

Is Restrict Usernames free?

Yes. Restrict Usernames is free to download and use from the official WordPress.org plugin directory.

Is Restrict Usernames safe to use in 2026?

Restrict Usernames shows warning signs in 2026 — compare the alternatives below before installing. It runs on 200+ sites, is rated 3.6/5 and was last updated 8 years ago, and scores 32/100 on our health check.

How many websites use Restrict Usernames?

Restrict Usernames is active on 200+ WordPress websites and has been downloaded 24,760 times since it launched in July 2009. It was downloaded 98 times in the last 30 days.

Does Restrict Usernames work with WordPress 7.1?

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

When was Restrict Usernames last updated?

The latest version, 3.7, was released on June 21, 2018 (8 years ago).

Who makes Restrict Usernames?

Restrict Usernames is developed and maintained by Scott Reilly.

What are the best alternatives to Restrict Usernames?

The most popular alternatives to Restrict Usernames are WP-Members Membership Plugin (50K+ installs), User Profile Builder (40K+ installs) and WP Events Manager (30K+ 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.