OFX to CSV converter
Convert an OFX bank statement to CSV in your browser — OFX 1.x and 2.x, bank, card and brokerage — for any spreadsheet or importer. Nothing is uploaded.
Drop files here
or
Accepts .ofx, .qfx, .qbo · Up to 20 files at a time · up to 1.4 GB each "Upload" and "download" here mean your browser reading a file from this device and writing one back to it. Your file is never sent to a server — open your browser's network panel and watch: no request carries your file.
Excel in Germany, France and much of Europe expects semicolons between cells and a comma in numbers. Anywhere else, keep the default.
Tested against two open-source readers
| What was checked | Result |
|---|---|
| Files both reference libraries read | 44 files, 202 transactions: 1,209 of 1,212 fields identical (date, amount, payee, memo, transaction ID, quantity, price) |
| Files both libraries refused | 22 files — a missing header, an empty balance, a date or amount they could not parse — all read here, 75 of 76 transactions identical to a plain text search of the file |
| Synthetic statement with a known answer | 10,000 transactions, every field exact |
The three differing fields are one brokerage file whose trades are stamped 20:20 Eastern time: ofxparse converts that to UTC and moves each trade to the next day, while this page keeps the date the bank wrote. The one difference in the refused files is an amount written $120, read here as 120.00 where the text search keeps the dollar sign. The other 19 of the 85 files hold no transactions at all — balance-only downloads, sign-on replies, and the damaged files libofx keeps to test for crashes — and are reported as such rather than turned into an empty table.
OFX to CSV FAQ
Which CSV layout should I pick?
Comma-separated with a full stop in numbers, the default, is what nearly every program expects. Choose the semicolon layout only for Excel set up for continental Europe, which uses the comma as its decimal mark and therefore expects semicolons between cells; there, amounts are written with a decimal comma too.
My bank writes amounts like -12,50. Is that handled?
Yes. The OFX standard allows either a comma or a full stop as the decimal mark, and some European banks use the comma. Every amount is normalised to the same plain form — -12.50 — so the column is consistent whichever the bank chose, and amounts always carry at least two decimal places.
Will names with accents come out right?
Yes. The file is read as UTF-8 when it is valid UTF-8, and as its declared code page — usually Windows-1252 — when it is not, which handles both banks that declare their encoding correctly and the many that do not. The CSV is UTF-8 with a byte-order mark, so Excel shows “Müller” rather than “Müller”.
How are investment transactions laid out?
In the same table, with the columns a trade needs: Action, Security, Quantity, Price and Commission alongside Date and Amount. A file mixing cash and trades has both kinds of row; the investment columns are simply empty on cash rows. Securities are named by ticker when the OFX lists one.
What is the Transaction ID column?
The bank’s identifier for each transaction (FITID), unique within the account and stable across downloads. When you combine statements whose date ranges overlap, it is the column to de-duplicate on.
What about several accounts in one file?
They share the one table, with an Account column first that holds each account’s type and number as the file writes them. The Excel version of this page puts each account on its own sheet, if that suits better.
Is it really free?
Yes — every conversion on this site, with no account, no watermark and no daily cap. The work happens on your own device, so there is no server bill for us to pass on to you.
Do I need to install anything?
No. It runs in any modern browser, on Windows, macOS, Linux, Android and iOS. There is nothing to install and nothing to sign up for, and once you have converted a file on the page it keeps working with the network switched off.
Related guides
Related converters
OFX to Excel
One row per transaction, with real dates and amounts you can add upQFX to CSV
One row per transaction, in a CSV any spreadsheet or importer readsQBO to CSV
One row per transaction, in a CSV any spreadsheet or importer readsQIF to CSV
One row per transaction, in a CSV any spreadsheet or importer reads