W-2 Box 12 Codes Explained: What Every Code Means for Your Taxes
February 25, 2026
What Is W-2 Box 12?
Box 12 on your W-2 is a catch-all field that reports special types of compensation and benefits using letter codes. There are up to four Box 12 entries (labeled 12a, 12b, 12c, 12d), each with a letter code and dollar amount. Some codes reduce your taxable income; others are purely informational.
The Most Common W-2 Box 12 Codes
Code D — Traditional 401(k) Contributions
Pre-tax contributions to your employer's 401(k) plan. This amount was already excluded from Box 1 wages — you won't pay income tax on it now, but you will when you withdraw in retirement. The 2025 employee contribution limit is $23,500 (or $31,000 if age 50+).
Code E — 403(b) Contributions
Same as Code D but for 403(b) plans — used by schools, nonprofits, and hospitals instead of 401(k)s.
Code G — 457(b) Contributions
Deferrals to a government or non-profit deferred compensation plan. Like 401(k)/403(b), pre-tax and excluded from Box 1.
Code W — Employer HSA Contributions
Both employer and employee (payroll deduction) contributions to a Health Savings Account. This amount goes on Form 8889 and is deductible if you contributed directly; if it's employer-contributed, it's already tax-free.
Code DD — Employer-Sponsored Health Insurance Cost
The total cost of employer-sponsored health coverage (both employer and employee portions). This is informational only — it does not affect your taxes. It was added by the ACA for reporting purposes.
Code AA — Roth 401(k) Contributions
After-tax contributions to a Roth 401(k). Unlike Code D, Roth contributions are included in Box 1 wages — you already paid income tax on this money. Qualified withdrawals in retirement are tax-free.
Code BB — Roth 403(b) Contributions
Same as Code AA but for Roth 403(b) plans.
Code C — Taxable Cost of Group Life Insurance
If your employer provides group term life insurance coverage over $50,000, the cost of the excess coverage is taxable. This amount is already included in your Box 1 wages.
Code J — Non-Taxable Sick Pay
Sick pay paid by a third-party insurer that isn't subject to income tax. Informational — does not affect your return unless you also received taxable sick pay.
Code L — Substantiated Employee Business Expense Reimbursements
Reimbursements for business expenses under an accountable plan. These are non-taxable and not included in Box 1. Informational only.
Code P — Excludable Moving Expense Reimbursements
Moving expense reimbursements paid to active-duty military. Non-taxable for military only (civilian exclusion was eliminated in 2018).
Code R — Employer Contributions to Archer MSA
Contributions to a Medical Savings Account — an older predecessor to the HSA. Report on Form 8853.
Code S — SIMPLE IRA Contributions
Contributions to a SIMPLE IRA retirement plan. Pre-tax, excluded from Box 1.
Code T — Adoption Assistance
Employer-paid adoption assistance. May be partially excludable from income — report on Form 8839.
Code V — Income from Exercise of Non-Statutory Stock Options
Already included in Box 1, 3, and 5. This code is informational, helping you reconcile your W-2 with brokerage statements from stock option exercises.
Codes FF — Permitted Benefits Under Qualified Small Employer Health Reimbursement Arrangement (QSEHRA)
Amounts reimbursed under a QSEHRA — a health reimbursement arrangement for small employers. Informational; affects ACA marketplace premium tax credit eligibility.
Which Box 12 Codes Reduce Your Tax Bill?
These codes represent pre-tax benefits already excluded from Box 1 wages — they've already reduced your taxable income:
- D (401k), E (403b), G (457b), S (SIMPLE IRA) — retirement contributions
- W (HSA) — health savings
- AA (Roth 401k), BB (Roth 403b) — you paid tax on these already but get tax-free growth
Extract W-2 Box 12 Data Automatically
Upload your W-2 to w2extractor.com to extract all Box 12 codes and amounts alongside every other W-2 field — structured JSON output ready for tax prep or integration.