Technical

WordPress Password Reset Not Working: Email Never Arrives (2026)

By Daniel Reyes•October 31, 2026•3 min read

Disclosure: some links on this page are affiliate links. We may earn a commission at no extra cost to you. How we test and rate hosts.

Our top pick for most WordPress sites
Bluehost: free domain, free SSL, 24/7 support, 30-day money-back guarantee.
Check Bluehost Deal →

You click "Lost your password," enter your email, and... nothing. No reset email, no error, just silence. The reset mechanism isn't broken - WordPress's email delivery is. And even if the email never works again, you have three direct ways back in without it.

Why the Email Never Arrives

WordPress uses PHP mail(), which sends unauthenticated mail that spam filters reject or quarantine. Some shared hosts disable it outright. The email may exist - check spam/junk first, including a search for "wordpress@" - but don't count on it. The permanent fix is SMTP, covered in the emails not sending guide. Right now you need to get in, so let's do that first.

Method 1: phpMyAdmin (Works Everywhere)

Every host with a control panel gives you phpMyAdmin. Open it, select your WordPress database, and open the wp_users table (prefix may differ - check wp-config.php $table_prefix). Click Edit on your admin user, then:

  • In the user_pass row, type your new password in plain text
  • In that row's function dropdown, select MD5
  • Click Go to save - WordPress re-hashes it properly on your next login

Log in at /wp-admin/ with the new password. Done.

Method 2: WP-CLI (Fastest If You Have SSH)

wp user update admin --user_pass=NewSecurePass123!

Run from the WordPress root. Replace "admin" with your actual username - list users with wp user list if unsure.

Method 3: Emergency Reset Script

If phpMyAdmin isn't available, drop this as emergency.php in your site root, load it once, then delete it immediately:

require('wp-load.php'); $u = get_user_by('login','admin'); wp_set_password('NewPass123!', $u->ID); echo 'done';

If the Reset Link Says "Expired"

Links die when a newer reset request supersedes them or when a cache serves a stale page. Request the link once, open it right away in the same browser, and bypass any caching plugin on the reset URL. Still dead? Skip the email entirely with phpMyAdmin.

Keep Reading

Find Your Perfect Hosting Plan

What are you building?

Tell us about your project so we can match the perfect hosting plan.

Question 1 of 425% complete
Interactive Tool

Hosting Cost Calculator

See exactly how much you'll spend on hosting over time. Compare Bluehost vs popular alternatives and discover your potential savings.

Used to calculate transaction fees (Shopify charges 2% on sales)

Shopify Basic (3yr)
$1,044
Bluehost (3yr)
$444
You Save
$600
58% less than Shopify Basic

Frequently Asked Questions

Why doesn't the WordPress password reset email arrive?

WordPress sends mail via PHP's mail() function, which most shared hosts either block or send without authentication - so the message lands in spam or gets rejected silently. It's not that reset is broken; it's that WordPress email is unreliable by default. Check spam first, then fix email delivery with SMTP, or bypass the email entirely via phpMyAdmin or WP-CLI.

How do I reset the password directly in the database?

Open phpMyAdmin, find your database, open wp_users, click Edit on your admin row, type a new password into user_pass, select MD5 in the function dropdown next to it, and save. WordPress re-hashes it on next login - MD5 is only used to write the initial value.

The reset link says 'invalid or expired' - what now?

Reset links die if another reset was requested after it, if a caching layer served a stale page, or if your browser stripped the key. Request a fresh link and open it immediately in the same browser. If it still fails, go straight to the phpMyAdmin method.

Can WP-CLI reset the password?

Yes: wp user update USERNAME --user_pass=NEWPASSWORD - run from your site's root over SSH. It's the fastest method if your host gives you WP-CLI.

How do I stop this from happening again?

Install an SMTP plugin (FluentSMTP, WP Mail SMTP) and connect a real sending service - your host's SMTP, Gmail, or a transactional provider. Once WordPress mail goes through an authenticated channel, reset emails arrive reliably. The emails-not-sending guide covers the full setup.

Ready to launch?

Get Bluehost from $3.99/month with a free domain, free SSL, and 30-day money-back guarantee.

Start for $3.99 →

Related Articles