I Built a Bank Statement Converter That Never Uploads Your Files
The problem A bank statement shows where you live, where you shop, and how much you earn. Bookkeepers and accountants handle this kind of document for many clients, every month. When I looked for a tool to convert a PDF statement into a spreadsheet, almost every option asked me to do the same thing: upload the file to their server, trust their privacy policy, and hope it gets deleted later. That…
The story centers around a developer creating a bank statement converter that never uploads user files. This tool, titled StatementHarbor, runs entirely in the user's browser, eliminating the need for server-side processing or file uploads. The key advantages are heightened privacy, no account creation, unlimited conversions, and offline functionality once the page has loaded.
The conversion process involves reading the PDF locally using the File API, extracting text fragments with their positions via a JavaScript PDF library, grouping these fragments into rows based on their vertical position, identifying the date, description, amount, and balance columns from the header row and value alignment, and finally exporting the data as CSV or QBO files.
Parsing bank statements presents challenges such as varying bank layouts, multi-line descriptions spanning multiple lines, inconsistent date formats, and different representations of debits and credits. Scanned statements, which are images inside a PDF, require Optical Character Recognition (OCR) to convert them into text.
Despite these hurdles, the developer found client-side processing to be more robust than expected, with modern browsers handling PDF parsing efficiently. The tool offers privacy benefits, cost savings for the developer by eliminating server hosting costs, and no need to protect user data. The developer encourages users to provide feedback on any parsing issues encountered with different banks' statements.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.