How can I export chrome passwords?

Solution 1:

There are several solutions listed below, not all of them might work with the latest versions of Chrome. The 'official' Google Chrome/Canary solution is the only one which is currently reliable. Other, potentially outdated solutions include a JS-based one for any OS, an OSX-only solution, and a Linux-only solution (confirmed to work in Chrome 68).

Official Chrome Import/Export buttons

  1. Required: Install latest Google Chrome (if latest stable google chrome does not work for you then try with the Chrome Canary).
  2. Log in with your google account, set up synching, and wait some minutes until all passwords are synched.
  3. Open Chrome Flags by typing chrome://flags in the address bar.
  4. Locate and enable the options Password import and Password export, and restart Chrome Canary.
  5. Now open chrome://settings/passwords where you should see a three dot icon. Clicking it will show the IMPORT and EXPORT options:

Chrome password import-export

Update: in more recent Canary versions instead of the Import/Export buttons there is a single three dot button that contains an Export option.

Javascript-based solution

Note: As of chrome v60+ the method described below does not work anymore.

An OS-independent way to extract the Chrome passwords to a human/spreadsheet readable format is via the Chrome Javascript API, as described on this page:

  1. Open chrome://settings-frame/passwords in your browser (also accessible from Chrome Settings > Show Advanced Settings... > Chrome Passwords).
  2. Open DevTools by right-clicking on the page > Inspect (or Ctr+Shift+I or ⌘+⌥+I).
  3. Click the Console tab.
  4. Click the dropdown that reads top (or <top frame>) and select the password frame: settings (password), as shown in the screeenshot (WARNING: Skipping this step will result in the error PasswordManager is not defined): Chrome Dev Tools Console tab
  5. Next, paste the following code in the Console pane and press Enter (based on code from https://github.com/megmage/chrome-export-passwords which was cleaned up and made to work on Chrome v50+):
var out = [];
var pm = PasswordManager.getInstance();
var model = pm.savedPasswordsList_.dataModel;
console.log(model);
var pl = pm.savedPasswordsList_;
for (var i = 0; i < model.length; i++) {
    PasswordManager.requestShowPassword(i);
}
alert('After you press Ok results should appear in ~5 seconds.\n' +
    "If password fields are empty, try increasing the timeout in the last line," +
    " i.e. set to 10000 for 10 seconds");
setTimeout(
    function () {
        out.push('# Generated by Password Exporter; Export format 1.1; Encrypted: false');
        out.push('"hostname","username","password","formSubmitURL","httpRealm","usernameField","passwordField"');
        for (var i = 0; i < model.length; i++) {
            var record = model.array_[i];
            var user = record.username;
            var item = pl.getListItemByIndex(i);
            var pass = item.querySelector('div.password input').value;
            var proto = record.url.split('://')[0];
            var line = `"${proto}://${record.shownOrigin}", "${user}", "${pass}", "${record.url}", ," "," "," "`;
            out.push(line);
            console.log(line);
        }
        document.body.innerText = out.join('\n');
    }, 5000);

IMPORTANT: This code is for versions of Chrome starting with v50. For earlier versions use the code linked in the original github page.

The passwords should appear on the same page in CSV format. Select and copy the output to a text file with .CSV extension — it can be opened in Excel/Libreoffice Calc. The format is compatible with Firefox Password Exporter, and can be used to import the passwords into Firefox.

Note to OSX users

Recent versions of Google Chrome/Chromium for OSX store passwords in the system keychain, which means that Chrome uses the OSX built-in credential storage mechanism (this is already outdated info).

On OSX you can export the passwords by running this in the terminal:

sudo security dump-keychain -d login.keychain > keychain.txt

And yes, you'll need to click Allow All as many times as you have domains in your login keychain, unless you use an autoclicker script. The link also points to a ruby script for converting the generated password file to CSV. The Ruby script worked for me after I removed the line containing proto.gsub!('htps', 'https');.

Alternatively you can use the native OSX app Keychain Access (type the name in Spotlight).

NOTE: As indicated by oarfish, Chrome stopped using the OSX Keychain as of v.45.

Linux-only solution to export passwords

This solution still works in current versions of chrome (v68)

The recipe below is a Linux-only solution and was taken from this blog post I created a while ago. To export your passwords to a CSV spreadsheet that can be opened in LibreOffice or Excel:

  1. If not already synced in Chrome, then connect to your Google Account in Chrome Settings so that your passwords are synced with the Google cloud storage. Make sure that you have ticked Passwords in Advanced Sync Settings.
  2. Wait for a while until the data is synched, and then close all the Chrome windows.
  3. Start Chrome/Chromium using one of the command line below. This will launch Chrome with a custom profile folder without affecting your current chrome profile.

    ## for Chrome:
    google-chrome --user-data-dir=/tmp/chrome-tmp --password-store=basic
    
    ## for Chromium:
    chromium --user-data-dir=/tmp/chrome-tmp --password-store=basic
    
  4. Setup Google Synching for the new temporary profile and wait until everything is synced from the cloud, i.e. your bookmarks appear, extensions show up, the theme is applied, etc. Verify that the passwords are restored from the Google cloud by looking under Settings → Personal Stuff → Manage Saved Passwords. If they do not appear, then wait a couple of minutes more. Note: To access the stored passwords page open settings and password in the Search box in the top right, the the Manage passwords will appear at the bottom of the page. You can also use the direct link chrome://settings/passwords.

  5. Exit Chrome.

  6. Next, open a terminal and cd to the newly created Chrome profile:

    cd /tmp/chrome-tmp/Default
    
  7. Now, open the Login Data database file using the sqlite3 command line utility and dump the logins table. For this to work, you need to have sqlite3 installed on your system (in most Linuces comes pre-installed or is available in the repos).

    sqlite3 'Login Data'
    
  8. Next, at the SQLite prompt enter the commands below. For help on available commands type .help at the prompt.

    .mode csv               # other options are `html', `tabs', etc.
    .headers on
    .separator ","
    .output chrome_passwords.csv
    select * from logins;
    .exit
    

Now you should have a file named chrome_passwords.csv containing all your Chrome passwords. To open it with LibreOffice, type:

    libreoffice --calc chrome_passwords.csv

The Login Data file can be opened directly with a SQLite GUI app, such sqlitebrowser, sqliteman or sqlitestudio, of which the first two are normally available in Linux repos.

Solution 2:

ChromePass looks like the tool you want. There are options to save out to HTML and plaintext, both of which are very easy to print.