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.
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.
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
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.
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.
The next-dollar rate is a finite difference on unrounded tax, so dollar rounding does not invent fake rate jumps:
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:
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).
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.
calculators/canada-income-tax/data/.calculators/canada-income-tax-bracket/ui.jsanalyzeOrdinaryTaxPosition in calculators/canada-income-tax/js/tax-thresholds.js/calculators/canada-income-tax/dataIf any discrepancy is identified between this documentation and the calculator output, the arithmetic in the shared engine governs.