MDB Viewer is a practical web-based tool for viewing and analyzing Microsoft Access database files with built-in CSV export functionality. It supports both traditional .mdb files (Microsoft Access 2003 and earlier) and modern .accdb files (Microsoft Access 2007 and later). View your database tables online and convert them to CSV format for use in Excel, Google Sheets, or other applications. The application runs in your browser - no database file is sent to our server.
Files never leave your device
Works in any modern browser
No account or subscription required
MDB Viewer is built for quick, read-only inspection of Access data tables. These notes set the right expectations before you choose a file.
This viewer focuses on stored Access table data. Use this table to decide whether the browser viewer is enough or whether you need Microsoft Access or a local migration tool.
| File or feature | Support | What to expect |
|---|---|---|
| .mdb tables | Supported | Lists user tables, shows rows, and exports each table to CSV. |
| .accdb tables | Supported for many files | Works for stored table data; newer field types may need Access for exact behavior. |
| Password-protected databases | Not supported in browser | Unlock or save an unprotected copy in Microsoft Access first. |
| Forms, reports, macros, VBA | Not executed | These are Access application features, not portable table data. |
| Linked tables | External source required | The real rows live in another database, server, SharePoint list, or network file. |
| Large archives | Depends on browser memory | Very large files may need Access, mdb-tools, or a local script. |
import pandas as pd
import pyodbc
# Connect to MDB
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=C:\data\sample.mdb;'
)
conn = pyodbc.connect(conn_str)
# Read table to DataFrame
df = pd.read_sql('SELECT * FROM Customers', conn)
print(df.head())
# Export to CSV
df.to_csv('customers.csv', index=False)
conn.close()Install: pip install pandas pyodbc
import subprocess
import pandas as pd
# Get table names
tables = subprocess.check_output(
['mdb-tables', '-1', 'sample.mdb']
).decode().split('\n')
# Export table to CSV
subprocess.run([
'mdb-export', 'sample.mdb', 'Customers'
], stdout=open('customers.csv', 'w'))
# Read CSV with pandas
df = pd.read_csv('customers.csv')
print(df.head())Requires: mdbtools installed
const MDBReader = require('mdb-reader');
const fs = require('fs');
// Read MDB file
const buffer = fs.readFileSync('sample.mdb');
const reader = new MDBReader(buffer);
// Get table names
const tables = reader.getTableNames();
console.log('Tables:', tables);
// Read table data
const table = reader.getTable('Customers');
const data = table.getData();
console.log(`Rows: ${data.length}`);
console.log(data[0]);
// Write to JSON
fs.writeFileSync(
'customers.json',
JSON.stringify(data, null, 2)
);Install: npm install mdb-reader
using System.Data.Odbc;
string connString =
"Driver={Microsoft Access Driver (*.mdb)};" +
"Dbq=C:\\sample.mdb";
using (var conn = new OdbcConnection(connString))
{
conn.Open();
var cmd = new OdbcCommand(
"SELECT * FROM Customers", conn);
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(
$"{reader["CustomerID"]}: " +
$"{reader["CompanyName"]}"
);
}
}
}Requires: Microsoft Access Database Engine
import net.ucanaccess.jdbc.*;
import java.sql.*;
public class ReadMDB {
public static void main(String[] args) {
String url = "jdbc:ucanaccess://C:/data/sample.mdb";
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT * FROM Customers")) {
while (rs.next()) {
System.out.println(
rs.getString("CustomerID") + ": " +
rs.getString("CompanyName")
);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}Add to pom.xml: net.sf.ucanaccess
<?php
// Using ODBC
$conn = odbc_connect(
"Driver={Microsoft Access Driver (*.mdb)};".
"Dbq=C:\\data\\sample.mdb",
"", ""
);
$sql = "SELECT * FROM Customers";
$result = odbc_exec($conn, $sql);
while ($row = odbc_fetch_array($result)) {
echo $row['CustomerID'] . ": " .
$row['CompanyName'] . "\n";
}
odbc_close($conn);
?>Requires: ODBC extension enabled in php.ini
require 'dbi'
# Connect to MDB via ODBC
conn = DBI.connect(
'DBI:ODBC:DRIVER={Microsoft Access Driver (*.mdb)};' +
'DBQ=C:\\data\\sample.mdb'
)
# Query data
rows = conn.select_all(
'SELECT * FROM Customers'
)
rows.each do |row|
puts "#{row['CustomerID']}: #{row['CompanyName']}"
end
conn.disconnectInstall: gem install dbi dbd-odbc
# Connect to MDB
$connString = "Driver={Microsoft Access Driver (*.mdb)};" +
"Dbq=C:\data\sample.mdb"
$conn = New-Object System.Data.Odbc.OdbcConnection($connString)
$conn.Open()
# Query data
$cmd = $conn.CreateCommand()
$cmd.CommandText = "SELECT * FROM Customers"
$reader = $cmd.ExecuteReader()
while ($reader.Read()) {
Write-Host "$($reader['CustomerID']): $($reader['CompanyName'])"
}
$conn.Close()Built-in with Windows
#!/bin/bash
# Using mdb-tools
# List all tables
mdb-tables sample.mdb
# Show table schema
mdb-schema sample.mdb
# Export table to CSV
mdb-export sample.mdb Customers > customers.csv
# Export all tables
for table in $(mdb-tables sample.mdb); do
mdb-export sample.mdb "$table" > "$table.csv"
echo "Exported: $table"
doneInstall: sudo apt install mdbtools
package main
import (
"database/sql"
"fmt"
_ "github.com/alexbrainman/odbc"
)
func main() {
connStr := "Driver={Microsoft Access Driver (*.mdb)};" +
"Dbq=C:\\data\\sample.mdb"
db, err := sql.Open("odbc", connStr)
if err != nil {
panic(err)
}
defer db.Close()
rows, _ := db.Query("SELECT * FROM Customers")
defer rows.Close()
for rows.Next() {
var id, name string
rows.Scan(&id, &name)
fmt.Printf("%s: %s\n", id, name)
}
}Install: go get github.com/alexbrainman/odbc
library(RODBC)
# Connect to MDB
conn <- odbcConnectAccess("C:/data/sample.mdb")
# Read table into data frame
customers <- sqlFetch(conn, "Customers")
print(head(customers))
# Query with SQL
orders <- sqlQuery(conn,
"SELECT * FROM Orders WHERE OrderDate > #2023-01-01#")
# Export to CSV
write.csv(customers, "customers.csv", row.names=FALSE)
# Close connection
odbcClose(conn)Install: install.packages("RODBC")
Sub ReadMDB()
Dim conn As Object
Dim rs As Object
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\data\sample.mdb"
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM Customers", conn
' Write to Excel
Range("A1").CopyFromRecordset rs
rs.Close
conn.Close
End SubBuilt-in with Microsoft Office
If you arrived here with an old business database, a public dataset, or a file from a Windows colleague, these guides cover the next practical steps.
View Access database tables on macOS and export CSV files without installing Access.
Export Access tables into CSV files for Excel, Google Sheets, Python, and SQL tools.
Know when a browser viewer is enough and when a full Access installation is still needed.
Microsoft Access has been around since 1992, and it is still one of the most common desktop database formats. You will find .mdb and .accdb files in old business systems, government archives, research datasets, and many small internal tools.
The traditional Microsoft Access database format used in Access 2003 and earlier versions. They contain tables, queries, forms, reports, and other database objects.
The modern Microsoft Access database format introduced in Access 2007. They offer enhanced features like attachment fields, multi-valued fields, and improved security.
There are a few common scenarios that lead people to this tool:
Moving to PostgreSQL, MySQL, or SQL Server? Step one is seeing what's actually in those old .mdb files.
FOIA responses and public datasets often come as .mdb files. Especially from agencies that haven't updated their systems since 2005.
Datasets from the 2000sβ2010s are frequently in Access format. Researchers need to pull the data out for modern analysis tools.
Customer lists, inventory, invoices β lots of small businesses still run on Access databases built years ago.
Found an old USB stick or backup drive? Quick preview tells you if there's anything worth keeping.
Got a .mdb from a Windows colleague? Access doesn't exist on Mac or Linux, so here you are.
Check the file extension to know which format you have. Both work here β this is mostly useful if you're deciding on a migration strategy.
| Feature | .mdb (97β2003) | .accdb (2007+) |
|---|---|---|
| Engine | Jet 4.0 | ACE |
| Max Size | 2 GB | 2 GB |
| Encryption | Weak (RC4) | Strong (AES-256) |
| Attachments | No | Yes |
| Multi-Valued Fields | No | Yes |
| Calculated Fields | No | Yes |
| 64-bit | No | Yes |
If you need to migrate to a real database, here's the practical path:
COPY. MySQL: LOAD DATA INFILE. Google Sheets: File β Import.For automated schema generation, mdb-schema (part of mdb-tools) can output CREATE TABLE statements for PostgreSQL, MySQL, SQLite, and others.