Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Welcome to the KDBX compendium! This book is intended as an overview of the KeePass KDBX file format for developers implementing support for KeePass databases in their applications.

Notable KDBX format implementations

This book aims to compare different implementations of the KDBX file format, with direct references to the source code of each implementation. This is toidentify gotchas that developers might encounter.

Example: For Argon2, some implementationsKP, KP2A, STBX default to 2 lanes of parallelism, while some default to 4KPXC, KPDX, KPIU, . Libraries generally don’t have a default, and require the caller to specify the number of lanes.

GUI applications

ApplicationShortcodePlatformsLanguageNotes
KeePassKPWindows, (Linux, MacOS)C#No public git repo, will use unofficial mirror
KeePassXCKPXCWindows, Linux, MacOSC++
Keepass2AndroidKP2AAndroidJava
KeePassDXKPDXAndroidKotlin
KeePassiumKPIUiOSSwift
StrongboxSTBXiOS, macOSObjective-C, Swift

Libraries

LibraryShortcodeLanguageRead supportWrite supportNotes
pykeepassPYKPPythonKDBX3, KDBX4?
keepass-rsKPRSRustKDB, KDBX3, KDBX4, KDBX4.1experimental, KDBX4.1maintained by the author of this book
kdbxwebKDBWTypeScriptKDBX3, KDBX4, KDBX4.1KDBX3, KDBX4seems unmaintained, last commit Dec 2024

Other resources

Conventions in this Document

  • All byte offsets are zero-based, so the first byte of a structure is at offset 0.
  • All byte ranges are non-inclusive, so the byte range 0-4 includes bytes at offsets 0, 1, 2, and 3, but not the byte at offset 4.
  • All lengths are in bytes, so a length of 4 means that the value occupies 4 bytes.
  • All hexadecimal numbers are prefixed with 0x, so the number 255 will be represented as 0xFF.