Guide · Password Managers

How to Import Passwords into Bitwarden from CSV

You can import passwords into Bitwarden from CSV through the web vault. You'll finish with named login records containing the correct URL, username, and password. Have your source export, Bitwarden account, and a local text editor ready. Plan for a short import followed by a separate field-check and cleanup pass.

A blank CSV grid sheet passing toward a password vault with a violet key.
On this page

Before you import passwords into Bitwarden from CSV #

Use the source application's documented export and Bitwarden's matching importer when available. A custom CSV is a fallback when the source isn't supported or its export needs repair. Don't rename columns and then choose the original provider's format; your selected format must match the file you're uploading.

CSV stores readable credentials. Work on a private computer, avoid online CSV converters, and keep the export out of shared folders and automatic email attachments. If your destination vault already has records, make a protected backup before changing it. The sample below uses fictional credentials and reserved example addresses; it isn't an account anyone can sign in to.

1. Check the source export before editing #

Open a working copy in a local text editor. Inspect the header and two or three representative records, including one with a note or punctuation. Check that the file actually contains passwords; an export with blank password cells can't create them during import.

If the source has an official import route, follow Bitwarden's import instructions for that provider. A source export can have columns with names that look familiar but mean something different. Keep the original export available while preparing the working copy so you can compare fields.

2. Build a small UTF-8 sample in Bitwarden's format #

For a custom file, use the case-sensitive header from Bitwarden's custom-file documentation. Save as UTF-8 CSV. Here is an original two-login example:

Copy the three CSV cells below into a plain-text file in order, placing each cell on its own line. The table scrolls horizontally on a small screen.

LineCSV content
Headerfolder,favorite,type,name,notes,fields,reprompt,login_uri,login_username,login_password,login_totp
Login 1Migration sample,0,login,Example Hosting,Sample only,,0,https://hosting.example.test,[email protected],example-password-only,
Login 2Migration sample,0,login,Example Newsletter,"Sample note, with a comma",,0,https://newsletter.example.test,[email protected],another-example-only,

The quotation marks around the second note keep its comma inside one field. The empty cells are intentional. A row that accidentally shifts the username into the URL column can import without producing the login you wanted.

Use a clear temporary folder name, such as Migration sample, so you can locate these two entries afterward. Don't paste real credentials into an article comment, chat, or support ticket to ask about the format.

3. Select the destination in the web vault #

Sign in to your Bitwarden web vault and open Tools, then Import. In Vault, choose My vault for your personal records. The optional Folder control can place imported items in a folder.

Confirm the destination before proceeding, especially if you also belong to an organization. A personal login shouldn't accidentally become a shared business record. Bitwarden's import page documents these current web-vault controls.

4. Choose the format and import the sample once #

In File format, select Bitwarden (csv) for the custom file above. Use Choose File to select it, then click Import data.

When the import completes, look for the two named sample entries. If you don't see them immediately in another client, let that client sync before deciding the operation failed. Repeating the import creates additional entries; it doesn't update the first pair.

5. Inspect the imported fields #

Open Example Hosting and verify its name, website URL, username, and password. Open Example Newsletter and check that the comma stayed inside the note. The displayed URL should point to the sample website, and the username should contain the sample email address.

For your real migration, inspect records from different source folders and a login with a long note. Check accents or non-English characters if your source uses them. A success message only confirms that the importer accepted data; it doesn't tell you that every source column mapped to the field you intended.

6. Import the real batch and finish the cleanup #

Remove only the fictional sample entries, then prepare the real file using the same checked mapping. Give the imported batch a recognizable folder where your format allows it. Import once, compare the number and names of the resulting records, and inspect important logins before retiring the old manager.

Delete the plaintext working files when you're satisfied, including unwanted copies in Downloads or a synchronized folder. Secure deletion behavior depends on the storage system, so don't treat emptying a recycle bin as a guarantee that no backup copy exists.

Known problems and fixes #

RoboForm logins arrive without passwords or URLs

In a May 2025 report, the desktop export produced a mismatch. The author first succeeded by mapping fields to Bitwarden's CSV format, then found that exporting through RoboForm's browser extension worked with the provider importer. Start with that supported export route, or map a working copy and select Bitwarden (csv). Preserve existing destination records.

Repeated imports leave several copies of a login

A 2025 discussion about duplicate entries explains that importing again can add another copy. Check the imported folder and individual records before retrying. If cleanup is necessary, identify the new batch by folder and record details; don't empty an established vault to solve a small import problem.

Troubleshooting table #

ProblemLikely causeWhat to do
Passwords or URLs are blankWrong source format or column mappingCompare the CSV cells and selected format; repair a copy
Notes split into extra fieldsCommas or line breaks aren't quoted correctlyUse standard CSV quoting and import a small sample
Accented text looks wrongFile encoding changedSave the working file as UTF-8
Extra copies appearImport was repeated or source already contained duplicatesInspect the imported batch and remove confirmed extras
Cards or identities are missingCustom CSV only covers logins and secure notesUse an appropriate JSON or supported provider format
Attachments are absentAttachments aren't included in the ordinary data importTransfer them separately following the source instructions

Variations #

Import a supported browser export

Choose that browser in File format and use its documented export. You don't need to reformat a supported file just to make it look like the sample. If you're comparing destination providers first, read Bitwarden vs Proton Pass.

Move more than website logins

Check Bitwarden's import FAQs for item types and attachments. A basic login CSV can't preserve everything stored by every manager. Keep a separate checklist for cards, identities, attached documents, and passkeys before deleting the source account.

Choose a local database instead

KeePassXC and KeePass offer file-based vaults. Their import and sync arrangements differ, so use their own documentation if direct control of a database file is your goal.

Completion checklist #

  • The chosen importer matches the working file's format.
  • Names, URLs, usernames, passwords, and quoted notes appear in the correct fields.
  • Important records have been inspected after import.
  • Additional item types have a separate migration plan.
  • Duplicate cleanup affects only confirmed unwanted entries.
  • Plaintext working exports have been removed from places you don't intend to retain them.

Next steps #

Open the Bitwarden listing for its official website, compare the eight free password managers, or consider Bitwarden alternatives if the vault workflow isn't right for your devices.

C
Chris McClureCo-founder & Editor, WebIndexly

Chris McClure is a tech blogger and co-founder of WebIndexly, with a strong interest in SEO, web architecture, user experience and the technologies that shape the modern web. He focuses on making complex technical topics easier to understand and more useful for developers, creators and businesses…