Datasets:
jurisdiction string | jurisdiction_name string | level string | tax_year int64 | brackets string | top_rate float64 | basic_personal_amount int64 | basic_personal_amount_min int64 | bpa_phase_out_start float64 | bpa_phase_out_end float64 | credit_rate float64 | employment_amount int64 | worker_deduction_rate float64 | worker_deduction_max int64 | tax_reduction_kind string | tax_reduction_max int64 | tax_reduction_threshold int64 | tax_reduction_rate float64 | tax_reduction_source_url string | tax_reduction_verified_at string | surtax string | health_premium_max float64 | pension_plan string | ei_rate float64 | federal_abatement float64 | payroll_tax_rate float64 | payroll_tax_source_url string | payroll_tax_verified_at string | source_url string | verified_at string | calculator_url string |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CA | Canada | federal | 2,026 | 0-58523@0.14;58523-117045@0.205;117045-181440@0.26;181440-258482@0.29;258482-@0.33 | 0.33 | 16,452 | 14,829 | 181,440 | 258,482 | 0.14 | 1,501 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | null | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator |
AB | Alberta | province | 2,026 | 0-61200@0.08;61200-154259@0.1;154259-185111@0.12;185111-246813@0.13;246813-370220@0.14;370220-@0.15 | 0.15 | 22,769 | 22,769 | null | null | 0.08 | 0 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/alberta |
BC | British Columbia | province | 2,026 | 0-50363@0.056;50363-100728@0.077;100728-115648@0.105;115648-140430@0.1229;140430-190405@0.147;190405-265545@0.168;265545-@0.205 | 0.205 | 13,216 | 13,216 | null | null | 0.056 | 0 | 0 | 0 | phase_out | 690 | 25,570 | 0.0356 | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jul/t4127-jul-payroll-deductions-formulas.html | 2026-09-16 | null | null | cpp | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jul/t4127-jul-payroll-deductions-formulas.html | 2026-09-16 | https://worklets.ai/canada/paycheck-calculator/british-columbia |
MB | Manitoba | province | 2,026 | 0-47000@0.108;47000-100000@0.1275;100000-@0.174 | 0.174 | 15,780 | 0 | 200,000 | 400,000 | 0.108 | 0 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/manitoba |
NB | New Brunswick | province | 2,026 | 0-52333@0.094;52333-104666@0.14;104666-193861@0.16;193861-@0.195 | 0.195 | 13,664 | 13,664 | null | null | 0.094 | 0 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/new-brunswick |
NL | Newfoundland and Labrador | province | 2,026 | 0-44678@0.087;44678-89354@0.145;89354-159528@0.158;159528-223340@0.178;223340-285319@0.198;285319-570638@0.208;570638-1141275@0.213;1141275-@0.218 | 0.218 | 13,094 | 13,094 | null | null | 0.087 | 0 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jul/t4127-jul-payroll-deductions-formulas.html | 2026-09-16 | https://worklets.ai/canada/paycheck-calculator/newfoundland-and-labrador |
NS | Nova Scotia | province | 2,026 | 0-30995@0.0879;30995-61991@0.1495;61991-97417@0.1667;97417-157124@0.175;157124-@0.21 | 0.21 | 11,932 | 11,932 | null | null | 0.0879 | 0 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/nova-scotia |
NT | Northwest Territories | territory | 2,026 | 0-53003@0.059;53003-106009@0.086;106009-172346@0.122;172346-@0.1405 | 0.1405 | 18,198 | 18,198 | null | null | 0.059 | 0 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0.02 | https://www.fin.gov.nt.ca/en/services/payroll-tax/payroll-tax-employees | 2026-09-16 | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/northwest-territories |
NU | Nunavut | territory | 2,026 | 0-55801@0.04;55801-111602@0.07;111602-181439@0.09;181439-@0.115 | 0.115 | 19,659 | 19,659 | null | null | 0.04 | 0 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0.02 | https://www.gov.nu.ca/sites/default/files/documents/2021-10/PayrollTaxAct.pdf | 2026-09-16 | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/nunavut |
ON | Ontario | province | 2,026 | 0-53891@0.0505;53891-107785@0.0915;107785-150000@0.1116;150000-220000@0.1216;220000-@0.1316 | 0.1316 | 12,989 | 12,989 | null | null | 0.0505 | 0 | 0 | 0 | double_basic | 300 | 0 | 0 | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-16 | 5818@0.2;7446@0.36 | 900 | cpp | 0.0163 | 0 | 0 | null | null | https://www.ontario.ca/page/personal-income-tax | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/ontario |
PE | Prince Edward Island | province | 2,026 | 0-33928@0.095;33928-65820@0.1347;65820-106890@0.166;106890-142520@0.1762;142520-200000@0.19;200000-@0.2 | 0.2 | 15,000 | 15,000 | null | null | 0.095 | 0 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jul/t4127-jul-payroll-deductions-formulas.html | 2026-09-16 | https://worklets.ai/canada/paycheck-calculator/prince-edward-island |
QC | Quebec | province | 2,026 | 0-54345@0.14;54345-108680@0.19;108680-132245@0.24;132245-@0.2575 | 0.2575 | 18,952 | 18,952 | null | null | 0.14 | 0 | 0.06 | 1,450 | null | 0 | 0 | 0 | null | null | null | null | qpp | 0.013 | 0.165 | 0 | null | null | https://www.revenuquebec.ca/en/businesses/source-deductions-and-employer-contributions/employers-principal-changes-for-2026/ | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/quebec |
SK | Saskatchewan | province | 2,026 | 0-54532@0.105;54532-155805@0.125;155805-@0.145 | 0.145 | 20,381 | 20,381 | null | null | 0.105 | 0 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/saskatchewan |
YT | Yukon | territory | 2,026 | 0-58523@0.064;58523-117045@0.09;117045-181440@0.109;181440-500000@0.128;500000-@0.15 | 0.15 | 16,452 | 14,829 | 181,440 | 258,482 | 0.064 | 1,501 | 0 | 0 | null | 0 | 0 | 0 | null | null | null | null | cpp | 0.0163 | 0 | 0 | null | null | https://www.canada.ca/en/revenue-agency/services/forms-publications/payroll/t4127-payroll-deductions-formulas/t4127-jan.html | 2026-09-12 | https://worklets.ai/canada/paycheck-calculator/yukon |
Canadian Income Tax and Payroll Contribution Rates, 2026
Three tables covering what actually comes off a Canadian paycheck.
from datasets import load_dataset
tax = load_dataset("Worklets/canada-income-tax-rates", "income-tax") # 14 rows
contributions = load_dataset("Worklets/canada-income-tax-rates", "payroll-contributions") # 9 rows
credits = load_dataset("Worklets/canada-income-tax-rates", "tax-credits") # 65 rows
income-tax — the federal schedule plus all 13 provinces and territories:
the full bracket schedule, the basic personal amount and any high-income
phase-out, the rate non-refundable credits are valued at, Ontario's surtax and
Health Premium, Quebec's 16.5% federal abatement, and the 2% payroll tax the
Northwest Territories and Nunavut withhold outside the income tax system.
payroll-contributions — CPP, QPP, EI and QPIP, with each pension plan
split into its base and enhanced portions.
tax-credits — the TD1 personal amounts: age, pension income, disability,
spouse, and eligible dependant, federally and for twelve provinces and
territories.
They ship together because you need both. Brackets alone cannot tell you what comes off a paycheck: at an ordinary salary, CPP and EI are a larger deduction than provincial tax in most of the country.
Why the contributions table is split the way it is
Almost every published copy of these rates gives CPP as a single 5.95% line. It is two lines with different tax treatment, and a third above the first ceiling:
| Rate | Band | Treatment | |
|---|---|---|---|
| CPP base | 4.95% | $3,500–$74,600 | Non-refundable credit at the lowest rate |
| CPP enhanced | 1.00% | $3,500–$74,600 | Deducted from taxable income |
| CPP2 | 4.00% | $74,600–$85,000 | Deducted from taxable income |
Treating the whole 5.95% as one or the other is wrong by a few hundred dollars at most salaries. QPP works the same way at a higher rate — 5.30% base plus 1.00% enhanced for 2026, down from 6.4% combined in 2025.
Columns
income-tax carries jurisdiction, jurisdiction_name, level, tax_year,
brackets, top_rate, basic_personal_amount, basic_personal_amount_min,
bpa_phase_out_start, bpa_phase_out_end, credit_rate, employment_amount,
worker_deduction_rate, worker_deduction_max, tax_reduction_kind,
tax_reduction_max, tax_reduction_threshold, tax_reduction_rate,
tax_reduction_source_url, tax_reduction_verified_at, surtax,
health_premium_max, pension_plan, ei_rate, federal_abatement,
payroll_tax_rate, payroll_tax_source_url, payroll_tax_verified_at,
source_url, verified_at and calculator_url.
brackets is a flat string of min-max@rate segments, semicolon-separated,
with no max on the open-ended top bracket:
0-53891@0.0505;53891-107785@0.0915;...;220000-@0.1316. surtax uses the same
shape as threshold@rate pairs, and is levied on tax rather than on income.
payroll_tax_rate is 0 everywhere except NT and NU. It carries its own
payroll_tax_source_url and payroll_tax_verified_at because the rate comes
from the territory rather than the CRA — the T4127 does not contain it.
payroll-contributions carries contribution, label, tax_year,
applies_to, rate, earnings_floor, earnings_ceiling,
max_contribution, tax_treatment, notes, source_url and verified_at.
The TD1 credit table
Every employee files a federal TD1 and a provincial one, and the amounts on them are what a payroll system turns into its claim totals. They are published across fifteen separate PDF forms and nowhere as a table, which is the reason to publish one.
Two things a naive transcription gets wrong, both of which this table records rather than flattens:
Not every claim is a printed number. basis says which kind each row is:
basis |
Meaning | Where |
|---|---|---|
fixed |
A figure printed on the form | most |
basic_personal_amount_less_dependant_income |
"The difference between the amount at line 1 and the dependant's net income" — the claim is the basic personal amount, reduced dollar for dollar | AB, NT, NU (spouse), YT |
amount_less_dependant_income |
The same shape, against the province's own figure rather than its basic personal amount | MB |
Rows with a non-fixed basis leave amount empty. Publishing a number the
form does not state would be inventing one.
Quebec is absent. It does not use a TD1 — Revenu Québec runs its own TP-1015.3-V Source Deductions Return. An empty Quebec row would imply Quebec has no personal credits, which is false.
Two arithmetic identities hold across the table, and are asserted in the test suite so a mistyped digit fails the build rather than shipping:
amount / 0.15 + income_threshold == phase_out_endfor every age amount, in all twelve jurisdictions.amount + dependant_income_threshold == phase_out_endfor every fixed spouse and eligible dependant amount.
Not yet covered: the caregiver and infirm-dependant amounts, where two phase-out ends could not be read unambiguously off the forms.
One transcription note worth having on record: Saskatchewan's TD1 prints its
pension income amount as $1000, without the thousands separator — the only
figure across the fifteen forms that does, and enough to make a naive parser
drop it.
The Canada employment amount
employment_amount is $1,501 on the federal row and on Yukon, and 0
everywhere else. It is a non-refundable credit every employee receives on
employment income — no form, no election, no claim. The T4127 carries it as
K4: the lesser of the lowest rate times employment income and the lowest rate
times the amount, so above $1,501 of earnings it is worth a flat $210.14
off federal tax. Yukon is the only region that mirrors it, at its own 6.4%
lowest rate, for a further $96.06.
It is easy to omit precisely because nobody claims it, and omitting it overstates federal tax for every employed person in the country.
Quebec's equivalent is a deduction, not a credit:
worker_deduction_rate of 6% up to a worker_deduction_max of $1,450, taken
off Quebec taxable income. Both columns are 0 outside Quebec. Because it
moves the base rather than the tax, it is worth more in a higher bracket, and
it can pull income just over a bracket threshold back under it — at $110,000 it
is the difference between Quebec's 24% band and its 19% one.
The low-income tax reductions
Two provinces cut tax at source for low earners, and they do it with different
formulas, so tax_reduction_kind names which one applies and the remaining
columns carry that formula's constants.
kind |
Formula | |
|---|---|---|
| BC | phase_out |
max less rate of taxable income over threshold — $690, 3.56%, $25,570, reaching zero at $44,952 |
| ON | double_basic |
twice max ($300) less Ontario tax, capped at Ontario tax |
Both are capped at basic tax plus surtax and cannot create a refund.
Ontario's form has a consequence worth knowing: between roughly $20,200 and $26,000 of income each extra dollar is taxed once by the bracket and again by the reduction it removes, so the real marginal rate there is about double the 5.05% headline. And because the reduction is applied before the Ontario Health Premium rather than after, the premium is still payable by someone whose income tax the reduction has zeroed.
The territorial payroll taxes
The Northwest Territories and Nunavut each levy 2% on employment income, withheld from gross pay by the employer and remitted to the territory. It is the closest thing Canada has to a US-style local income tax, and it is the row most published copies of Canadian rates leave out entirely.
It is not income tax, and the difference is not cosmetic:
- It buys no credit and is not deducted from taxable income. The GNWT's own guidance says it "cannot be deducted from personal income tax."
- It does not appear on the T4, so it is invisible in the usual year-end paper trail.
- It has no exemption and no ceiling — it is a flat 2% from the first dollar.
- It follows where you work, not where you live. Territorial income tax depends on where you kept a residence on 31 December; the payroll tax applies to income earned working in the territory regardless of residence.
Both territories hand some of it back through a refundable cost-of-living credit claimed on the return, which is a filing-time matter and is not in this table.
Because it is territorial rather than federal, it is sourced separately: the GNWT's payroll tax guidance for employees, and Nunavut's consolidated Payroll Tax Act.
Provenance
Every row carries the date it was last checked against the authority's own document and a link to it — the part almost every other published copy of this data is missing. Sources are the CRA's T4127 Payroll Deductions Formulas (122nd edition, effective 1 January 2026), the CRA's CPP and EI rate pages, Revenu Québec's source-deduction parameters, and — for the two territorial payroll taxes, which the CRA does not administer — the territories' own publications.
Two corrections worth flagging.
The T4127 claim-code table carried a stale Ontario basic personal amount when this was compiled, so Ontario's figure comes from the province's own 2026 publication instead.
More importantly, 2026 had a mid-year edition. The 123rd edition of the T4127, effective 1 July 2026, superseded the January one for three provinces:
| January (122nd) | Annual 2026 (123rd) | |
|---|---|---|
| BC lowest rate | 5.06% | 5.60% |
| BC tax reduction | $575 | $690 |
| NL basic personal amount | $11,188 | $13,094 |
| PE top bracket | 19% over $142,520 | 20% over $200,000 |
Those three rows cite the July edition and carry a later verified_at than the
rest. Where a province changes rates mid-year the CRA publishes two figures —
the annual one for the tax year, and a prorated one used for the remaining pay
periods so the year totals correctly. These tables carry the annual figure.
The prorated ones (BC 6.14%, NL $15,000, PE 21%) are a payroll mechanic, not a
rate anyone is charged for the year, and each averages with the January figure
to give the annual one exactly.
What it does not cover
Provincial low-income reductions (the Ontario LIFT credit, the BC tax reduction), spousal and dependant credits, and non-refundable credits beyond the basic personal amount. It models employment income.
Maintained by Worklets. Download directly:
The calculator built on it: https://worklets.ai/canada/paycheck-calculator
- Downloads last month
- 28