Skip to content
← All Tools
🔒All processing in your browser 🚫No uploads stored 🛡️Privacy-first conversion tools No login required
Tutorial

How to Use the Dbf To Csv Converter: Step-by-Step Tutorial

Bill Crawford — Developer Tutorial — 2026  ·  Published April 16, 2026

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.

Connect on LinkedIn →

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

  1. Step 1 — Open the Tool
  2. Step 2 — Load Your DBF File
  3. Step 3 — Click Convert to CSV
  4. Step 4 — Read the Stats Panel
  5. Step 5 — Review the Schema Summary
  6. Step 6 — Spot-Check the Preview for Mojibake
  7. Step 7 — Decide About Soft-Deleted Records
  8. Step 8 — Download the CSV
  9. Troubleshooting Common Problems
  10. 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:

  1. Drag and drop. Drag a .dbf file from your desktop, Finder, or file explorer onto the drop zone. The zone highlights while you hover. Release.
  2. Browse. Click the browse link inside the drop zone. A file picker opens. Select your .dbf and 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:

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:

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:

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:

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:

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:

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:

  1. Open the Dbf To Csv Converter.
  2. Drag orders.dbf onto the drop zone, or click browse and select it.
  3. The filename bar shows: 📎 orders.dbf.
  4. Click Convert to CSV.
  5. The stats panel shows: Dialect: dBase III+ · Records (active): 3 · Records (deleted): 0 · Columns: 5 · Codepage: Windows-1252 · Warnings: 0.
  6. The schema table shows the five columns with their DBF types and lengths as above.
  7. The preview panel shows three rows. Spot-check the CUSTOMER column — if you expected accented characters like Frère & Co and instead see Frère & Co, that is mojibake; switch the codepage.
  8. Leave the include-deleted checkbox unticked.
  9. 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.

BC
Bill Crawford
Founder, Data Conversion Center

Bill Crawford is a data systems developer and technical founder with over 30 years of professional experience in accounting, finance, and business operations. He founded DataConversionCenter.com to build practical, browser-based tools that simplify complex data challenges.

Professional Background