How it works

Your bank file is read and converted by your own browser. Nothing is uploaded. Here is what happens, step by step, and how we test it.

Your file never leaves your computer

The converter is a web page with a program built in. When you choose a file, your browser reads it from your disk into the page's memory. A background worker in the same browser tab reads the rows, and the page builds the new file. The finished file is handed to your browser's normal download.

  • No step sends your file, its transactions or your account details over the internet.
  • The page's security policy blocks it from contacting other websites. It only loads its own files.
  • Our automated tests switch the network off in a real browser and convert a file anyway, to prove the conversion never needs the internet.
  • Only settings are saved on your device (theme, column choices, last format). See the privacy policy.

What happens to your file

  1. Read. The converter works out the file type from its content, not just its name: CSV, TSV or text, Excel, QBO, QFX, OFX or QIF. For text files it detects the character set (UTF-8, UTF-16 or Windows-1252) and the separator (comma, semicolon, tab or bar).
  2. Find the table. Bank exports often start with a bank name, account summary or balance lines. The converter finds the real header row below them and skips totals and balance lines at the end.
  3. Match columns. It matches columns by their names (Date, Posting Date, Description, Payee, Amount, Debit, Credit, Withdrawal, Deposit, Check Number and many more) and by their contents. It handles one signed amount column, separate debit and credit columns, and an amount with a DR/CR column.
  4. Read dates and amounts. Amounts like $1,234.56, (1,234.56), 1234.56- and 1.234,56 are all understood. When a date like 03/04/2026 could be March 4 or April 3, it checks every row to decide, and asks you if it still can't tell.
  5. Give each transaction an ID. QuickBooks and Quicken use a transaction ID (FITID) to skip transactions you already imported. The converter makes the ID from the date, amount, description, memo and check number, so the same file always gets the same IDs. Two identical transactions on the same day still get different IDs.
  6. Show you everything. You see every transaction in a table. You can fix a cell, delete a row or limit the date range before you download.
  7. Write the new file. The output follows the published structure of each format, such as the OFX specification that QBO and QFX files are based on.

What it checks before you download

  • the number of transactions, the date range, and the total money in and out;
  • rows that could not be read, with their row numbers;
  • transactions that look like duplicates, dates in the future, and zero amounts;
  • descriptions longer than the format allows (the full text is kept in the memo).

Test results

Every change to the converter is tested against made-up bank files in many layouts, including a 20,000-row file. Last run: October 9, 2026: 122 of 122 tests passed.

Automated test results by area
AreaTestsPassed
money55
dates44
fitid22
QBO file checker55
CSV layouts1616
IIF writer66
merge (T3) and duplicates (T5)44
split (T4)33
QBO writer: structure (OFX 1.02 SGML)55
QBO writer: details55
QFX and OFX writers33
Round trips (Plan.md 3.8)33
transaction IDs in written files22
PDF statement lines → transactions88
PDF statements read with pdf.js66
bank presets (docs/research/bank-csv-layouts.md)2121
OFX reader55
QIF reader22
Excel reader22
file errors22
QIF writer44
CSV writer22
Quicken CSV writer (Quicken for Windows layout)11
QuickBooks Online CSV writer55
QuickBooks Online checks11

Limits

  • The converter reads text files and spreadsheets. It does not read scanned images of statements.
  • It reads bank, cash and credit card transactions. Investment transactions are not converted.
  • Always check the result before importing, and keep a backup of your QuickBooks or Quicken data.

Last updated