TallyRows Enter key
How it works

Read, prove, then export.

Six steps, all of them inside the browser tab. The fourth is the reason to use this over a generic PDF converter.

1. Open the PDF

The file is opened with pdf.js, the PDF engine built into Firefox, running from this site's own copy. It yields every piece of text on each page with its exact position. Nothing else is needed, which is why a statement downloaded from online banking works and a scan does not: a scan has no text, only a picture of text.

2. Find the table

TallyRows looks for header rows — a line made mostly of column labels such as Date, Description, Withdrawals, Deposits, Paid out, Amount, Balance. The position of each label becomes the edge of its column. A statement can have several tables (deposits in one section, card purchases in another); each header starts its own section.

3. Read the rows

4. Prove the figures

Banks print their own arithmetic, and TallyRows checks your rows against it in two independent ways:

The result is one of four verdicts:

5. Look, and fix if needed

The original page sits next to the rows. Click a row and it is highlighted on the page. Double-click any cell to correct it; the checks re-run as you type, and every edited cell is underlined so the exported file is never silently different from the statement.

6. Export

CSV is free. With a plan, Excel (with real dates and numbers, filters, totals and a sheet listing the check results), QBO for QuickBooks, and OFX for Quicken, Xero and other accounting software. Several statements can be merged into one file in date order.

What “nothing is uploaded” means, technically

Every page on this site is served with a Content-Security-Policy that includes connect-src 'none'. That instruction is enforced by your browser, not by us: it forbids the page from opening any network connection — no uploads, no analytics, no background requests. Fonts and the PDF engine are served from this site, so no third party learns that you visited.

To see it yourself: open your browser's developer tools, go to the Network tab, then drop a statement. No request appears. Or load the page, disconnect from the internet, and convert — it still works.

Limits worth knowing

Convert a statement