What is the BPL file format?
.bpl is a Borland Package Library file - a specialized Windows DLL used by Embarcadero Delphi and C++Builder to distribute reusable component packages. Introduced with Delphi 3, the package system allows VCL and FireMonkey components to be shared across multiple applications at runtime rather than statically linked into every executable.
Structurally, a .bpl file is a standard Windows PE (Portable Executable) .dll, identifiable by the MZ header, with an additional PACKAGEINFO resource section that lists the Delphi units the package contains. Two types exist: runtime packages, distributed alongside an application and loaded at startup (for example, vcl280.bpl ships with Delphi 11 applications), and design-time packages, which register components in the IDE and are never shipped to end users.
.bpl files are not portable between Delphi compiler versions: a package compiled for Delphi 10 Seattle will not load in Delphi 11 Alexandria and must be recompiled. Each package has companion files: a .dcp (Delphi Compiled Package) containing linker metadata, and for C++Builder a .bpi import library. The package source project is stored in a .dpk file.
Because .bpl files are valid Windows DLLs, standard PE tools such as Dependency Walker can inspect their imports and exports. They are loaded at runtime via the standard Windows LoadLibrary call.
Security & safety
RISK: MEDIUMBPL files are DLLs; a malicious BPL placed in an application directory could execute arbitrary code via DLL hijacking. Only install BPL files from trusted Delphi component vendors. The 'BPL file missing' error prompts some users to download BPL files from unofficial sites - avoid these.
Format details
in a nutshell- Symbian OS/Nokia plugin package - Some Symbian/Nokia development tools also used .bpl for firmware or plugin packages; unrelated to Delphi.
Programs that open BPL files
Technical details
deep spec| Underlying binary format | Windows PE (Portable Executable) DLL |
| Magic bytes | `MZ` (4D 5A) - standard Windows PE header |
| Byte order | Little-endian |
| Additional PE section | `PACKAGEINFO` resource listing contained Delphi/C++Builder units |
| Package types | Runtime (distributed with app) and design-time (IDE registration only) |
| Version portability | Must be recompiled for each compiler version - not cross-version compatible |
| Companion files | `.dcp` (linker metadata), `.bpi` (C++Builder import library), `.dpk` (package source) |
| Typical size | 84 KB - 2 MB |
| Platform | Windows (primary); macOS and Linux via FireMonkey cross-platform packages |
| Runtime loading | Standard Windows `LoadLibrary` / `GetProcAddress` |
| Compiler linkage | Internal RTL version tag; version mismatch causes load failure at startup |
| IDE role | Design-time packages register component palette icons and property editors in RAD Studio |
| Released | 1997 (Delphi 3 - first version with package support) |
| Latest version | RAD Studio 13 Florence (2025); BPL format stable since Delphi 3 |
| Specification | docwiki.embarcadero.com |