Inspect the Arithmetic — TFSA Contribution Room Calculator

Version 1.0
Last verified: August 2026

Transparent arithmetic is the operating system of this calculator.

This document publishes the formulae, eligibility rules, and assumptions used to estimate TFSA contribution room on the calculator page.

No opinions. No hidden assumptions. Just arithmetic.

Back to Calculator

Purpose

The calculator estimates available TFSA contribution room for a chosen as-of year from annual CRA dollar limits, lifetime contributions, and withdrawals. It is an estimate mode: it does not reconstruct a transaction-by-transaction history.

Definitions

Let:

Formulae

1. Eligibility start year

TFSA room begins in 2009, the first year of the program. The calculator suggests an eligibility start year from birth year as:

Y0 = max(2009, birth year + 18)

Rationale: CRA TFSA eligibility requires being a Canadian resident who is 18 or older. Room is not granted for years before 2009 or before age 18.

Limitation: The birth-year suggestion does not know residency history. If the person became a resident later, or was otherwise ineligible in the year they turned 18, the eligibility start year must be set manually.

2. Cumulative entitlement

Total entitlement = Σ L(y) for y = Y0 … Y

Rationale: Unused annual room carries forward. The estimate adds every published annual limit from the first eligible year through the as-of year.

Limitation: If a year is missing from the stored limit table, that year’s limit is treated as $0. Unused room from years before eligibility is not included.

3. Available room this year

RY = total entitlement − Clife + Wprior − CY

Rationale: Contributions reduce room. Withdrawals from prior years have already been added back on the following 1 January, so they increase the current-year estimate. Withdrawals in year Y are excluded from RY.

The January 1 add-back is the rule this formula encodes. CRA states that amounts withdrawn from a TFSA in a year are added back to contribution room at the beginning of the following year, not immediately.

4. Projected room next year

RY+1 = RY + L(Y + 1) + WY

Rationale: If no further contributions are made, next year’s room is this year’s remaining room, plus the next published annual limit, plus this year’s withdrawals (which add back on 1 January of Y + 1).

Limitation: If year Y + 1 is not in the stored limit table, L(Y + 1) = 0 and the projection omits that year’s new room.

5. Over-contribution amount

Over-contribution = max(0, −RY)

Negative available room is reported as an over-contribution amount. This page does not compute the 1% monthly tax on excess TFSA amounts. That arithmetic lives on the TFSA Over-Contribution Penalty Calculator methodology.

Assumptions

  1. Annual limits are the CRA dollar limits stored in /assets/data/tfsa_limits.json (2009 through the latest published year in that file).
  2. The user-entered lifetime contribution and withdrawal totals are complete and correctly dated (prior-year vs this-year).
  3. Eligibility is a single start year. Partial-year residency, multiple non-resident periods, and successor-holder or exempt-contribution rules are not modeled.
  4. Investment growth, transfers, and qualifying transfers do not change contribution room in this estimate.
  5. Internal arithmetic uses floating point. Display rounding is to the nearest dollar.
  6. This is an educational estimate. CRA My Account is the record that governs actual room.

Implementation notes

If any discrepancy is identified between this documentation and the calculator output, the arithmetic in the engine governs.

Sources and References