Move the door. Keep the key.

Every plugin that hides wp-login.php has the same support thread: “I changed the address and now I cannot get in.” This one is built around the answer to that. The address is on screen and in your inbox, WP-CLI prints it, and one line in wp-config.php switches every guard off without losing a setting.

Three ways back inAddress checked before it is savedLimits by IP and usernameTwo-factor, QR drawn locallyEvery refusal explainedNo external calls

Free forever. No account, no card, no quota. Makes no external requests of any kind.

3

independent ways back into your own site, so a hidden login can never become a locked door.

πŸ“§
The address finds youShown in full on the plugin’s own screen, and e-mailed to your site’s admin address whenever it changes.
⌨️
One commandwp lynbro-login-guard url prints it. wp lynbro-login-guard off puts the page back.
πŸ”“
One line in wp-config.phpdefine( β€˜LYNBRO_LOGIN_GUARD_DISABLE’, true ); β€” every guard off, not one setting lost.

Why Lynbro Login Guard

The 404 people complain about, prevented

The most common failure of a custom login URL is an address something else already owns. Before the address is saved it is checked against your pages, posts, categories and tags β€” and a bad one is refused with the reason, keeping the address that was working.

Nothing else quietly breaks

Unlocking a password-protected post, WordPress recovery mode after a fatal error, admin-ajax, admin-post, cron, WP-CLI and the REST API all keep working. So does the sign-in page for anybody already signed in β€” hiding your own log-out button helps nobody.

Every lockout ends

Repeat offenders wait longer each time, up to a ceiling you set. There is no permanent ban here and there is not going to be one: a plugin that can put you outside your own site forever has stopped being a security tool.

Everything you need β€” included, free

No "Pro" tier, no nag screens. The features other plugins paywall are here from day one.

πŸšͺ
Your own sign-in address

wp-login.php stops showing the form. Visitors who ask for it get your theme’s 404, the front page, or an address you choose.

πŸ“ˆ
Two counters, not one

One keyed on the address catches a machine working through passwords. One keyed on the username catches a spray from a hundred addresses β€” which the first cannot see.

πŸ“±
Two-factor with any app

Standard time-based codes, checked after the password. Ten single-use recovery codes, and an administrator can switch it off for somebody who lost both.

πŸ”
The QR code never leaves

Most plugins post your shared secret to an outside chart service to get a picture back. This one draws the code in PHP, on your server.

🀐
A form that answers nothing

The same message whether the username or the password was wrong. The lost-password form stops confirming addresses. /?author=1 stops handing over a username.

πŸ““
A journal, not a counter

“8 failed sign-ins from this address in 15 minutes, so it is held out for 20” β€” with a button that lets them back in and forgets the failures.

🏒
Your office is never limited

Addresses and CIDR ranges you list are skipped entirely, so one bad afternoon cannot lock out the whole team.

πŸ—ΊοΈ
Countries, honestly

Uses only what your server already knows β€” Cloudflare, a CDN, mod_geoip. No bundled address database, no lookup service, and it says so plainly when there is no signal.

Free here β€” paid almost everywhere else

The two plugins most WordPress sites reach for when the login page is the problem.

FeatureLynbro Login GuardWPS Hide LoginWordfence free
A way back in that is not FTPβœ“β€”βœ“
Login address checked against your content before savingβœ“β€”β€”
Failed sign-ins limited by addressβœ“β€”βœ“
Failed sign-ins limited by username as wellβœ“β€”β€”
Two-factor with an authenticator appβœ“β€”β€”
QR code generated on your own serverβœ“β€”β€”
Every refusal recorded with the reasonβœ“β€”βœ“
Undo a lockout in one clickβœ“β€”βœ“
No external service and no accountβœ“βœ“β€”
Does one job, without a scanner or a firewallβœ“βœ“β€”

Requirements

6.0+WordPresstested up to 7.1
7.4+PHP
GPLv2+License
35Languages

FAQ

What if I forget the new sign-in address?

It is e-mailed to your site’s administration address whenever it changes, and shown in full on the plugin’s own screen. wp lynbro-login-guard url prints it. And adding define( β€˜LYNBRO_LOGIN_GUARD_DISABLE’, true ); to wp-config.php puts the page back at wp-login.php without deleting anything. So does deactivating the plugin.

Does hiding the login page actually make my site safer?

It stops the automated traffic, which is most of it, and that alone quietens your logs and your server. It is not a lock: anybody who learns the address can still knock. The attempt limit and two-factor are what stop somebody who is actually trying β€” and the settings screen says exactly that, rather than selling you obscurity as security.

Will it work behind a page cache or a CDN?

Yes. The sign-in page and the 404 that replaced the old address are both sent with no-store headers and the constants the common page caches look for, so neither is ever served from a cache to the wrong person.

Can it lock me out if I get my own password wrong?

Only briefly, and only if you want it to. Every lockout expires, you can list your own address so it is never limited, and any lockout can be lifted from the journal in a click or with wp lynbro-login-guard unblock.

What if somebody loses their phone and their recovery codes?

Any administrator can switch two-factor off for that account from the user’s profile screen. It is recorded in the journal with the name of whoever did it.

Does it get on with LynBro Anti-Spam?

Yes, and they do not repeat each other. Anti-Spam scores what gets posted to the sign-in form; Login Guard handles the address, the attempt limits and two-factor, and passes Anti-Spam what it knows about failed sign-ins from each address so both logs name the same reason.