I built a subscription finder that never uploads your bank statement
I'm a software engineer, and I built a budgeting app because I was tired of guessing where my money went. One piece of it has its own free page: a Subscription Finder where you drop in a CSV from your bank and it lists every recurring charge. The rule that shaped the whole thing was simple. The file must never leave the browser. This post is about how that works and the parts that turned out…
A software engineer created a free budgeting tool that identifies recurring charges from a CSV bank statement without ever uploading the data. This privacy-focused approach ensures no information is ever sent to the server, eliminating the risk of data leaks. The page is a client-side component that reads the CSV file directly in the browser, parses it, and runs it through the same detection algorithm used in the paid app.
The tool logs a single anonymized analytics event, revealing only the number of recurring charges found, the total recurring charges, and the months covered by the statement. It does not reveal any merchant names, amounts, or other sensitive data. The detector identifies recurring charges by grouping transactions by normalized merchant name, direction, and account, then applies frequency and amount thresholds to determine if a charge is recurring.
For statements with fewer than three charges, the tool provides a list of known subscription merchants as possible subscriptions or informs the user that no subscriptions are likely due to the short statement duration. The tool handles messy bank files by ignoring account summary lines at the top, removing billing phone numbers from merchant names, and filtering out specific words that indicate non-charge transactions.
The free tool is available at https://finsight.it.com/free-subscription-finder and is part of a larger budgeting app with additional features.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.