OCR Snip
PDF → Excel · runs in your browser

Bank statement to Excel, without handing your statement to anyone.

Drop the PDF your bank gave you. The transactions come out as a spreadsheet — and the file never leaves this computer. Every online converter uploads your statement to a server first. This one has no server to upload to.

march-statement.pdf
Date Description Out In Balance 03/12 STARBUCKS #4471 4.85 1,203.10 03/13 PAYROLL ACME CORP 2,410.00 3,613.10 03/14 ATM WITHDRAWAL 200.00 3,413.10 03/16 NETFLIX.COM 15.49 3,397.61
in your
browser
march-statement.xlsx
DateDescriptionAmountBalance
2026-03-12STARBUCKS #4471−4.851,203.10
2026-03-13PAYROLL ACME CORP2,410.003,613.10
2026-03-14ATM WITHDRAWAL−200.003,413.10
2026-03-16NETFLIX.COM−15.493,397.61
Drop a PDF statement here a PDF from online banking, a scanned PDF, or a photo · stays on your computer Choose file Try a sample PDF · Try a scanned one

What happens to your statement

  1. 01

    Your browser opens the PDF from memory. Nothing is sent — you can watch the network tab and see it stay empty.

  2. 02

    The text layer is read and the table is found by its shape: a date on the left, money on the right. There are no bank templates to be out of date, so it works on statements from banks we have never seen.

  3. 03

    Each row is checked: does this balance equal the previous balance plus this transaction? A row that passes was read correctly. A row that fails is highlighted, not hidden.

  4. 04

    You download an .xlsx or .csv, built on your machine. Close the tab and there is nothing left of the file anywhere.

ElementsConsoleNetworkSources
Recording · Preserve log · Filter: all
NameStatusTypeSizeTime
bank-statement-to-excel200document9.1 kBbefore you chose a file
site.css200stylesheet6.4 kBbefore you chose a file
statement-engine.js200script731 kBbefore you chose a file
— you drop march-statement.pdf, 46 rows are parsed, you download the .xlsx —
0 requests carry your statement · 0 B of it transferredthis is what "not uploaded" looks like

Why this exists

A statement is the most sensitive file you own

Balance, income, every merchant, every transfer. Uploading it to a converter means trusting a stranger's server, their retention policy and their next breach. Here there is no upload step to trust.

Arithmetic, not promises

"99% accurate" tells you nothing about your file. A reconciliation check tells you exactly which rows are right, because a balance that follows from the previous one cannot have been misread.

Any bank, any country

US, UK and European formats, separate debit and credit columns or one signed amount, dates written any of the usual ways. Send us a layout that fails and it becomes a test case.

Questions

Is it really not uploaded?

Really. The page has no upload endpoint. Open your browser's developer tools, watch the Network tab, and convert a file: the only requests are the page's own scripts, loaded before you chose anything. That is a stronger guarantee than any privacy policy.

What is free and what costs money?

Every statement is parsed and shown in full, with the reconciliation check, for free. Downloading the first 25 rows is free. A $9.99 pass unlocks every row of every statement for 24 hours in this browser — no account, no subscription. Most people need it once a year, at tax time.

My statement is a scan or a photo. Will it work?

Yes. A scan has pictures of text rather than text, so it goes through the OCR engine first — on your machine, like everything else — and then through the same parser. OCR can misread a digit; when it does, that row fails the balance check and is highlighted, so a wrong figure cannot slip through unnoticed. A straight, well-lit scan at 150 dpi or better reads cleanly.

Some rows are highlighted. What do I do?

Those rows failed the balance check, usually because a description wrapped strangely or a fee was printed in an unusual place. Compare them with the PDF. Everything not highlighted was verified by arithmetic, so you only check the few rows that need it.

Can I get my money back?

Yes — within 30 days, no questions. Write to support. Payments are handled by Paddle, which is the merchant of record and processes the refund.