Inspect the Arithmetic — Canadian Income Tax Bracket Calculator

Version 1.0
Last verified: August 2026

Transparent arithmetic is the operating system of this calculator.

This document publishes the formulae, threshold-finding procedure, and assumptions used to estimate combined federal and provincial marginal and average income tax rates.

No opinions. No hidden assumptions. Just arithmetic.

Back to Calculator

Purpose

The calculator isolates the progressive ordinary-income schedule for a selected tax year and province or territory. It reports combined marginal rate, combined average rate, estimated federal and provincial income tax, distance to the next and previous rate-change thresholds, and the full combined schedule.

It does not maintain a separate tax-rate table. It reads the same year-specific parameter files as the Canada Personal Income Tax Calculator and runs that engine on ordinary taxable income.

Shared engine

Tax payable is computed by computePersonalTax in calculators/canada-income-tax/js/tax.engine.js. Bracket analysis lives in calculators/canada-income-tax/js/tax-thresholds.js. The personal-tax methodology page documents credits, bracket application, and payroll items:

Inspect the Arithmetic — Canada Personal Income Tax Calculator

Statutory federal and provincial/territorial bracket tables used by the engine are published here:

Canada Income Tax Brackets — Federal and Provincial

Definitions

Let:

Ordinary taxable income is passed to the engine as otherIncome, with employment income, self-employment income, dividends, capital gains, RRSP/FHSA deductions, and extra deductions set to zero. That keeps CPP/EI and the Canada Employment Amount from distorting the progressive income-tax schedule this page is meant to show.

Formulae

1. Estimated tax and after-tax income

Displayed federal tax, provincial tax, total income tax, and after-tax income are the rounded engine totals for input (Y, P, I), matching the personal income tax calculator’s dollar rounding.

After-tax income = I − T(I)

Payroll contributions (CPP, EI, QPP, QPIP) are not included in these totals. This page is income tax only.

2. Combined average tax rate

Average rate = T(I) / I   (0% if I = 0)

T(I) here is the rounded display total used on the calculator. Average rate is usually lower than marginal rate in a progressive system.

3. Combined marginal tax rate

The next-dollar rate is a finite difference on unrounded tax, so dollar rounding does not invent fake rate jumps:

Marginal rate(I) = [ Texact(I + Δ) − Texact(I) ] / Δ

Δ = $1. Texact is computePersonalTax with roundToDollar: false. Two rates are treated as different when they differ by more than 0.005 percentage points (5 × 10−5 as a decimal).

4. Combined rate-change thresholds

Candidate incomes are collected from the engine’s parameters, then kept only where the combined next-dollar rate actually changes:

Candidates within half a cent are merged. A candidate at income T is kept only if:

Marginal rate(T − Δ) differs from Marginal rate(T)

Convention: a verified threshold T is the income at which the next-dollar combined income-tax rate changes. The new rate applies to income at or above T.

5. Combined marginal-rate schedule

Bands are the half-open ranges between 0, the verified thresholds, and infinity. The rate shown for a band is the next-dollar rate sampled inside that band (mid-band, or $1,000 above an open-ended top band).

The “why the rate changes here” label is the reason attached to the threshold at the start of the band (federal bracket, provincial bracket, credit exhaustion, Ontario Health Premium, surtax, or a combination when several coincide).

6. Next and previous thresholds

Relative to taxable income I:

Distance below the next threshold is T − I. Additional tax and additional after-tax income compare the rounded engine result at I with the rounded result at T.

To sit immediately below the previous threshold, income is reduced to T − Δ. The reduction in taxable income, income tax, and after-tax income compares the current rounded result with that lower-income result.

Assumptions

  1. Input I is taxable income after deductions, not necessarily gross employment or business income.
  2. Income is ordinary (non-dividend, non-gain). Dividend gross-up and capital-gains inclusion are out of scope on this page.
  3. Supported years are the years present under calculators/canada-income-tax/data/.
  4. Quebec personal tax (QPP, QPIP, TP-1, federal Quebec abatement) is not form-verified in the shared engine. Figures follow the engine’s current Quebec parameters.
  5. Ontario Health Premium and surtaxes are included where the engine models them. They can change the combined next-dollar rate without matching a published statutory bracket line.
  6. This is an educational estimate. It is not a tax return.

Implementation notes

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

Sources and References