ACCDB File Documentation
Summary
An ACCDB file is a Microsoft Access database, the format Access has used since the 2007 version (replacing the older .mdb). One self-contained file holds the tables, relationships, queries, forms, reports, macros and VBA code of a database application. It is a proprietary binary format backed by the ACE engine, with the MIME type application/x-msaccess and the string Standard ACE DB near its start. Microsoft Access (Windows only) is the native opener; free tools like MDB Viewer Plus or LibreOffice Base read a .accdb without it.
Technical details
| Feature | Value |
|---|---|
| Full name | Microsoft Access Database (2007+) |
| File extension | .accdb |
| MIME type | application/x-msaccess |
| Format type | Proprietary binary database file |
| Database engine | ACE (Access Connectivity Engine), successor to Jet |
| Developer | Microsoft |
| Introduced | 2007, with Access 2007 |
| Replaces | .mdb (Jet engine, Access 95–2003) |
| Open standard | No — proprietary |
| Byte order | Little-endian |
| Page size | 4096 bytes |
| Magic string | Standard ACE DB at offset 4 (MDB shows Standard Jet DB) |
| Native opener | Microsoft Access (Windows only; no Access for macOS) |
| Stores | Tables, queries, forms, reports, macros, VBA modules, relationships |
| ACCDB-only features | Multivalued fields, attachment fields, calculated columns, data macros |
| Related extensions | .mdb, .accde, .accdt, .accdr, .laccdb, .ade |
| Specification | learn.microsoft.com — Access 2007 file format reference |
What is an ACCDB file?
ACCDB is the default file format of Microsoft Access since Access 2007, when it replaced the older .mdb format that Access had used from 1995 to 2003. It is a single self-contained file that holds an entire database application: the data tables, the relationships between them, saved queries, data-entry forms, printable reports, macros, and the Visual Basic for Applications (VBA) code modules behind the app. Because the data and the application live in the same file, an .accdb you receive might be nothing but data, or it might be a complete program with a user interface and code.
The format is backed by the ACE engine (Access Connectivity Engine), the successor to the older Jet database engine. This article covers what changed from Jet/MDB to ACE/ACCDB, how the file is laid out on disk in fixed pages, what each kind of object inside it is, the family of related extensions, and the specific way ACCDB runs code — which is where its real risk lives.
ACE versus Jet: what ACCDB added and dropped
ACCDB is not just a renamed .mdb. Moving from the Jet engine to ACE brought new capabilities that the old format could not represent, and dropped some legacy ones. The additions are the reason a database using them cannot be saved back to .mdb:
| Feature | Status in ACCDB |
|---|---|
| Multivalued fields | Added — a single field can hold several values |
| Attachment fields | Added — files stored inside a record |
| Calculated columns | Added — a column computed from others |
| Data macros | Added — table-level triggers on insert/update/delete |
| SharePoint integration | Added |
| User-level security | Removed |
| Database replication | Removed |
| Workgroup .mdw / .mde split | Removed (replaced by .accde) |
The clearest fingerprint of the engine change is in the file header. Both formats store the same kind of marker at offset 4, but the string differs: an ACCDB reads Standard ACE DB, while an MDB reads Standard Jet DB. That one string is the fastest way to identify which format a file really is, regardless of its extension.
Pages: how ACE lays the file out on disk
Like the Jet4 engine before it, ACE organises the file into fixed-size pages of 4096 bytes. The whole database — table data, indexes, the internal catalog — is a collection of these pages, each with a type and a role, chained together by page numbers rather than stored as one continuous stream. The first page is the database header page; it carries the Standard ACE DB marker, the format version, and pointers into the rest of the file.
Page 0: Database header — "Standard ACE DB", version, page pointers
Data pages: rows of a table, packed into 4096-byte pages
Index pages: B-tree nodes for indexed columns
LV pages: "long value" pages for Memo/OLE/attachment data too big for a row
System pages: the MSys* catalog tables describing every object
Storing data in fixed pages is what lets Access read and write parts of a large database without loading the whole file, and it is why an .accdb can grow and then benefit from a Compact and Repair pass, which rewrites the pages to reclaim space left by deleted rows. A row longer than a page — a Memo field, an embedded attachment — spills into dedicated long-value pages that the row references.
The objects inside: tables, queries, forms, reports, code
An Access database is a container of typed objects, and understanding the file means knowing what each object is:
- Tables hold the actual data, stored in the data pages by the ACE engine. They are the only objects that contain records; everything else operates on them.
- Queries are saved SQL — SELECT statements that return a view of the data, or action queries (INSERT/UPDATE/DELETE) that change it. A query stores the SQL, not a copy of the data.
- Forms are the data-entry and navigation user interface: the windows a user sees and types into.
- Reports are print and PDF layouts over the data, with grouping, sorting and totals.
- Macros are lists of automation actions, including data macros that fire as table-level triggers when a record changes.
- Modules are VBA code — full Visual Basic for Applications procedures behind the application.
Access keeps track of every one of these in a system catalog: a set of hidden tables whose names begin with MSys (such as MSysObjects), which record the object list, their types, and the relationships between tables. When a third-party tool reads an ACCDB, it is these catalog tables it reads first to discover what the database contains. It also explains why free readers reliably recover tables and data but often cannot reproduce forms, reports or VBA: those objects are stored in Access-specific structures that only Access fully interprets.
The ACCDB family: accde, accdt, accdr, laccdb
Several sibling extensions belong to the same format family, and each signals a specific state of the database:
| Extension | What it is |
|---|---|
.accdb | The standard editable database |
.accde | A compiled, locked build: VBA source removed, design view disabled (for distribution) |
.accdt | A database template |
.accdr | Forces the database open in runtime mode (users run it, cannot redesign) |
.laccdb | A temporary lock file created next to an open database, recording who has it open |
The .laccdb lock file is the source of a frequent problem. Access creates it while a database is open, to coordinate multi-user editing, and normally deletes it when the last user closes the database. If Access crashes, a stale .laccdb can be left behind and make the database open read-only or refuse edits. The remedy is to make sure no one has the database open, then remove the leftover lock file — but never delete a .laccdb while the database is genuinely in use.
Data macros and VBA: how an ACCDB runs code
An ACCDB is not purely passive data. Because it can contain VBA modules and data macros, it can execute code, and that is the format's genuine security concern. VBA is full programming; a data macro is a trigger Access runs automatically when a table row is inserted, updated or deleted. Both mean that simply working with a database from an untrusted source could run someone else's code.
Access mitigates this the same way Word and Excel do: it opens an unknown database with macros disabled, showing a Trust Center warning (the yellow security bar), and code stays inert unless you explicitly enable it or the file's location is trusted. Leave it disabled unless you trust the sender. Read-only viewers such as MDB Viewer Plus or LibreOffice Base do not run Access macros at all, which makes them a safer way to inspect an unfamiliar .accdb when you only need to see the data. Beyond code, the data itself is inert. A separate protection is encryption: Database Tools > Encrypt with Password password-protects the file, with reasonably strong encryption in the Access 2010+ ACCDB format (the original Access 2007 encryption was weak).
Why there is no ACCDB opener on macOS
Microsoft Access is a Windows-only Microsoft 365 / Office desktop application, and there has never been a Microsoft Access for macOS. That single fact drives one of the most common questions about this format — how to open an .accdb on a Mac — and it has no native answer. The practical routes are to use LibreOffice Base, which connects to the database to read tables and export the data (though it will not fully load Access forms, reports or VBA), or to run Windows and real Access in a virtual machine when full application fidelity is required. On Linux the situation mirrors this: LibreOffice Base for browsing, plus the command-line mdbtools package (mdb-export file.accdb TableName) to dump a table straight to CSV.
References
- Microsoft Learn — Access 2007 file format reference
- Library of Congress — Microsoft Access ACCDB File Format Family
- MDB Viewer Plus — free ACCDB/MDB viewer
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.