Skip to content

Instantly share code, notes, and snippets.

@insin
Last active September 30, 2026 09:36
Show Gist options
  • Select an option

  • Save insin/dcf8a8c4acf27a8b1ffb478bcc7f4548 to your computer and use it in GitHub Desktop.

Select an option

Save insin/dcf8a8c4acf27a8b1ffb478bcc7f4548 to your computer and use it in GitHub Desktop.
Mass update Firefox passwords (run in Tools → Web Developer → Browser Console) - https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox#Enabling_the_Browser_Toolbox
function updatePasswords() {
let oldPassword = prompt('Old password:')
if (!oldPassword) return
let loginManager = Components.classes['@mozilla.org/login-manager;1']
.getService(Components.interfaces.nsILoginManager)
let matchingLogins = loginManager.getAllLogins().filter(l => l.password === oldPassword)
let matchCount = matchingLogins.length
if (matchCount === 0) return alert('No matching logins found')
let newPassword = prompt('New password:')
if (!newPassword) return
let confirmNewPassword = prompt('Confirm new password:')
if (!confirmNewPassword) return
if (newPassword !== confirmNewPassword) return alert('New passwords do not match')
if (!confirm(`Are you sure you want to update ${matchCount} password${matchCount === 1 ? '' : 's'}?`)) return
// Borrowed from mass_password_reset-1.05-tb+fx/content/oldpassword.xul
let nsLoginInfo = new Components.Constructor('@mozilla.org/login-manager/loginInfo;1',
Components.interfaces.nsILoginInfo,
'init')
for (login of matchingLogins) {
let updatedLogin = new nsLoginInfo(
login.hostname,
login.formSubmitURL,
login.httpRealm,
login.username,
newPassword,
login.usernameField,
login.passwordField
)
loginManager.modifyLogin(login, updatedLogin)
}
alert(`${matchCount} password${matchCount === 1 ? ' has' : 's have'} been updated`)
}
@SonicGold

Copy link
Copy Markdown

At line 33, function modifyLogin needs to be modified to modifyLoginAsync to operate properly after recent Firefox updates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment