The short version
- The calculator needs no account, and we don’t store the numbers you type unless you choose to email a plan or save a scenario. (They are in the page’s address, which, like any web address, reaches our host when the page loads.)
- We keep email addresses (for plans you ask for, messages you send and accounts), the loan numbers behind a plan or saved scenario, and a hashed copy of your IP address in counters that expire about a week after their last use. Our database holds your IP address itself only if you tick the box for occasional updates. Our hosts also keep request logs.
- We use Google Analytics 4 (in the EEA, the UK and Switzerland only after you accept) and Cloudflare Web Analytics, which uses no cookies. Google Analytics never receives your loan amounts or email address.
- We don’t sell your data or show ads.
- You can unsubscribe from updates with your mail app’s unsubscribe button or the link in the email, and delete your account yourself on the Account page.
What we collect
When you use the calculator
The calculation runs in your browser, and we don’t store what you type. It is kept in the page’s address (so a link you share reopens the same plan: anyone you send it to can see the numbers in it) and in this tab’s session storage, so a reload doesn’t lose your work. Like any web address, the page’s address reaches our host (Cloudflare) when the page loads, numbers included. If you ask for a sign-in link by email, this browser also keeps the address you were on, numbers included, until you use the link or clear site data. Your browser asks our servers for today’s rates too, which shows them your IP address and browser details.
When you email yourself a plan
You give us an email address and, behind the scenes, the numbers in your plan.
- We recompute the plan with today’s rates and email it to you with the CSV buy list. We keep a record of each plan sent: the numbers you entered (balance, rate, payment, final payment month, term and start month if given, cash, and your tax and return assumptions), the verdict and gain, the date of the rates, and the email provider’s status when we sent it.
- We add the address to our contact list with the date we first saw it, the date of the latest plan and a count of plans sent.
- If you tick “Send me occasional updates about rates and new features”, we record that you did, the wording you saw, whether the box was ticked for you or by you, when, and the IP address you were using. That IP address is kept only for an opt-in, as a record of the consent.
When you write to us
The contact form takes an optional name, your email address, a topic and your message. We store the message, forward it to our support inbox ([email protected], which is forwarded on to the owner’s mailbox) and email you a copy. Your address goes on the contact list with no marketing opt-in.
When you create an account
You can sign in with an email link, a password, Google or Apple. Firebase Authentication, a Google service, handles the sign-in and stores your email address and how you signed in. We never see your password. With Apple’s “hide my email” you give us Apple’s relay address instead of your own. We also keep a small profile (your email, your sign-in methods and when the account was created).
A contact record (the entry on our contact list for an email address) is tied to your account in two cases: when you’re signed in and a plan goes to your own verified address, and when you save your first scenario and a record for your verified address already exists.
Saved scenarios
A scenario holds its name, the loan numbers as you entered them, your cash and assumptions, and a summary of the result when you saved it (gain, ladder yield, payments covered, breakeven rate and the date of the rates). No other user can read or change your scenarios: our database rules refuse every other account, and a signed-out browser can’t see them. We can reach the database only to run and support the service.
Abuse protection
The email-plan and contact forms use Cloudflare Turnstile to tell people from bots. Turnstile runs a short check in your browser and Cloudflare may collect network and browser signals for it, under Cloudflare’s privacy policy. To limit how many plans and messages one person can send, our servers keep a counter for each day. Its name is a hash of your IP address (and, for plan emails, of the recipient address). Counters are deleted automatically about a week after their last use.
Server logs
Our hosts (Cloudflare and Google Cloud) keep request logs with IP addresses and browser details, as web hosts do, to deliver the site and keep it secure. Google Cloud keeps our function logs for 30 days by default.
Analytics
We measure how the site is used with two services.
- Google Analytics 4 counts page views by page path (plus campaign tags such as
utm_source, if the link you followed had them) and a short list of events: rates loaded, the form filled in far enough to calculate, results shown, CSV downloaded, plan emailed, account created (and by which method), scenario saved, message sent, and the deduction switch used. It never receives the calculator’s inputs, loan amounts, email addresses or message text. Google Analytics also collects your device and browser, approximate location, the page you came from (its path only) and a random client ID. In the EEA, the UK and Switzerland, and where we can’t tell where you are, it does not load at all until you click Accept on the banner. Elsewhere it loads with analytics storage on. All advertising signals are always off, and we don’t use Google Analytics for advertising. Where it is on, a “Cookie settings” link in the footer lets you change your choice. - Cloudflare Web Analytics reports page views and page speed. It is cookieless: it sets no cookies and uses no browser storage.
Cookies and browser storage
| What | Purpose | How long |
|---|---|---|
cc cookie | Your country, as our host reports it, so we know whether to ask for analytics consent and whether the updates box starts ticked | 24 hours |
Session storage (calculator, scroll-positions) | Your calculator inputs and your scroll positions in this tab | Until you close the tab |
dnpio.auth | Remembers that you’re signed in, so the page can restore your session | Until you sign out |
dnpio.emailForSignIn | Your email address and the page you were on, with the calculator numbers in its address, while you wait for an email sign-in link | Until you use the link or clear site data |
dnpio.pendingLink | A Google or Apple sign-in credential, held while we link it to your existing account | Up to 10 minutes |
dnpio.authRedirect | A marker that a sign-in redirect is under way | Until the sign-in comes back |
| Firebase sign-in data | Keeps you signed in; set by Firebase Authentication once you sign in | Until you sign out |
dnpio.consent | Your analytics choice (accepted or declined) and when you made it | Until you change it or clear site data |
Google Analytics cookies (_ga, _ga_…) | Tell visits apart for the analytics above; set only where Google Analytics is loaded | Set by Google, up to 2 years; deleted when you decline |
What we don’t collect
We never ask for your street address, your lender, a loan or account number, or a Social Security number, and we’d ask you not to put one in a message.
Why we use it
- To do what you ask: send the plan, answer your message, run your account and keep your saved scenarios.
- To keep the site working and safe: rate limits, bot checks, fixing errors.
- To send occasional updates, only to people who opted in.
- To understand how the site is used and improve it, through the analytics above.
If the law of your country asks for a legal basis: we rely on your request (the plan, the message, the account), on our interest in running and securing the site, and on your consent for updates and, where required, for analytics cookies. You can withdraw consent at any time.
How long we keep it
| Data | Kept |
|---|---|
| Rate-limit counters | About a week after the last use, then deleted automatically |
| Your account, profile and saved scenarios | Until you delete them or the account (see below) |
| Contact list entry, plan records and the opt-in and unsubscribe record | No automatic expiry. We keep them while they are needed to honour an unsubscribe and to show what you agreed to, and delete them when you ask |
| Contact messages | No automatic expiry. We keep them to answer you and as a record, and delete them when you ask |
| Server logs | Set by our hosts; Google Cloud keeps function logs for 30 days by default |
| Analytics | For the period set in our Google Analytics account. Cloudflare Web Analytics keeps its reports for the period Cloudflare sets |
Updates and unsubscribing
The plan you ask for is a one-off email you requested, not marketing. Anything beyond it goes only to people who ticked “Send me occasional updates about rates and new features”.
- Outside the EEA, the UK and Switzerland the box starts ticked, and you can untick it before sending. Inside them, or when we can’t tell where you are, it starts unticked.
- Every plan email has an unsubscribe link, which opens a page asking you to confirm, and your mail app’s own unsubscribe button works in one click. Either way you’re off the list.
- An unsubscribe stands. Typing your address into the form again, even with the box ticked, doesn’t turn updates back on.
- You can also write to us and we’ll take you off. Plan emails you ask for are still sent.
Your choices and deleting your data
Delete your account
Sign in, open the Account page and choose “Delete account”. It permanently deletes your profile and every saved scenario, and removes your sign-in. It can’t be undone.
Deleting your account doesn’t remove records about emails you asked for or messages you sent. Your address stays on our contact list, no longer linked to your account, because that entry is how we remember an unsubscribe. To have those records deleted too, write to [email protected]. Deleting the contact record also deletes the record of an unsubscribe, so if you have unsubscribed we keep a minimal “do not email” note unless you ask us to remove that too.
Other choices
- Ask us for a copy of your data, a correction, or deletion of anything we hold, including a contact list entry or a message, by writing to the address below.
- Change your analytics choice with “Cookie settings” in the footer where it is shown, or clear this site’s data in your browser.
- Depending on where you live, you may have more rights, such as to restrict or object to how we use your data, to take it with you, and to complain to your data protection authority. We’ll help with any of them.
Security and children
The site is served over HTTPS. No user other than the owner of a saved scenario can read it, and the contact list, plan records and messages can’t be reached from a browser at all, only by our own server code. We access the database only to run and support the service. No system is perfectly secure, but we limit what we keep so there is less to lose.
The site is for adults and isn’t aimed at children under 16. We don’t knowingly collect their data; if you think we have, write to us and we’ll delete it.
Changes to this policy
When what we collect or how we use it changes in a way that matters, we’ll update this page and say so on it. Your use of the site after a change means you’ve seen it.
Contact
Questions, requests and complaints about privacy go to [email protected], or use the contact form. We reply from the same address, usually within a few days. If you need our postal address for a request, ask and we’ll give it to you.
How the numbers are worked out is on the methodology page, and the rules for using the site are in the terms of use.