About PDF2Sheet
A converter built on the assumption that your bank statement is none of our business.
Why this exists
Converting a PDF statement to a spreadsheet should be a local operation. It is text on a page; the arithmetic is trivial; there is no reason a stranger's server needs a copy. Yet almost every tool in this category is built the other way round — upload, process, delete after a while, and meter the free tier so that the third file of the month requires an account.
The upload requirement is not technically necessary. It exists because a server is easier to monetise and easier to keep secret. Browsers have been able to parse PDFs locally for a decade.
So this one does it locally. The entire converter is client-side JavaScript: PDF.js reads the file, a small engine reconstructs the table from text positions, SheetJS writes the workbook. There is no backend, no database, no upload endpoint, and therefore no retention policy to read.
What it costs, and how it is paid for
Nothing, and display advertising. There is no paid tier, no watermark on the export, no page limit that appears after you have already done the work. Serving a static page is cheap; that is the whole business model.
What we would rather say up front
- It does not do OCR. Scanned statements produce a clear error, not a bad guess.
- It does not invent dates. A statement that prints
02 Sepyields text, not a fabricated year. - It does not always get column detection right first time. That is why there is a preview, editable cells, and a sensitivity setting.
- It is not affiliated with any bank, and it is not financial advice.
Under the hood
PDF.js and SheetJS are used unmodified. The table reconstruction engine is written for this site
and served unminified — you can read it at /assets/js/engine.js, or
read the explanation of how it decides where the columns are.
Get in touch
If a statement converts badly, that is useful information — send the bank name and, if you are willing, a redacted sample. Details on the contact page.