View MDB/ACCDB Files Online & Convert to CSV

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.

Select an MDB/ACCDB File - View Tables & Export CSV Locally
Local Browser

Files never leave your device

No Install

Works in any modern browser

Free to Use

No account or subscription required

Before you open a database

MDB Viewer is built for quick, read-only inspection of Access data tables. These notes set the right expectations before you choose a file.

Best fit

  • Preview table names, columns, row counts, and records
  • Export one table at a time to CSV
  • Check old Access files before a migration or archive cleanup

Known limits

  • Forms, reports, macros, VBA modules, and Access menus are not executed
  • Password-protected or encrypted files must be unlocked in Access first
  • Linked tables need their original external database or network source

Privacy model

  • The selected MDB/ACCDB file is parsed in browser memory
  • The database file is not uploaded to mdb-viewer.com
  • Refreshing or closing the tab clears the loaded table data
Compatibility at a glance

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 featureSupportWhat to expect
.mdb tablesSupportedLists user tables, shows rows, and exports each table to CSV.
.accdb tablesSupported for many filesWorks for stored table data; newer field types may need Access for exact behavior.
Password-protected databasesNot supported in browserUnlock or save an unprotected copy in Microsoft Access first.
Forms, reports, macros, VBANot executedThese are Access application features, not portable table data.
Linked tablesExternal source requiredThe real rows live in another database, server, SharePoint list, or network file.
Large archivesDepends on browser memoryVery large files may need Access, mdb-tools, or a local script.

Code Examples - Read MDB Files

Python (ODBC)
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

Python (mdbtools)
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

Node.js / JavaScript
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

C# / .NET
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

Java
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
<?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

Ruby
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.disconnect

Install: gem install dbi dbd-odbc

PowerShell
# 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

Bash (Linux/Mac)
#!/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"
done

Install: sudo apt install mdbtools

Go
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

R
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")

VBA (Excel)
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 Sub

Built-in with Microsoft Office

What are .mdb and .accdb files?

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.

.mdb files

The traditional Microsoft Access database format used in Access 2003 and earlier versions. They contain tables, queries, forms, reports, and other database objects.

  • Jet database engine (Jet 4.0 for Access 2000–2003)
  • Max file size: 2 GB
  • 32-bit only
  • Still everywhere in legacy systems

.accdb files

The modern Microsoft Access database format introduced in Access 2007. They offer enhanced features like attachment fields, multi-valued fields, and improved security.

  • ACE database engine
  • Max file size: 2 GB (same limit)
  • 32-bit and 64-bit support
  • Better encryption (AES-256)
  • New field types: Attachment, Calculated, Large Number
Why People End Up Here

There are a few common scenarios that lead people to this tool:

Migrating Off Access

Moving to PostgreSQL, MySQL, or SQL Server? Step one is seeing what's actually in those old .mdb files.

Government & Public Data

FOIA responses and public datasets often come as .mdb files. Especially from agencies that haven't updated their systems since 2005.

Research Data

Datasets from the 2000s–2010s are frequently in Access format. Researchers need to pull the data out for modern analysis tools.

Small Business Databases

Customer lists, inventory, invoices β€” lots of small businesses still run on Access databases built years ago.

Old Hard Drives

Found an old USB stick or backup drive? Quick preview tells you if there's anything worth keeping.

Mac / Linux Users

Got a .mdb from a Windows colleague? Access doesn't exist on Mac or Linux, so here you are.

MDB vs. ACCDB: Quick Comparison

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+)
EngineJet 4.0ACE
Max Size2 GB2 GB
EncryptionWeak (RC4)Strong (AES-256)
AttachmentsNoYes
Multi-Valued FieldsNoYes
Calculated FieldsNoYes
64-bitNoYes
Moving Your Data Out of Access

If you need to migrate to a real database, here's the practical path:

  1. 1.
    See what you've got. Select the file here and look at all the tables, columns, and row counts. Takes 30 seconds.
  2. 2.
    Export each table to CSV. Click the export button for each table. CSV is accepted by every database and spreadsheet tool.
  3. 3.
    Pick a target. PostgreSQL (free, powerful), MySQL (free, common), SQLite (simple, no server needed), or Google Sheets (if the data is small enough).
  4. 4.
    Import. PostgreSQL: COPY. MySQL: LOAD DATA INFILE. Google Sheets: File β†’ Import.
  5. 5.
    Set up relationships. Access tables often have foreign keys between them. You'll need to recreate those in your new database.

For automated schema generation, mdb-schema (part of mdb-tools) can output CREATE TABLE statements for PostgreSQL, MySQL, SQLite, and others.