Paradox files
Open a Paradox .db table as an Excel workbook or a CSV file, without Paradox or the BDE. It stays on your device.
Conversion desk
On this device
Start with a file
Drop your file here or choose one from your device.
DB · 5 files at a time, free
Its new format
FromParadox
Converted on this device. Nothing is uploaded.
Your file's short trip
PARADOX to XLSX
Your file is next.
- Read
- Write the Excel file
- Ready
A Paradox table is a .db file, often with a .mb file of the same name that holds its memo text. Add both to the converter above and the table comes back as Excel or CSV, read inside this browser tab with nothing uploaded. Tables from Paradox 3.0 to 7 convert; password-protected tables don't.
Updated · How we test this format
| Opens | .db tables, with the .mb memo file of the same name. A .px index file is accepted and set aside. |
|---|---|
| Paradox versions | 3.0, 3.5, 4, 5 and 7, as named in each table's header |
| Converts to | Excel (.xlsx) or CSV (.csv), one file per table |
| Text encoding | From the table's header, or chosen by you |
| Free plan | Up to 5 tables at a time, no account |
| Large tables | We ask before starting an Excel conversion over 12 MB, or a CSV one over 200 MB. Files over 1 GB don't convert. |
| Not converted | Password-protected tables; forms, reports, queries and indexes |
| Where it runs | In this browser tab, on Mac, Windows, Linux or a phone. The table is never uploaded. |
Which conversion do you need?
- Paradox to Excel to read, sort and filter the data: real dates, times and numbers, with money formatted as money.
- Paradox to CSV to move the data into another database or a script, or when a table is too big for one workbook.
The converter above does both. Pick Excel or CSV under To before you add your files.
What a Paradox file is
Paradox was one of the best-known desktop databases of the DOS and early Windows years. Ansa Software released it for DOS in 1985. Borland bought Ansa in 1987 and made Paradox its own database, and in 1996 Corel took it over and sold it in the professional editions of WordPerfect Office.
In Paradox, every table is a file of its own. A .db file holds one table: a header that lists the fields, then the records, packed into fixed-size blocks that point to one another. What people call a Paradox database is usually a folder of these tables, with the memo, index and lock files the program kept beside them.
The format outlived the program because of the Borland Database Engine, the BDE. Many Delphi and C++Builder applications used it to keep their data in Paradox tables, so .db files still turn up behind accounting and stock software, membership lists and in-house tools from the 1990s and 2000s, long after anyone opened Paradox itself. The BDE is no longer developed, and the program that wrote a table is often gone. This page reads the tables without either.
The files around a .db
- .db The table itself, and the file to convert.
- .mb Memo and binary data for the table with the same name. A memo field keeps only its first characters inside the .db; the rest of the text is in the .mb. Add the two in the same selection and the converter pairs them by name, whatever the capitals.
- .px The primary index of a keyed table, used to find records by their key. Every record is in the .db, so it isn't needed; if you add it, it's set aside.
- .X01, .Y01, .val and similar Secondary indexes and validity checks. They hold no records. If they're in your selection, their rows say "This format isn't on our list yet" and you can ignore them.
- PDOXUSRS.NET, PDOXUSRS.LCK, PARADOX.LCK Lock and network control files that Paradox and the BDE write while tables are open. No data lives in them.
- Forms, reports, queries and scripts Separate files that describe how the data was shown or changed. They hold no records, so there's nothing in them to convert.
Converting a whole folder? Select the .db and .mb files together, in the file picker or by dragging them in. Up to 5 tables convert at a time on the free plan, and the rest wait in the list with a button to convert the next ones. A .mb file doesn't count toward the 5.
Versions and field types
Each table's header names the version of the format that wrote it: Paradox 3.0 or 3.5, Paradox 4, or the Paradox 5 and 7 formats of the Windows years. The converter reads all five, whichever program wrote the file, and our test tables cover Paradox 3.0, 4, 5 and 7.
A field's type letter decides what its bytes mean, and what it becomes when you convert:
| Type | Holds | Becomes |
|---|---|---|
| A · Alpha | Text, up to 255 characters | Text |
| N · Number | Floating-point numbers | Numbers; whole numbers exactly, fractions to 15 significant digits |
| $ · Money | Currency amounts | Numbers with two decimals |
| S, I, + · Short, Long Integer, Autoincrement | Whole numbers | Numbers |
| # · BCD | Exact decimals | Numbers with the declared decimals; past 15 digits, text that keeps every digit |
| D · Date | A calendar date | A date |
| T · Time | A time of day | A time, such as 10:00:00 |
| @ · Timestamp | A date and a time | A date with its time |
| L · Logical | True or false | TRUE or FALSE |
| M, F · Memo, Formatted memo | Long text, kept in the .mb file | Text; a formatted memo loses its formatting |
| B, O, G · Binary, OLE, Graphic | Files, embedded objects and pictures | [binary]: the content isn't exported |
| Y · Bytes | A short run of raw bytes | Hexadecimal text, such as deadbeef |
A blank field stays blank. Records come out in the order the table keeps them, following its chain of data blocks. Deleted records aren't exported: Paradox removes them from the table's blocks, and leftovers in unused blocks are ignored.
Text encoding
Paradox stores text in a code page, a table that maps bytes to letters, and the right one depends on where the data was typed. Tables from Paradox 4 on name their code page in the header, and we decode the text with it. Paradox 3.x tables don't name one, so we assume DOS 437, the code page of American DOS, and What changed says so. The same happens if a header names a code page we can't read yet; the note gives its number.
If accented letters come out wrong, choose another code page under Text encoding and add the file again. The list holds Western (Windows-1252), Central European (Windows-1250), Cyrillic (Windows-1251), Turkish (Windows-1254), Cyrillic DOS (866), Western DOS (850), US DOS (437) and UTF-8. Our test tables use DOS 437, DOS 857, Windows-1252 and Windows-1254.
Paradox .db, not SQLite
The .db ending is shared. SQLite, the database inside countless phone apps, browsers and desktop programs, often uses it, and Windows leaves a hidden Thumbs.db file in folders of pictures. Neither is a Paradox table. We check the first bytes of every file, so an SQLite database or a thumbnail cache stops with "This file isn't one we can convert with this tool." instead of turning into a broken spreadsheet. Both kinds are in our tests.
A Paradox table usually sits next to other .db files with short names, often with .px or .mb files beside it. If yours turns out to be an SQLite database, an SQLite tool can export it; this page is for Paradox.
What's preserved, what changes
| What | Result |
|---|---|
| Every record and field | Preserved 5,100 records in our 8 test tables; record and field counts match two independent Paradox readers in every table each can read. |
| Text, numbers, money, dates, times and logical values | Preserved 15,416 of 15,450 values are identical to pxlib, an independent Paradox reader; every other difference is a known quirk of that reader, such as blank fields read as 0. |
| Paradox 3 to 7 tables | Preserved Read without Paradox. In our test tables: Paradox 3.0, 4, 5 and 7. |
| Text encodings | Preserved Taken from the table header, or chosen by you. In our test tables: DOS 437, DOS 857, Windows-1252 and Windows-1254. |
| Memo text (.mb) | Preserved Read when you add the .mb file along with the .db: 6 memo values in our test tables. |
| Binary, graphic and OLE fields | Approximated Shown as [binary]; their content isn't exported (4 in our test tables). |
| Memo text without the .mb file | Approximated Keeps only the first characters stored in the table, and the notes say so (1 in our test tables). |
| Formatted memo fields | Approximated Exported as plain text (2 in our test tables). |
| Text over 32,767 characters | Approximated Cut to Excel's cell limit, with a count in the notes. Paradox to CSV keeps the whole text. |
| Tables over 1,048,575 rows | Approximated Split across several sheets, since one Excel sheet holds no more. Paradox to CSV keeps one file. |
| Password-protected tables | Not converted Not opened: remove the password in Paradox first. |
| Indexes, forms, reports and queries | Not converted Stay in Paradox: only table data is exported. A .px index file added with the table is ignored. |
| Other files named .db | Not converted SQLite databases and Windows thumbnail caches are recognised and refused (2 of our test files). |
| Tables over 8,000,000 cells | Not converted Too large for an XLSX made in the browser. Paradox to CSV converts them. |
Preserved: arrives as it is. Approximated: arrives in a simpler form, as the row describes. Not converted: stays behind.
This is the table for Excel. For CSV, the three rows about Excel's limits don't apply, and Paradox to CSV shows its own. You don't have to work out which rows apply to your file: What changed under it lists them, with counts.
How we test
We wrote our reader from two public descriptions of the Paradox file format, not from another program's code. To check it, we made 8 test tables for this site that cover every Paradox field type and the awkward cases: blank values, memo text with and without its .mb file, data blocks stored out of order and a table with no records. Together they hold 5,100 records.
Every value is compared with the saved output of two independent open-source Paradox readers. Of the 15,450 values, 15,416 match pxlib exactly. Each of the other 34 is a known habit of that reader: it reads a blank number or date as a value such as 0; it treats a bytes value that starts with a zero byte as blank; it reads all text as Latin-1, whatever code page the table names; it leaves a memo blank when the .mb file is missing, where we keep the first characters. The second reader, paradox-reader, reads 7 of the tables and agrees on 15,375 of 15,435 values, again with every difference accounted for. Record and field counts match both readers in every table each can read.
We also check that two files that only share the .db ending, an SQLite database and a Windows thumbnail cache, are turned away, and that a password-protected table stops with a clear message. Our tests run all of this again on every change to the code, and they fail if a number moves.
The test tables were written for this site because Paradox files we're allowed to publish are rare. They exercise every part of the format we read, but they aren't anyone's real data.
Tested on : our sample table, converted to Excel, opened in Numbers 14.5 on macOS 26.2 with each of its 11 fields, its Turkish text, dates, times and money in place.
Why some things aren't here
- Password-protected tables. Paradox can encrypt a table with a password. How it does that isn't described in the public documentation we work from, so these tables stop with "This file is password protected. Remove the password in the original app, then try again." If you know the password, remove it in Paradox or in the program that made the table, then convert that copy.
- Saving back to Paradox. We read Paradox tables; we don't write them. If an older program needs your data as a table file, DBF is one we do write: see CSV to DBF.
- Indexes, forms, reports and queries. Only table data is exported. Keys and sort orders don't travel; sort the result by the key fields, which in Paradox are always the first fields of the table.
When a .db won't convert
The file's row tells you when something stops a conversion. Here's what each message means for a Paradox table.
- "This file isn't one we can convert with this tool." The file isn't a Paradox table we can read. Most often it's an SQLite database or a Thumbs.db file that shares the .db ending.
- "This file is password protected. Remove the password in the original app, then try again." The table is encrypted. See Password-protected tables above.
- "This file looks damaged, or it isn't the format its name suggests." The header doesn't add up: the file stops inside its header, or the field sizes don't match the record size. That usually means a copy that stopped short; copy the table again from the original disk or backup.
- Fewer rows than you expected. If What changed says the header counts more records than were read, or that the chain of data blocks is damaged, the table was damaged before it reached you, and the rows that could be read are in your file. If the original program is still around, its table repair may recover more.
- "This table has more cells than one workbook can hold here. Converting to CSV handles any size." Excel only: one workbook made here holds up to 8,000,000 cells, rows times fields. Convert the table to CSV instead.
- "This file is on the large side" Big tables ask before they start, and you can always continue. A .mb file counts toward the size with its table.
- "This file is too large to convert on this device. A smaller file or more memory may help." The file is over 1 GB, or it's a damaged table whose memo pointers would unpack to far more text than its .mb file holds.
- "Something unexpected stopped this conversion. If trying again doesn't help, reload the page." Reload the page and convert the file once more. If the same table keeps failing, it probably uses something our reader doesn't handle yet.
Want to see a result before using your own table? Download the sample table (4 KB), a Paradox 7 file with one field of each common type, and drop it above.
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.
| Feature | Free | Pro |
|---|---|---|
| Single files | Free, no watermark, no wait | Same |
| Files at a time | Up to 5 | Up to 100 |
| ZIP and folder input | Pick the files instead | Yes |
| Large files | Works; may be slow on some devices | Built for them |
| Account | None needed | Optional |
| Where files go | Nowhere: converted on your device | Nowhere: converted on your device |
| Price | $0 | Week 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.
- Open your browser's developer tools (F12, or Option + Command + I on a Mac) and choose the Network tab.
- Convert a file on this page.
- 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.
- 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