MDB to CSV

Export every table of an Access database as a CSV file, right here on your device.

Conversion desk

On this device

Start with a file

Drop your file here or choose one from your device.

MDB · ACCDB · 5 files at a time, free

Its new format

FromMDB

ToCSV

Converted on this device. Nothing is uploaded.

Your file's short trip

MDB to CSV

Your file is next.

  1. Open
  2. Read tables
  3. Pack the ZIP
  4. Ready

What to expect

Drop an .mdb file and you get one ZIP back, with a CSV file for each table, named after the table. CSV is the plainest way to move data into a database, a script, a CRM or any spreadsheet, and it's the right choice when the database is too big for one Excel workbook.

It's the usual route when an Access database is being retired: the tables go into PostgreSQL, MySQL or SQLite, a Python or R script picks them up, or a mailing tool imports the contact list. CSV also suits an archive: plain text that no single program is needed to read.

Each file is UTF-8 with a byte order mark, so Excel shows accented letters correctly, and has Windows line endings. Choose a comma, semicolon or tab between fields above; a semicolon suits Excel in countries that write decimals with a comma.

How to export the tables

  1. Pick the delimiter above: Comma, Semicolon or Tab.
  2. Drop the .mdb file on the box, or choose it from your device.
  3. When "Your file is ready" appears, choose Download. You get a ZIP named after the database, even if it has a single table.
  4. Unzip it. Each CSV is named after its table; characters a file name can't hold, such as / or :, become an underscore.
  5. Open "What changed" under the file for anything that was approximated or skipped.

Choosing a delimiter

Whichever you choose, a value that contains the delimiter, a double quote or a line break is wrapped in double quotes, as the CSV standard (RFC 4180) describes. The file stays valid either way; the choice only decides what reads most easily on the other side.

What's inside each file

What's preserved, what changes

Measured on our 28 licensed test databases, from Access 97 (Jet3) to Access 2016 (ACE16): 56 of 56 test conversions finished.
WhatResult
Every tablePreserved One CSV file per table, together in a ZIP: 38 tables in our 28 test databases.
Access 97 to 2003 databases (.mdb)Preserved Read without Access: our 2 Jet 3 and 9 Jet 4 test databases; 22 of 22 conversions to Excel and CSV finished.
RowsPreserved Exported in full: in 56 of 56 test conversions, the rows written matched the row count stored in each table, as read by the same open-source library we convert with (46 rows in all).
Text, numbers, currency, Yes/No and datesPreserved Written as plain text in UTF-8: Yes/No as TRUE/FALSE, dates as YYYY-MM-DD, or YYYY-MM-DD HH:MM:SS with a time.
OLE objects (pictures, documents)Approximated Shown as [binary]; their content isn't exported.
Decimals with more digits than a spreadsheet number holdsApproximated Kept as text, so no digit is lost.
Times without a dateApproximated Written with the date Access counts them from, so 09:30 becomes 1899-12-30 09:30:00.
Queries, relationships, forms, reports, macros and modulesNot converted Stay in Access: only table data is exported, and every conversion says so in its notes.
Field formats, input masks, validation rules, lookups, keys and indexesNot converted Stay in Access. Values come out as they are stored, so currency has no symbol and rows keep their stored order.
Linked tablesNot converted Not exported: their data lives in another file.
System and temporary tablesNot converted Left out (2 temporary tables in our test databases).

Preserved: arrives as it is. Approximated: arrives in a simpler form, as the row describes. Not converted: stays behind.

In a CSV everything is text, so "approximated" here mostly means a value written differently from how Access showed it: a long decimal with every digit spelled out, a time with the date Access counts it from, or [binary] where an OLE object was. If you import into a database, give long decimals a text or exact numeric type rather than a floating-point one, and the digits survive. Keys and indexes don't travel in a CSV; recreate them in the new database.

Large databases

Each table is turned into CSV as soon as it's read, so its rows don't pile up in memory. In our measurements, a 200 MB test database with 3.3 million rows converted in 63 to 96 seconds on our test machine, and the tab needed up to about 2.4 times the file's size in memory, mostly for the database itself and the finished ZIP. We haven't measured larger files, and speed depends on your device. Files over 25 MB bring up a short note before they start; you can always continue. The one hard stop is 1 GB per file, a limit we set so the tab doesn't run out of memory.

Versions and passwords

This page is built for files from Access 97 to 2003, and an .accdb from 2007 or later converts here too. An encrypted .accdb asks for its password in the file list; ACCDB to Excel walks through it. What we've checked about .mdb database passwords is on the MDB page.

If something goes wrong

Try it with a sample file

sample-access97-types.mdb (116 KB) comes from the tests of the open-source mdb-reader project. Converted here, it gives a ZIP with four CSV files. Table1.csv has a header and two rows, with dates such as 1981-12-12 and the Yes/No column as TRUE or FALSE. The other three files hold only a header line, and one of them has 89 columns. Source and license: sample notes.

Plans

Free and Pro

The free plan is the real product, not a trial. Pro is for people who convert in bulk, and it isn't open yet.

FeatureFreePro
Single filesFree, no watermark, no waitSame
Files at a timeUp to 5Up to 100
ZIP and folder inputPick the files insteadYes
Large filesWorks; may be slow on some devicesBuilt for them
AccountNone neededOptional
Where files goNowhere: converted on your deviceNowhere: converted on your device
Price$0Week Pass $6 · Pro $7/month or $48/year · coming soon

Privacy

Check it yourself

You don't have to take our word for it. Your browser can show you exactly what this page sends.

  1. Open your browser's developer tools (F12, or Option + Command + I on a Mac) and choose the Network tab.
  2. Convert a file on this page.
  3. Look through the requests. None of them carries your file: the page loads its code once, then the conversion runs in a Web Worker on your device.
  4. For a stronger test, turn off Wi-Fi after the page loads, then convert again. It still works.

The conversion worker runs under its own Content Security Policy, which blocks every network request:

default-src 'none'; script-src 'self'

The page itself may only talk to this site and our cookieless analytics:

connect-src 'self' https://gateway.umami.is