Everything here is arithmetic you could do yourself, done consistently. There is no model of the housing market and no forecast — you supply the assumptions and the calculator is honest about what follows from them. Where an assumption dominates the answer, it is shown as a range rather than a number.
Canadian fixed-rate mortgages are compounded semi-annually, not in advance. A quoted
rate of j therefore charges a periodic rate of
(1 + j/2)^(2/p) − 1 for p payments a year, not j/p. The
difference is small and consistent: about $20 a month on a $700,000 mortgage, and several thousand
dollars over the amortization. Variable-rate mortgages and HELOCs generally do compound monthly,
which is why the convention is an input.
Payment frequencies all derive from the monthly payment, the way lenders quote them. Non-accelerated schedules spread the same annual total over more dates. Accelerated schedules pay half or a quarter of the monthly amount 26 or 52 times — thirteen monthly payments a year rather than twelve. That extra payment is a prepayment, so the schedule is simulated to a zero balance rather than assumed to end when the stated amortization does.
Required below 20% down. Premiums follow the published CMHC schedule by loan-to-value — 0.60% up to 65%, then 1.70%, 2.40%, 2.80%, 3.10% and 4.00% at 95%, with 4.50% where the down payment is borrowed rather than saved, plus 0.20% for an amortization over 25 years. The premium is added to the loan; in Ontario, Quebec and Saskatchewan the provincial sales tax on it is not, and is payable in cash at closing.
The minimum down payment is 5% of the first $500,000 and 10% of the portion above it, and 20% at or above $1,500,000, where insurance is unavailable at any price. Insured amortizations are capped at 25 years, or 30 for first-time buyers and newly built homes. A scenario that breaks one of these is flagged rather than quietly calculated.
Marginal brackets for every province, plus the municipal tax in Toronto and Montreal, net of the first-time buyer rebates where they apply. Alberta, Saskatchewan and the territories charge registration fees instead, which are small and folded into closing costs.
The comparison is between two positions, each valued as if you liquidated it today.
The result is reported year by year because it changes sign. Buying starts behind — the land transfer tax and the commission both land inside a short stay — and the year it catches up is the number most people actually need.
Every input on both calculators is a query-string parameter, so the address bar always describes the scenario on screen and the link reproduces it exactly. Only values that differ from the defaults are written, which keeps links short and lets a link that never mentioned the interest rate pick up today's.
The same calculations are exposed as an MCP server, so Claude can run them directly — paste a listing, get the breakeven, and receive a link back to the page with everything filled in. It is the same code path: a figure quoted in chat and the figure on the page are the same function call.
Nothing, unless you sign in and ask for it. A scenario lives entirely in the URL — the price, the rent, the down payment, every input on the page — so there is no record of what anyone looked at, and closing the tab is the whole of deleting it.
Signing in adds exactly two things. The clients you have connected, so you can see them and cut one off. And, if you press Save as my defaults, the assumptions from the panel below the main inputs: your province, what you expect markets to return, whether your portfolio is taxed. The five inputs that lead a calculator are deliberately never saved — those are the scenario, and a page that resumed pricing the last house you looked at would be a page keeping a record of it.
Saved assumptions change only where an input starts. A link that names a value always wins, and a link you copy carries your assumptions explicitly, so the figures you send someone are the figures they see. You can forget them at any time, from the same panel.
Rates and thresholds are current as of 2026-09 and are kept in one file with their sources. If something here is out of date or wrong, it is a bug worth reporting.