Password reset link not working

Just like a few users reported before, I am also having the issue with password page shows the error ‘‘Password reset link is expired or invalid’’ after resetting a password.

In my case the password has actually been reset successfully despite the error which comes afterwards (so the reset link itself is valid and not expired), however, it does always show the error at the end no matter what.

What I tried so far:

  1. Outgoing emails are set up correctly
  2. Not using any third-party password reset form (e.g. WooCommerce’s form)
  3. Disabled third-party plugins and caching solutions
  4. ReCaptcha is set up as described in the doc. (Testede both with and w/o Recaptcha)
  5. Done all the above and tested in Incognito.


I think the most efficient way of reproducing this is to sign up to my webiste ( and initiate the password reset email with ‘‘Forgot password’’ and you should get this error AFTER you’ve set the new password.

Would you please be able take a look and advise if there’s anything I can do to fix this. Thank you.


Unfortunately, we couldn’t reproduce the issue locally, but everything is working correctly on our end. Please provide more details regarding this issue (e.g., your actions step by step with screenshots, etc.). This will help us to reproduce and resolve the issue faster.

Step by step actions to reproduce ‘‘Password reset link is expired or invalid’’ bug

  1. Become a user on (the site is in Chinese, just click on google page auto translate)
  2. Once registered as an user click on ‘‘forgot password’’ to initiate password reset email
  3. Click on password reset email link to reset password, type in the new password and continue, the error message will appear ‘‘Password reset link is expired or invalid’’ , (PS. Despite the error the password has been reset)
    Screenshot: Awesome Screenshot

These are the steps, please let me know your thoughts, any help would be greatly appreciated. Thank you.


We have tested these steps locally, and everything works correctly. Most likely, the problem is with third-party plugins, a specific server configuration, or caching, since we create these links using WordPress core functions.