Why Your Password Manager Couldn't Find Our Login Fields
Roboform, LastPass, 1Password -- they all autofilled the email but left the password blank. Three missing HTML attributes were the cause.
Users reported that password managers only autofilled the email on Democracy.cc's login -- the password field stayed blank. I dug into the forms and found three problems.
What Was Wrong
Non-standard field IDs. The login fields had IDs like login_email_standalone and login_password_modal. Password managers look for standard patterns like email, username, or password.
Missing name attributes. The Vue.js modal login forms had no name attributes at all. Roboform in particular relies heavily on name to identify fields.
Inconsistent autocomplete. The email field used autocomplete="username" in some places -- technically correct for login forms, but not as universally recognized as autocomplete="email".
The Fix
<!-- Before -->
<input type="email" id="login_email_standalone" autocomplete="username" />
<input type="password" id="login_password_modal" />
<!-- After -->
<input type="email" name="email" id="email" autocomplete="email" />
<input type="password" name="password" id="password" autocomplete="current-password" />
Three changes across all auth forms (main login, tracking modal, registration):
- Added
name="email"andname="password" - Standardized IDs to simple values
- Set proper
autocompleteattributes:emailfor email,current-passwordfor login,new-passwordfor registration
The Lesson
Password managers aren't magic. They scan for standard HTML attributes. If your framework generates non-standard field names (common with Vue, React, and Alpine.js modal forms), test with an actual password manager -- browser dev tools can't simulate how they scan pages.
Built while working on Democracy.cc.
Back to danielships ->