Blogs Engineering

Making Passman's KeePass CSV Importer Understand KeePassXC

Engelstalig artikel. Passman's KeePass CSV importer only knew KeePass 1/2 column names. The merged fix adds KeePassXC headers, skips empty rows and handles group paths.

JavaScriptnextcloud/passmanKeePassXCCSV importpassword managers

A three-year-old import bug, fixed and then extended by the maintainer.

Kort antwoord

Importing a KeePassXC CSV into Passman with the "KeePass csv" importer added no credentials. The importer only recognized KeePass 1/2 column names. The fix maps KeePassXC headers (Group, Title, Username, Password, URL, Notes) alongside the legacy ones, skips rows without a title, splits group paths on both / and \, and ignores unparseable expiry dates. A maintainer then added support for more OTP formats and better label extraction. It was merged as PR #876 and closed issue #762.

The problem

Issue #762, opened in March 2023, walked through a KeePassXC export of four accounts in nested groups. Passman reported "Read progress 3/4" and then said "It does not seem that you have any passwords."

The fix

var getLabel = function (row) {
    return row.account || row.title || null;
};
...
var parsed_csv = PassmanImporter.readCsv(file_data).filter(function (row) {
    return getLabel(row) !== null;
});
...
_credential.username = row.login_name || row.username || null;
_credential.url = row.web_site || row.url || null;
_credential.description = row.comments || row.notes || null;

Group paths from either group or group_tree are split on / or \ and turned into de-duplicated tags.

By the numbers

  • Repository: nextcloud/passman, 829 stars (Nov 3, 2026), JavaScript, AGPL-3.0
  • Files changed: 1
  • Lines: +110 / -21 (the PR author's commit was +48 / -22; the maintainer's commit was +64 / -1)
  • Commits: 2 (1 from the PR author, 1 from the maintainer)
  • Opened: Aug 21, 2026. Merged: Aug 24, 2026. Time to merge: 3 days, 3 hours
  • Review: approved and merged by the maintainer

How the review went

The maintainer added a commit, "enhance KeePass CSV importer to support additional OTP formats and improve label extraction", then approved and merged the PR.

Veelgestelde vragen

Do KeePass 1/2 exports still import?

Yes. The legacy column names are still read first.

Where can I read more?

See the pull request and the original issue.

Het doel

The people most likely to try a password manager are the ones migrating from another one. A working import path is the front door.

Voer de loop uit

Zet productiesignalen om in gereviewde fixes.

Start een gratis proefperiode en zie hoe Prilog echte incidenten koppelt aan pull requests op codeniveau.