Home › How it works
How the conversion works
Every converter here is the same two steps: read the source file into one universal record shape, then write that shape out in the destination's exact layout. What follows is what happens in between, and where data gets stuck.
The universal record
Rather than write a bespoke converter for each of the hundreds of possible routes, every source file is parsed into a single intermediate record: name, username, password, one or more URLs, TOTP secret, notes, folder, favorite flag, and a bag of leftover fields. Serializers then write that record out in the target's format. Adding a manager means writing one parser and one serializer, not fifty converters.
Columns are matched by name, not position. Website Address, website_address
and websiteAddress all normalize to the same key, so a file that doesn't quite match the
documented schema — because the vendor shipped a new app version — still converts.
Two-factor secrets
This is the field converters most often break. Some managers store a bare Base32 secret
(JBSWY3DPEHPK3PXP); others store a full otpauth://totp/… URI carrying the
issuer, account, digit count and period. Apple's Passwords app accepts only the URI form and silently
ignores bare secrets. LastPass and NordPass write bare secrets. Feeding one to the other produces an
entry that looks fine and never generates a working code.
Every secret is parsed into its parts on read and re-emitted in whichever shape the destination wants, reconstructing the issuer and account label from the entry when the source didn't supply one. Verify at least one code before you delete your old vault — this failure is silent until you're locked out.
What can't carry across
When the destination has no field for something, the data goes into the notes field prefixed with a
label (Folder: Work, TOTP secret: …) rather than being dropped. It isn't
functional there, but it's recoverable by hand. Each converter page lists exactly what fell into this
bucket for your specific file before you download it.
File attachments are the exception. No password manager includes attachments in a CSV export — not one. If you have documents, license keys or scanned IDs stored in your vault, download them separately before you close the old account. This is the single most common thing people lose permanently in a migration.
Entry history, password-change timestamps, and shared-vault permissions also don't survive a CSV round
trip. Some managers offer a richer export format — Bitwarden's JSON and 1Password's
.1pux — that keeps custom fields and multiple URLs. Where the source supports it, prefer it.
Why it runs in your browser
A password manager export is the most sensitive file you will ever have on disk: every credential you own, in readable text, with no encryption. Uploading that to anyone's server — including ours — would mean trusting a stranger's TLS termination, logging configuration, error reporting and backup retention with the whole set.
So nothing is uploaded. The file is read with the browser's FileReader, transformed in
memory, and handed back as a Blob download. There is no fetch call in the
converter, and nothing is written to localStorage, sessionStorage or
IndexedDB, so the file can't outlive the tab. You can check this yourself: open your browser's Network
tab while converting, or just turn off Wi-Fi first — it works either way.
If you would rather the file never sat in a networked browser tab in the first place, the offline version is the same converter as a single HTML file you download and open from disk.
Hygiene checklist
- Do the whole migration in one sitting. Don't leave the export sitting in Downloads overnight.
- Convert and import, then verify ten entries against the old vault.
- Delete both CSV files and empty your trash.
- If Downloads syncs to iCloud, OneDrive, Dropbox or Google Drive, confirm the deletion propagated — a synced copy is the usual way one of these files survives.
- Turn on two-factor authentication in the new manager before you close the old account.
- Rotate anything critical. A plaintext file existed on your machine, however briefly.
Managers currently supported
| Manager | Folders | 2FA | Custom fields | Multiple URLs |
|---|---|---|---|---|
| Bitwarden | Yes | Yes | Yes | Yes |
| 1Password | Yes | Yes | No | No |
| LastPass | Yes | Yes | Yes | No |
| Google Chrome | No | No | No | No |
| Dashlane | Yes | Yes | No | No |
| KeePassXC | Yes | Yes | No | No |
| NordPass | Yes | Yes | No | No |
| Proton Pass | Yes | Yes | No | No |
| Keeper | Yes | Yes | Yes | No |
| Mozilla Firefox | No | No | No | No |
| Apple Passwords | No | Yes | No | No |
| RoboForm | Yes | Yes | Yes | No |
| Enpass | Yes | Yes | No | No |
| Microsoft Edge | No | No | No | No |
| Safari | No | Yes | No | No |
Capabilities refer to what each manager's CSV import/export supports, not the app as a whole.