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

FeatureValue
Full nameMicrosoft Access Database (97–2003, Jet engine)
File extension.mdb
MIME typeapplication/x-msaccess
Format typeProprietary binary database (Jet / Access engine)
DeveloperMicrosoft
Introduced1992 (Access 1.0); default through Access 2003
Superseded by.accdb (Access 2007+, ACE engine)
Database engineJet (Joint Engine Technology)
Page size2 KB (Jet 3.x / Access 97) or 4 KB (Jet 4.0 / Access 2000+)
Maximum file size2 GB
StoresTables, queries, forms, reports, macros, VBA modules in one file
Query languageSQL (Jet SQL dialect)
Magic number00 01 00 00 then ASCII “Standard Jet DB” at offset 4
Byte orderLittle-endian
Open standardNo — proprietary; documented in [MS-ACE]
PlatformWindows (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
Specificationlearn.microsoft.com/openspecs/windows_protocols/ms-ace/
File signature (magic bytes)
00 01 00 00 53 74 61 6E 64 61 72 64 20 4A 65 74 20 44 42

The file opens with 00 01 00 00, then at offset 4 the ASCII text Standard Jet DB (53 74 61 6E ...). That string is the quickest way to tell an .mdb from an .accdb in a hex editor: the newer ACCDB format has Standard ACE DB at the same offset. Very old Access 97 files show Standard Jet DB with a different version byte. After the header the file is a sequence of fixed-size database pages (2 KB in Jet 3.x, 4 KB in Jet 4.0) managed by the Jet engine.

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