WordPress Password Reset Not Working: Email Never Arrives (2026)
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.
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
- WordPress not sending emails - the SMTP fix that makes reset mail reliable
- WordPress login redirect loop - if login accepts then bounces you back
- "You are not allowed to access this page" - when you're in but locked out of admin screens
- WordPress hacked recovery - if an unknown admin user appeared in wp_users
- Bluehost review 2026
- WordPress Changes Not Saving: Updates Vanish After Publish (2026)
- WP-Cron Not Working: Scheduled Tasks Never Run (2026)
What are you building?
Tell us about your project so we can match the perfect hosting plan.
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)
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.
Related Articles
Bluehost vs Competitors: The Technical Deep Dive
We ran 47 benchmarks over 90 days. Here's the raw data on why Bluehost dominates.
Fix ERR_TOO_MANY_REDIRECTS in WordPress (2026): The 6 Real Causes
ERR_TOO_MANY_REDIRECTS means an infinite redirect loop. Match your Site URLs, fix Cloudflare SSL mode, reset .htaccess, kill plugin conflicts - step-by-step with code.
WordPress 403 Forbidden Error: 7 Fixes That Actually Work (2026)
403 means the server understood you but refuses to serve the page. Fix file permissions (755/644), regenerate .htaccess, kill security plugin blocks - in the right order.
Fix 502 Bad Gateway in WordPress (2026): Diagnose First, Then Fix
502 means the gateway got a bad response from your server - usually PHP timeouts, CDN issues, or overload. A 9-step diagnostic workflow from browser checks to server logs.
Fatal Error: Maximum Execution Time Exceeded - 6 Fixes (2026)
max_execution_time kills slow updates at 30-60s. Fix the culprit plugin/theme first, then raise the limit via wp-config, .htaccess or php.ini - with exact code.
HTTP Error Uploading Images in WordPress: 9 Fixes Ranked (2026)
The vague 'HTTP error' on image upload usually means memory limits or Imagick. Fix order: rename the file, bump memory, force GD library, check permissions - with code.