How to Use the Dbf To Csv Converter: Step-by-Step Tutorial
The Dbf To Csv Converter runs entirely in your browser — your .dbf file is never sent to any server, no account is required, and no data leaves your device. This tutorial walks through every step: opening the tool, loading a DBF (and its optional .cpg or memo file), running the conversion, reading the stats panel, reviewing the decoded schema, auditing sample rows for codepage issues, deciding whether to include soft-deleted records, and exporting a clean UTF-8 CSV. It also covers the most common problems you will encounter with real-world DBFs and how to resolve them.
Follow along with the tool open: Open the Dbf To Csv Converter in a second tab, then work through each step below.
Open Dbf To Csv Converter →Table of Contents
- Step 1 — Open the Tool
- Step 2 — Load Your DBF File
- Step 3 — Click Convert to CSV
- Step 4 — Read the Stats Panel
- Step 5 — Review the Schema Summary
- Step 6 — Spot-Check the Preview for Mojibake
- Step 7 — Decide About Soft-Deleted Records
- Step 8 — Download the CSV
- Troubleshooting Common Problems
- Worked Example
Step 1 — Open the Tool
Open the Dbf To Csv Converter. You will see a drop zone labelled Drop a .dbf file here, or browse, a schema preview panel (empty until a file is loaded), and a Download CSV button (disabled until the conversion completes). The tool is a single page — no login, no setup, no network request made for your file.
If this is your first visit, glance at the trust badges in the header: All processing in your browser, No uploads stored, No login required. These are not marketing copy; they reflect that the entire conversion runs in the JavaScript engine of the tab you are looking at. You can verify this by opening your browser’s developer tools (F12 → Network), loading a DBF, and observing that no request carries the file contents.
Step 2 — Load Your DBF File
There are two ways to load a file:
- Drag and drop. Drag a
.dbffile from your desktop, Finder, or file explorer onto the drop zone. The zone highlights while you hover. Release. - Browse. Click the browse link inside the drop zone. A file picker opens. Select your
.dbfand click Open.
Once loaded, a filename bar appears above the drop zone showing the selected file, for example 📎 parcels.dbf with a small × to clear the selection. The file is now in browser memory; it has not been uploaded anywhere.
Companion files. DBF is often accompanied by other files. You can drop them together in the same drop action:
.cpg— a single-line text file naming the codepage. If present, the converter applies the named codepage automatically, overriding whatever the DBF header declares. This matters most for shapefile.dbffiles with non-ASCII text..dbtor.fpt— the memo-content companion for DBFs with Memo (M) fields. Drop it alongside the.dbfso memo content is read; otherwise Memo fields become empty in the CSV and a warning appears.
Accepted dialects: dBase III+, dBase IV, dBase 5, FoxPro 2, Visual FoxPro, and the shapefile dBase dialect. The tool reads the version byte and the full field descriptor array automatically — you do not need to specify the dialect.
File size: Up to approximately 200 MB on a desktop browser with adequate RAM. Mobile browsers or low-memory devices should stay well under that. For gigabyte-scale DBF archives, use a Python streaming converter instead; browser memory is the practical ceiling.
Step 3 — Click Convert to CSV
With a file loaded, the Convert to CSV button becomes active. Click it. The tool parses the 32-byte file header, reads the field descriptor array, decodes each fixed-width record, applies codepage decoding to Character fields, and assembles a UTF-8 CSV in memory. The preview panel reveals below.
For a typical DBF of a few thousand rows and 10–20 fields, this completes in well under a second. For larger files, a progress indicator appears. The tool reads every record — it does not sample — because DBF soft-deletes are scattered through the file and the schema panel needs accurate statistics across the whole dataset.
Step 4 — Read the Stats Panel
Once the conversion completes, a stats panel displays:
- Dialect: the DBF dialect identified from the version byte (e.g. dBase III+, Visual FoxPro, FoxPro 2 with memo).
- Records (active): the number of active data records that will become CSV rows.
- Records (deleted): the number of soft-deleted records. Non-zero values are common in long-lived DBFs that were never packed.
- Columns: the number of fields in the output CSV.
- Codepage: the codepage applied to Character-field decoding, either derived from the language-driver byte or overridden by a companion
.cpg. - Warnings: a count of any records that required codepage substitution or Memo-field fallback.
Scan the stats panel first. If the dialect matches what you expected, the record counts are plausible, and warnings are zero, the decoding is clean. If warnings are non-zero, expand the panel to see which records were affected — most commonly a Character field containing bytes not representable in the chosen codepage, or a Memo field whose companion .dbt/.fpt was not loaded.
Step 5 — Review the Schema Summary
Below the stats panel is a schema table. It lists each decoded DBF column with:
- Field name: the DBF field name, as stored in the file header (up to 10 ASCII printable characters, conventionally uppercase).
- Type: the DBF type from the descriptor —
C(Character),N(Numeric),F(Float),L(Logical),D(Date),T(DateTime),I(Integer),B(Double),Y(Currency), orM(Memo). - Length: the field width in bytes.
- Decimals: the decimal count, used only for Numeric, Float, and Currency columns.
- Sample: the decoded value from the first active record, so you can spot-check the interpretation.
Skim the table and confirm each column matches what you expected the DBF producer to have written. The two most common surprises are (1) a column that semantically should be a date but is stored as a Character field because the original writer did not use DBF Date type, and (2) a Memo (M) column whose sample value is empty because the companion memo file was not loaded alongside the DBF.
Step 6 — Spot-Check the Preview for Mojibake
Below the schema table, the preview panel shows the first several rows of CSV output. Scan the Character columns for mojibake — telltale sequences that indicate a codepage mismatch:
éwhere you expectedéá,Ã,ó,úwhere you expectedá,í,ó,ú£where you expected£?characters (question-mark substitution) where you expected any non-ASCII character- Sequences of boxy or seemingly-random characters where you expected CJK or Cyrillic text
If you see mojibake, the codepage is wrong. The source DBF was written in a codepage different from what the language-driver byte declared (common when the byte is zero and the converter defaulted to Windows-1252). Open the Codepage dropdown in the advanced settings and try alternatives:
- CP437 (OEM US) — vintage DOS DBFs, often Clipper.
- CP850 (DOS Latin 1) — DOS-era Western European DBFs.
- CP1251 (Windows Cyrillic) — Russian and other Cyrillic-locale DBFs.
- CP1250 (Windows Central European) — Polish, Czech, Hungarian DBFs.
- CP936 (GBK, Simplified Chinese) — Chinese-locale DBFs.
- CP932 (Shift-JIS) — Japanese-locale DBFs.
The preview re-renders with the new codepage. Keep cycling until the visible text reads correctly. If you have a .cpg companion file, drop it alongside the DBF and the converter will apply the named codepage automatically — no guesswork needed.
Step 7 — Decide About Soft-Deleted Records
DBF marks deleted records by writing 0x2A to the record’s leading byte instead of the usual 0x20 (space). The records remain in the file until a PACK operation physically removes them. The default is to skip soft-deleted records — this matches the behaviour of every DBF consumer and is almost always what you want.
Leave the Include soft-deleted records checkbox unchecked unless you have a specific reason to include them:
- Audit or forensic work. You are investigating what was removed from a DBF and when. Tick the checkbox. The CSV will include a
_DELETEDcolumn whose value istruefor soft-deleted records. - Migration-integrity check. You are verifying that a legacy DBF’s record count matches the total rows in a new destination system (including historically removed ones). Tick the checkbox for this one export; untick it for the production migration.
- Data-archaeology on an abandoned system. You want every byte the DBF ever held, not just the active set. Tick the checkbox.
Most day-to-day conversions skip soft-deleted records — do not over-think this step.
Step 8 — Download the CSV
Click Download CSV. The file is saved with the same base name as the input but with a .csv extension — parcels.dbf produces parcels.csv. If you need a different filename, rename the file after download.
The output is UTF-8 encoded with CRLF line endings by default (RFC 4180 convention). Switch to LF in the advanced settings if your downstream consumer is a UNIX-native tool that does not strip CR bytes. Quoting follows RFC 4180: fields containing commas, double quotes, or line breaks are wrapped in double quotes; internal double quotes are escaped by doubling.
Open the downloaded .csv in your target consumer (Excel, LibreOffice Calc, pandas, a SQL COPY or BULK INSERT command, or a command-line pipe) and confirm the first few rows match the preview you saw in the tool. Catching a misinterpretation here is far cheaper than debugging a downstream pipeline.
Troubleshooting Common Problems
“My accented text shows as mojibake in the preview.” This is a codepage mismatch. The language-driver byte in the DBF header either declares a codepage that is incorrect for the content, or it is zero and the converter defaulted to Windows-1252. Open the codepage dropdown and cycle through CP437, CP850, CP1251, CP1250, CP936, or CP932 until the text reads correctly. If you have a .cpg file, drop it alongside the DBF and the correct codepage is applied automatically.
“My Memo column is empty in the CSV.” Memo (M) fields store a 10-byte offset pointing into a companion .dbt (dBase) or .fpt (FoxPro) file. If the companion file is not loaded, the converter has nothing to dereference. Drop the .dbt or .fpt alongside the .dbf in the same drop action and re-run the conversion.
“The record count in the stats panel doesn’t match what I expected.” The panel shows active and deleted counts separately. If you expected, say, 10,000 rows but see 8,500 active and 1,500 deleted, the DBF has accumulated soft-deletes that were never packed. This is normal. The default export (active only) will produce 8,500 rows — which is almost always what you want.
“A numeric field has leading spaces I want stripped.” DBF stores Numeric fields left-padded with spaces to the declared length. The converter strips leading spaces on decode, so the CSV contains a clean decimal number. If you still see leading spaces, you are looking at a Character column that happens to contain numeric content — the DBF producer stored it as C, not N. Post-process with a trim step in your downstream consumer.
“The date column is text, not an actual date.” The converter emits Date (D) columns as ISO YYYY-MM-DD strings and DateTime (T) columns as ISO YYYY-MM-DDTHH:MM:SS strings. They are text in the CSV because CSV is a text format — there is no native date type. Your downstream consumer (Excel, pandas, SQL) will parse them as dates if the column is typed accordingly on load.
“The CSV contains a column I didn’t expect called _DELETED.” You enabled Include soft-deleted records in Step 7. Untick the checkbox and re-export, or filter out the _DELETED=true rows in the downstream consumer.
“The download button is greyed out.” Either the conversion has not completed yet, or it failed silently on a malformed header. Scroll up to the stats panel — if it shows a parse error, the DBF has a non-standard or corrupted header. Check the file in a DBF viewer or open the file in a hex editor and verify the first byte is a recognised version byte (0x03, 0x30, 0x31, 0x83, 0x8B, 0xF5, etc.).
Worked Example
Here is a concrete walkthrough with a small dBase III+ file of three records. Assume you have received a file called orders.dbf produced by a FoxPro application with the following structure:
Field Type Length Decimals
ORDER_ID N 4 0
CUSTOMER C 20
AMOUNT N 10 2
SHIPPED L 1
ORDER_DATE D 8
Convert using the tool:
- Open the Dbf To Csv Converter.
- Drag
orders.dbfonto the drop zone, or click browse and select it. - The filename bar shows: 📎 orders.dbf.
- Click Convert to CSV.
- The stats panel shows: Dialect: dBase III+ · Records (active): 3 · Records (deleted): 0 · Columns: 5 · Codepage: Windows-1252 · Warnings: 0.
- The schema table shows the five columns with their DBF types and lengths as above.
- The preview panel shows three rows. Spot-check the
CUSTOMERcolumn — if you expected accented characters likeFrère & Coand instead seeFrère & Co, that is mojibake; switch the codepage. - Leave the include-deleted checkbox unticked.
- Click Download CSV. The file is saved as
orders.csv.
Inspect the output: Open orders.csv in Excel, LibreOffice Calc, or a text editor. You should see a header row and three data rows:
ORDER_ID,CUSTOMER,AMOUNT,SHIPPED,ORDER_DATE
1001,Acme Corp,1250.00,true,2026-03-15
1002,Widgets Ltd,899.50,true,2026-03-16
1003,Example Inc,3000.00,false,2026-03-17
Load into pandas: If you intend to analyse the data, a single pandas call reads the CSV with appropriate types:
import pandas as pd
df = pd.read_csv('orders.csv', parse_dates=['ORDER_DATE'])
df.dtypes
Load into PostgreSQL: For a bulk import into a SQL database, pair the CSV with one of the INSERT generators on this site — for example the CSV to PostgreSQL INSERT tool — to produce a script you can run with psql, or use the PostgreSQL COPY command directly on the CSV.
For a deeper explanation of the DBF format, the file header byte layout, field-type decoding rules, codepage handling, and how soft-deletes work, see the Complete Guide to Dbf To Csv Converting.
