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

To

Converted on this device. Nothing is uploaded.

Your file's short trip

PARADOX to XLSX

Your file is next.

  1. Read
  2. Write the Excel file
  3. 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

Paradox at a glance
Opens.db tables, with the .mb memo file of the same name. A .px index file is accepted and set aside.
Paradox versions3.0, 3.5, 4, 5 and 7, as named in each table's header
Converts toExcel (.xlsx) or CSV (.csv), one file per table
Text encodingFrom the table's header, or chosen by you
Free planUp to 5 tables at a time, no account
Large tablesWe ask before starting an Excel conversion over 12 MB, or a CSV one over 200 MB. Files over 1 GB don't convert.
Not convertedPassword-protected tables; forms, reports, queries and indexes
Where it runsIn this browser tab, on Mac, Windows, Linux or a phone. The table is never uploaded.

Which conversion do you need?

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

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:

TypeHoldsBecomes
A · AlphaText, up to 255 charactersText
N · NumberFloating-point numbersNumbers; whole numbers exactly, fractions to 15 significant digits
$ · MoneyCurrency amountsNumbers with two decimals
S, I, + · Short, Long Integer, AutoincrementWhole numbersNumbers
# · BCDExact decimalsNumbers with the declared decimals; past 15 digits, text that keeps every digit
D · DateA calendar dateA date
T · TimeA time of dayA time, such as 10:00:00
@ · TimestampA date and a timeA date with its time
L · LogicalTrue or falseTRUE or FALSE
M, F · Memo, Formatted memoLong text, kept in the .mb fileText; a formatted memo loses its formatting
B, O, G · Binary, OLE, GraphicFiles, embedded objects and pictures[binary]: the content isn't exported
Y · BytesA short run of raw bytesHexadecimal 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

Measured on our 8 test tables, written for this site to cover every Paradox field type, and checked value by value against two independent Paradox readers.
WhatResult
Every record and fieldPreserved 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 valuesPreserved 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 tablesPreserved Read without Paradox. In our test tables: Paradox 3.0, 4, 5 and 7.
Text encodingsPreserved 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 fieldsApproximated Shown as [binary]; their content isn't exported (4 in our test tables).
Memo text without the .mb fileApproximated Keeps only the first characters stored in the table, and the notes say so (1 in our test tables).
Formatted memo fieldsApproximated Exported as plain text (2 in our test tables).
Text over 32,767 charactersApproximated Cut to Excel's cell limit, with a count in the notes. Paradox to CSV keeps the whole text.
Tables over 1,048,575 rowsApproximated Split across several sheets, since one Excel sheet holds no more. Paradox to CSV keeps one file.
Password-protected tablesNot converted Not opened: remove the password in Paradox first.
Indexes, forms, reports and queriesNot converted Stay in Paradox: only table data is exported. A .px index file added with the table is ignored.
Other files named .dbNot converted SQLite databases and Windows thumbnail caches are recognised and refused (2 of our test files).
Tables over 8,000,000 cellsNot 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

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.

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.

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