Skip to content
BankToRows

How to convert a bank statement without uploading it

A bank statement carries your account number, your balances and a month of who you paid. Many converters ask you to upload it to their server. They don’t have to: the PDF can be read inside your browser. Here’s how to tell whether a converter really does that, and how to check the rows it hands back before they reach your books.

Last updated November 2026

Why not just upload it?

A statement is more than a list of amounts. It has your name and address, the account number, the balance, and a month of who you paid and who paid you. Uploading it to a converter puts a copy on that company’s server, kept for as long as its policy says and protected as well as it protects it. Many are careful. You just can’t see it from the outside.

The alternative isn’t typing the rows in by hand. A converter can read the PDF inside your browser, with the page’s own code, and hand you the spreadsheet without the statement ever crossing the network.

What “in your browser” means

The page loads like any other website. When you choose or drop a file, the page’s code opens it on your computer, finds the transactions, builds the table and writes the file you download, all on your device. The website only ever sees that someone visited the page.

It can’t read every file, though. A scanned page needs OCR, which BankToRows doesn’t do, so it reads PDFs with real text in them, the kind online banking produces, and turns scans away with a note rather than guessing.

Check it yourself

“Nothing is uploaded” is easy to write on a page. These checks work on any converter, ours included:

  • Watch the network. Open your browser’s developer tools (F12, or Cmd+Option+I on a Mac) on the Network tab, then drop the file. An upload shows up as a request about the size of your file, usually a POST. On banktorows.com you’ll see the page’s own files and the anonymous usage counts, and nothing carrying the statement.
  • Pull the plug. Load the page, convert the sample statement once (BankToRows, like many in-browser tools, loads its PDF reader the first time it’s needed), then turn off Wi-Fi and drop your statement. We tried it on banktorows.com: offline, a statement was read, checked against its balances and saved as Excel. A converter that needs the network to convert is sending the file somewhere.
  • Read the page’s security policy. In the same Network tab, reload the page, select its first request and find Content-Security-Policy among the response headers. Its connect-src line lists every address the page is allowed to send anything to. Ours allows its own site, our account service (only for Pro sign-in), Paddle (only for payments) and two analytics services, and the browser blocks anything else.
  • Read the privacy policy. It should say plainly that files aren’t uploaded, and what is collected instead. Ours lists every count we keep.

Then check the rows

Keeping the statement private is half the job. The other half is knowing the rows are right before they reach your books, and every statement already prints what you need to check them:

Opening balance + money in − money out = closing balance.

If the rows don’t add up to the closing balance, a line was missed, read twice, or read wrong. Many statements also print a running balance on every line, and that’s a stronger check: each row has to take the balance from one line to the next, so a mistake shows on the row where it happened.

BankToRows runs both checks, to the cent, before you download, highlights the rows that don’t fit, and holds the download until you’ve looked. What a match doesn’t prove:

  • Dates and descriptions. The check is about amounts. Statements often print dates without a year, which has to come from the statement period, so a December line on a January statement deserves a glance.
  • Errors that cancel out. With only an opening and a closing balance, a missed $20 charge and another read $20 too high still add up. Running balances catch that; totals alone don’t.
  • Anything the statement leaves open. Is 05/07 the 7th of May or the 5th of July? Is “$” US or Canadian dollars? BankToRows asks you rather than guessing, and the check can’t answer either for you.

You can correct any date, description or amount in the table, and the check runs again as you do. Credit card statements get the same check against the amount owed, with purchases and payments turned the right way round for accounting software.

What BankToRows does with the file

Everything on the converter pages, the batch page and the QBO file checker runs in your browser. You download Excel, CSV, a .qbo file for QuickBooks, QFX, OFX, QIF or IIF, and for bookkeepers a reconciliation report with the check row by row.

One statement at a time is free, with no account. Pro adds the batch page, for catching up a year of statements at once: they’re put in order and checked against each other for missing months and rows printed twice, still in your browser. Paddle takes the payment, and signing in takes an email address and a code. Our account service knows your email address and your plan, and never receives anything from your files.

It isn’t a bank feed. It’s for statements you already have: catch-up bookkeeping, closed accounts, months a feed missed, or banks that only give you PDFs.

Questions

Is it safe to upload a bank statement to an online converter?

It depends on who runs it and what they keep: an upload puts the whole statement on their server, under their retention and security. If you’d rather not, use a converter that reads the file in your browser, and check that it does.

How can I tell if a converter uploads my file?

Open your browser’s developer tools on the Network tab before you drop the file and look for a request about the size of the file, usually a POST. Or load the page, convert a sample, go offline and try your statement: a converter that needs the network to convert is sending the file somewhere.

Does a matching balance mean every row is right?

It means the amounts add up. Dates and descriptions aren’t covered, and with only an opening and a closing balance two errors that cancel out can pass. Running balances printed on every line catch far more, because each row is checked on its own.

Can I convert a scanned statement without uploading it?

Not with BankToRows: it reads PDFs that have text in them, the kind online banking produces, and turns scans away with a note. Reading a scan needs OCR.

More guides