Member-only story
Users will forget their passwords.
While there’s no way to prevent that from happening, we, as designers, can control what comes after. It’s in our power to make the password reset as fast and smooth as possible. Moreover, it’s in our power to turn the process into an enjoyable one.
However, resetting a password isn’t the same as posting a photo, booking a restaurant, or shopping online. It’s not a core feature of any application and not an exciting one either, so the proper implementation of it can easily get overlooked or ignored.
And even though it’s obvious that resetting a password should be fast and smooth, why bother making it enjoyable?
Well, it’s safe to assume that a user who lands on the Recover Password page doesn’t want to be there in the first place. There’s a chance they are slightly annoyed, if not aggravated.
Of course, we can just follow the best practices and make sure the user creates their new password without any further troubles. However, why not sprinkle a bit of fun and brighten up their mood meanwhile?
I had never thought that password recovery could be even close to enjoyable, until I had to reset mine for npm. Their process is the best one I’ve ever seen and should serve as a reference for anyone who’s designing a user flow for resetting a password. Let’s take a look at it:
Step 1: Recover Password page

The first step is the Recover Password page, which comes up as the first search result when you query “npm forgot password” (or anything similar).
It has everything it should have:
- Clear title — Recover Password
- Specific action text on the button — email me a recovery link (instead of ambiguous submit, send, etc.)
- Multiple options to recover password — either using email or username
- Lastly, there’s a nice…