MDB File Documentation
Summary
An Microsoft Access Database in .mdb form is the format Access used from 1992 through 2003, built on the Jet engine and replaced by .accdb in Access 2007. Its MIME type is application/x-msaccess, and one file holds tables, queries, forms, reports and VBA code. The native opener is Microsoft Access on Windows; there is no Access for Mac. Without Access, use the free MDB Viewer Plus, LibreOffice Base, or MDB Tools, usually to get the data out as Excel or CSV.
Technical details
| Feature | Value |
|---|---|
| Full name | Microsoft Access Database (97–2003, Jet engine) |
| File extension | .mdb |
| MIME type | application/x-msaccess |
| Format type | Proprietary binary database (Jet / Access engine) |
| Developer | Microsoft |
| Introduced | 1992 (Access 1.0); default through Access 2003 |
| Superseded by | .accdb (Access 2007+, ACE engine) |
| Database engine | Jet (Joint Engine Technology) |
| Page size | 2 KB (Jet 3.x / Access 97) or 4 KB (Jet 4.0 / Access 2000+) |
| Maximum file size | 2 GB |
| Stores | Tables, queries, forms, reports, macros, VBA modules in one file |
| Query language | SQL (Jet SQL dialect) |
| Magic number | 00 01 00 00 then ASCII “Standard Jet DB” at offset 4 |
| Byte order | Little-endian |
| Open standard | No — proprietary; documented in [MS-ACE] |
| Platform | Windows (Microsoft Access); no Access for macOS |
| Lock file | .ldb created next to an open database |
| Compiled variant | .mde (VBA source removed) |
| Related extensions | .accdb, .mde, .ldb, .dbf, .csv |
| Specification | learn.microsoft.com/openspecs/windows_protocols/ms-ace/ |
What is an MDB file?
MDB (“Microsoft Database”) is the original file format of Microsoft Access, used from Access 1.0 in 1992 through Access 2003, after which Access 2007 introduced the newer .accdb format. An .mdb is a single self-contained file that stores an entire database application: the data tables and their relationships, saved queries, data-entry forms, printable reports, macros, and Visual Basic for Applications (VBA) code. It is built on the Jet (Joint Engine Technology) database engine, the predecessor of the ACE engine that .accdb uses.
Because the data and the application live in the same file, an .mdb you receive may be just data or a full app with forms and code. Users typically meet .mdb files as old small-business or departmental databases — inventories, contact lists, asset or membership registers — or as the back end of a legacy in-house tool. Microsoft Access is a Windows-only desktop application, and there has never been an Access for macOS, which is why “how do I open an MDB on a Mac” is one of the most common questions about the format.
The Jet header and the page-based file layout
An .mdb is a binary file organised into fixed-size pages. The very first bytes identify it: the file begins with 00 01 00 00 and then, at offset 4, the ASCII string Standard Jet DB. That literal is the fastest way to distinguish the two Access generations in a hex editor, because an .accdb carries Standard ACE DB at the same offset. The first page (the database header page) also records the Jet version and a byte that controls the encoding of the rest of the file.
After the header, the file is a flat array of equal-sized pages that the Jet engine allocates and links as needed. The page size depends on the engine version: Jet 3.x (Access 97) uses 2 KB pages, while Jet 4.0 (Access 2000 and later) uses 4 KB pages. Every object in the database — a table’s rows, an index, the internal catalog — is stored across one or more of these pages, and the engine follows page pointers to navigate. The whole file is little-endian, and its hard ceiling is 2 GB; a database that grows toward that limit must be split or compacted.
The system catalog: MSys tables
An .mdb describes its own contents through a set of hidden system tables whose names begin with MSys. The central one is MSysObjects, which lists every object in the database — tables, queries, forms, reports, macros and modules — along with the page where each begins, its type, and flags. Related catalog tables record relationships (MSysRelationships), stored queries (MSysQueries), access-control information (MSysACEs) and, on secured databases, the workgroup account list. When Access opens a file it reads this catalog first to build the navigation pane, and open-source tools such as MDB Tools work by parsing exactly these tables. It is also why a database can hold forms and VBA and still expose all of its underlying data to a reader that ignores the application layer.
Tables, queries, forms, reports, macros and VBA
The seven object types inside an .mdb divide cleanly into data and application. Tables hold the actual data as rows on data pages, with column definitions and indexes. Queries are saved SQL — SELECT queries and action queries (INSERT/UPDATE/DELETE and make-table) — stored as text and compiled by the Jet engine. On top sit the application objects: forms for data entry and navigation, reports for printable and PDF output, macros for simple automation, and modules containing VBA code. This layering matters when you move data elsewhere: exporting to another database or a spreadsheet carries the tables, but the forms, reports and VBA do not travel — they are specific to Access.
MDB versus ACCDB: Jet versus ACE
The split between the two formats is not just age. ACCDB (2007+, ACE engine) added features that the legacy MDB format lacks: multivalued and attachment fields, calculated columns, and data macros. But MDB retains some capabilities that ACCDB dropped, notably user-level (workgroup) security, database replication, and Access projects (.adp). That trade is part of why some organisations kept old .mdb files rather than upgrading — a database that relied on workgroup security or replication had no direct equivalent after the move. Modern Access still opens legacy .mdb files for compatibility and can save a database back down to the MDB format. In a hex editor the two are told apart instantly by the Standard Jet DB versus Standard ACE DB header string.
Opening an MDB without Access, and on a Mac
Because Access is Windows-only and paid, the practical question is usually how to read an .mdb without it. On Windows, the free portable MDB Viewer Plus opens the tables and exports them, and LibreOffice Base (also on Mac and Linux) connects to the database to browse tables and run queries. On Mac and Linux, MDB Tools is the reliable command-line route: mdb-tables file.mdb lists the tables, mdb-schema file.mdb dumps the structure, and mdb-export file.mdb TableName > out.csv extracts a table to CSV. None of these free tools fully run Access forms or VBA; they read data. When a database genuinely needs its forms and code, running Windows and real Access in a virtual machine (Parallels on Mac) is the only complete answer. The most common real task, though, is data extraction — exporting tables to Excel (.xlsx) or CSV, one table at a time.
The .ldb lock file and multi-user access
Open an .mdb and Access creates a companion file with the same name and an .ldb extension (the .accdb equivalent is .laccdb). This is the lock file: it tracks which users currently have the database open, so several people can edit it concurrently over a network share without corrupting each other’s writes. Jet records a per-user entry in the .ldb and uses it to coordinate page-level locking. The file appears when the first user opens the database and disappears when the last one closes it. Do not delete an .ldb while the database is in use; a stale .ldb left behind by a crash is the usual reason a database opens read-only or reports that it is locked, and it is safe to remove only once you are certain no session is using the file.
Frequently asked questions
How do I open an MDB file without Microsoft Access?
On Windows use the free MDB Viewer Plus (portable) or LibreOffice Base. On Mac and Linux use LibreOffice Base or the mdbtools command-line utilities. All let you view tables and export to Excel or CSV, though they will not fully run Access forms or VBA.
Can I open an MDB file on a Mac?
There is no Microsoft Access for macOS. Use LibreOffice Base to read the tables and export the data, install mdbtools via Homebrew for command-line export, or run Windows plus real Access in a VM (Parallels) if you need the full forms, reports and VBA.
What is the difference between MDB and ACCDB?
MDB is the old format (1992–2003, Jet engine); ACCDB is the current one (2007+, ACE engine). ACCDB adds multivalued/attachment fields, calculated fields and data macros, while MDB keeps user-level security and replication that ACCDB dropped. In a hex editor MDB shows “Standard Jet DB” and ACCDB shows “Standard ACE DB”.
What is the .ldb file next to my MDB?
It is the temporary lock file Access creates while the database is open, tracking which users have it open for multi-user editing. It disappears when everyone closes the database. Do not delete it manually while the database is in use; a leftover one from a crash can make the database open read-only.
References
- Microsoft Learn — [MS-ACE] Access database file format
- MDB Tools — open-source Access library and CLI
- MDB Viewer Plus — free MDB/ACCDB viewer for Windows
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.