Paycheck Updated October 5, 2026 · 6 min read

W-2 Box 12 Codes and What They Did to Your Pay

Grouped by what each one did to your taxable wages rather than alphabetically. Why code DD is not a bill, and the ten-second check on code D worth doing before you file.

Black Android smartphone near ballpoint pen, tax withholding certificate on top of white folder

Box 12 is not one thing. It is up to four slots, each holding a letter code and an amount, and the codes have almost nothing to do with each other. Most lists explain them alphabetically, which is the least useful order. The only question that actually matters is whether the amount is already inside your Box 1 wages, because that decides whether you have paid tax on it.

There are only three things a Box 12 code can be doing

  • It was kept out of Box 1. The money reduced your taxable wages, which is why your Box 1 figure is lower than your salary. A 401(k) contribution is the common one.
  • It is already inside Box 1. You were taxed on it, often on a benefit you never saw as cash. Code C is the one that surprises people.
  • It changes nothing. Pure information, reported because the law says to report it. Code DD is this, and it causes more panic than everything else combined.

The codes, grouped by what they did to your pay

CodeWhat it reportsWhat it did to your taxable pay
DYour 401(k) contributionsKept out of Box 1, but not out of boxes 3 and 5
E403(b) contributionsSame as D
G457(b) deferred compensationSame as D
WHSA contributions, yours and your employer’sKept out of Box 1, and out of 3 and 5 too
FFSmall employer health reimbursement (QSEHRA)Kept out of Box 1
AARoth 401(k) contributionsAlready in Box 1, you paid tax on it
BBRoth 403(b) contributionsAlready in Box 1
CGroup-term life cover above $50,000Already in Box 1, and in 3 and 5
DDWhat your health cover costNothing. Informational only.
The codes you are most likely to see. Rarer ones exist for adoption benefits, armed forces moving costs and nonqualified deferred compensation, and your tax software will prompt you if one applies.

Code DD is not a bill

This is the one that makes people call payroll. You see a number like $18,000 next to DD, a figure far larger than anything you recognise, and it looks like income you are about to be taxed on.

You are not. The IRS could not be plainer about it: reporting the cost of health coverage on a W-2 “does not mean that the coverage is taxable”, and the value of your employer’s contribution “continues to be excludable from an employee’s income, and it is not taxable”. The reporting exists so you can see what your coverage costs, and nothing else. It does not go on your return, it does not change your refund, and no tax software will ask you to do anything with it.

The reason the number is so big is that it combines both halves: what you paid through payroll deductions and what your employer paid on your behalf, which is usually the larger share. For many people it is the clearest statement they will ever get of what their benefits package is actually worth.

Code D should match your last pay stub

Here is a check almost nobody does, and it takes ten seconds. The amount next to code D is everything you put into your 401(k) that year. That figure should be identical to the year-to-date 401(k) total on your final pay stub of the year.

If they disagree, one of them is wrong, and it is far easier to sort out in February than after you have filed. It is also worth confirming you did not go over the annual limit, which was $24,500 in 2026, because an excess deferral has to be corrected and the deadline is tight. The year-to-date column on your pay stub is where you check it.

One thing the D amount does not do is reduce boxes 3 and 5. Your 401(k) came out before income tax and not before Social Security and Medicare, which is why Box 1 is lower than Box 3 on most W-2s and why those two boxes rarely match. What a 401(k) actually costs your paycheck works through that gap, and Social Security and Medicare are the reason for it.

Code C is the one that quietly raised your tax

If your employer provides life insurance above $50,000 of cover, the value of the excess counts as income to you. It is called imputed income, and code C is where it lands.

What makes it feel unfair is that you never received the money. You received cover. But the amount is added into Box 1 and into boxes 3 and 5, so you paid income tax, Social Security and Medicare on a benefit that never reached your bank account. It usually appeared on your pay stubs during the year as a small addition to gross pay, offset by a deduction of the same size, which is payroll’s way of taxing something without paying it to you.

Nothing to do about it at filing time, since it is already counted. But if you are declining or reducing employer life cover, this is the line where the cost of keeping it shows up.

What you actually need to do with them

For most codes, nothing. The effect is already baked into Box 1, and entering the code into your tax software is bookkeeping rather than a calculation. Three are worth attention:

  • W feeds Form 8889, which is how HSA contributions are reconciled. Skip it and you can end up taxed on money that should not be.
  • AA, BB and D can qualify you for the saver’s credit at lower incomes, which is a credit people routinely miss.
  • DD needs nothing at all, whatever its size.

If it is Cafe 125 in Box 14 you are looking at, that is a different thing again: your health premiums, and the reason your Social Security wages are lower than your salary. The three wage boxes on a W-2 are three different numbers by design, each one gross minus a different set of deductions.

Frequently asked

What do the codes in Box 12 of my W-2 mean?

Each letter reports a different thing, and the useful question is what it did to your Box 1 wages. D is your 401(k) and was kept out of Box 1. C is life insurance cover above $50,000 and is already inside Box 1. DD is what your health coverage cost and changes nothing at all.

Is Box 12 code DD taxable?

No. The IRS states that reporting the cost of health coverage on a W-2 does not mean the coverage is taxable, and that the employer's contribution remains excludable from your income. It is informational only. It does not go on your return and it will not change your refund, however large the number looks.

Why is the DD amount so large?

Because it combines what you paid for health coverage through payroll with what your employer paid on your behalf, and the employer share is usually the bigger one. It is often the clearest statement you will get of what your benefits are actually worth.

Does Box 12 code D reduce my Social Security wages?

No. A 401(k) deferral comes out before income tax but not before Social Security and Medicare, so it lowers Box 1 while leaving boxes 3 and 5 alone. That is why those boxes usually do not match on a W-2, and it is not an error.

What is code C on my W-2?

The taxable value of employer-provided group-term life insurance above $50,000 of cover, often called imputed income. It is added into Box 1 and into boxes 3 and 5, so you paid income tax, Social Security and Medicare on a benefit you received as cover rather than as cash.

Do I have to enter Box 12 codes when I file?

Enter them all, but most do nothing beyond bookkeeping because their effect is already inside Box 1. Three matter: W feeds Form 8889 for your HSA, and D, AA and BB can qualify you for the saver's credit at lower incomes. DD needs nothing.