Honest & local-first.
No server ever reads your financial data β it stays on your device, and your browser turns your CSV files into spending data locally. The full source code is public on GitHub, so anyone can verify exactly what it does. Built for people in the US, Canada, UK, Australia, New Zealand, Singapore, and beyond. Here's how it works.
Last updated July 26, 2026
sent automatically whenever your browser requests a page β true of any site, not just this one
sent to two outside services this app relies on
cdnjs (powers the charts) and jsDelivr (powers sign-in) β not this app's own servers
sent when your browser downloads community-rules.json
+ financial data after sign-in (encrypted)
no financial data
only if you use the optional VIN lookup when adding a vehicle
NHTSA β used to auto-fill year, make, and model from your VIN
type it in yourself
Your data flow
The app saves everything β accounts, balances, imported transactions, budgets, and snapshots β to your browser's local storage. It persists across refreshes and restarts, even without signing in. Your browser processes CSV files locally and nothing leaves your device unless you choose to sync. You can export your transactions and budget history as a CSV anytime from the Spending and Budget tabs, or export a full JSON backup (accounts, budgets, categories, and all transactions) from the overflow menu (β―) on the Spending tab β and import it back on any device to restore everything.
Sign in with Google or a passwordless email link and the app backs up your full data β accounts, transactions, budgets, categories, and snapshots β directly to your account via Supabase (open source). You'll also set a sync passphrase β separate from your Google or email sign-in β and the app uses it to encrypt your data on your device before it leaves. Supabase stores only encrypted data it cannot read β and neither can I. Row-level security policies add a second layer, restricting database access to your own signed-in account. Choose that passphrase carefully: there's no reset. Sign in on any device and enter it to restore everything. Sync doesn't merge changes from multiple devices β if you edit on two devices before either syncs, the app keeps whichever save happened last. If you'd rather your data never leave your device, skip sign-in β the app works fully without it.
Once per session when you open the import screen, the app downloads community-rules.json from Cloudflare. This file contains keywordβcategory mappings the app uses to auto-categorize your transactions. The app sends no transaction data, descriptions, or personal information β it only downloads the rules file. The file lives publicly on GitHub so anyone can audit it. Missing a merchant? Suggest a pattern β β no account required. You can block this download using any privacy extension β the app will still work, but will skip applying community categorization rules to your transactions. Your own custom rules still apply.
Two separate types of data collection happen when you use this app β they're easy to confuse:
- Server logs β automatic, can't be turned off, standard for any website (see "Cloudflare hosting logs" below).
- Analytics β optional, privacy-respecting, blockable (see "Analytics β what's collected" below).
When you visit this app, Cloudflare records standard server request data: your internet address, browser type, pages requested, and timestamps (this is standard for any website you visit). Cloudflare manages this logging under their own privacy policy β I have no control over it and no direct access to individual request logs. It contains no financial data; Cloudflare applies the same logging to every website on their network. See cloudflare.com/privacypolicy for details.
This site uses Umami, a privacy-respecting analytics tool. It records page views, referrer, browser type, operating system, and country (inferred from your IP address, which Umami never stores). Umami sets no cookies, collects no personal data, and never identifies or tracks individual visitors across sessions. You can block it with any privacy extension β the app works fine without it.
Frequently asked questions
These rights apply to users in the EU (GDPR β General Data Protection Regulation), UK (UK GDPR), and similar frameworks elsewhere. I honor them for everyone regardless of location. Because this app holds no financial data on its own servers, its design already satisfies most of these rights β but here's the full picture:
If you have questions about this privacy policy or how your data is handled, there are two ways to reach me:
This app is built and maintained by one person. I read everything. It's free, with no data selling β if it's useful to you, you can support its development.