Last updated: October 2026

W-2 Box 12 Codes Explained, From A to TT

Reporting Box 12 Code DD never makes health coverage taxable.

How Box 12 actually works on the form

Box 12 on your W-2 has four slots labeled 12a, 12b, 12c, and 12d. Those letters are not codes. The real code is the capital letter you see inside each slot, followed by a dollar amount.

If you run out of the four printed slots, the employer issues a second W-2 with more Box 12 lines.

The tradeoff of this compact design is that nothing on the form tells you whether the amount is taxable. You have to know the code. Code D lowers your federal wages in Box 1 but not your Social Security wages in Box 3.

Code DD lowers nothing. Code V raises Box 1. Same box, completely different tax treatment.

The full list of W-2 Box 12 codes, grouped by what they do

Rather than march A through TT in alphabetical order, it is easier to read the list by function. The IRS groups them loosely the same way in the General Instructions for Forms W-2 and W-3.

Uncollected tax codes (A, B, M, N)

Code A is uncollected Social Security tax on tips. Code B is uncollected Medicare tax on tips. These appear when a tipped worker did not have enough regular wages to cover FICA on reported tips.

Code M is uncollected Social Security tax on group-term life insurance over $50,000 for a former employee, and Code N is the Medicare half of the same thing.

Retirement plan deferral codes (D, E, F, G, H, S, Y)

Code D is traditional 401(k) elective deferrals. Code E covers 403(b) plans. Code F is a SEP elective deferral under 408(k)(6).

Code G is a governmental or nongovernmental 457(b) plan. Code H is the 501(c)(18)(D) plan. Code S is a SIMPLE IRA contribution. Code Y is the deferral amount under a 409A nonqualified plan, not the income side.

Roth contribution codes (AA, BB, EE)

Roth dollars get their own codes because the tax treatment flips. Code AA is a Roth 401(k) contribution. Code BB is Roth 403(b).

Code EE is Roth 457(b). None of these reduce Box 1 wages, because Roth money is taxed now.

Health and HSA codes (DD, W, FF, R)

Code DD is the cost of employer-sponsored health coverage, both the employer and employee share combined. Code W is the employer plus employee HSA contribution run through payroll. Code FF is a QSEHRA benefit.

Code R is an employer contribution to an Archer MSA. Code DD is informational only and does not change your tax. Code W is pretax and already excluded from Box 1.

The HSA ceiling for the 2025 tax year was $4,300 for self-only and $8,550 for family, plus a $1,000 catch up at age 55 or older. A Code W amount above those limits is an excess contribution. It needs to come out by the due date of your return, including extensions, or you owe a 6 percent excise tax every year it sits in the account.

Life insurance, parachute, and stock codes (C, K, V)

Code C is the taxable cost of group-term life insurance over $50,000. Code K is the 20 percent excise tax on excess golden parachute payments. Code V is income from the exercise of a nonstatutory stock option. Code V is already baked into Box 1 wages.

Special situation codes (J, L, P, Q, T, Z, GG, HH)

Code J is nontaxable third-party sick pay. Code L is a substantiated employee business expense reimbursement. Code P is excludable moving expense reimbursements paid directly to a member of the U.S. Armed Forces or intelligence community.

Code Q is nontaxable combat pay for military. Code T is employer-paid adoption benefits. Code Z is income taxed under 409A because a nonqualified plan failed the rules, and it carries a 20 percent penalty on top of regular tax. Codes GG and HH relate to qualified equity grants under section 83(i).

Medicaid waiver, Trump account, tip and overtime codes (II, TA, TP, TT)

Code II is Medicaid waiver payments excluded from gross income under Notice 2014-7. Code TA is employer contributions under a section 128 Trump account contribution program, paid to a Trump account of an employee or a dependent of an employee.

Code TP is the total amount of cash tips reported to the employer. Code TT is the total amount of qualified overtime compensation.

The Code DD trap

Code DD does not affect your refund, but it still has to be reported accurately. An employer that is required to report it and leaves it off has to file Form W-2c. Under section 6721, an incorrect Form W-2 due in 2026 that is not corrected by August 1 carries a $340 penalty. For an employer with 400 W-2s, that is $136,000 of exposure.

If an employer has fewer than 250 W-2s for the prior year, Code DD reporting is optional entirely. A 30 person shop that never files Code DD is not out of compliance. A 300 person shop that reports it wrong is.

Reporting is also optional for dental and vision plans that are not integrated into another group health plan, or that let participants decline the coverage or elect it for an additional premium.

How to read your own W-2 Box 12 in about two minutes

Pull out the form. Look at Box 1, federal wages, and write down the number. Now look at Box 3, Social Security wages. If Box 3 is larger than Box 1, the difference should roughly match your Code D, E, or S if you have one, because pretax 401(k) money lowers Box 1 but not Box 3.

Next, find Box 5, Medicare wages. If Box 5 is lower than Box 3, something is wrong and you should ask for a corrected W-2.

The comparison does not work on a clergy W-2, because boxes 3 and 5 are left blank for certain members of the clergy.

Finally, look at any Box 12 code you do not recognize. Cross-reference it against the list above.

What to do when a Box 12 code is actually wrong

First, do not call the IRS. Email your payroll contact with a specific question: "My Code DD shows $14,200 for 2025 coverage. The plan document shows the full cost at $11,400. Can you walk me through the difference?" A specific number forces a specific answer.

If the employer agrees the form is wrong, they file Form W-2c with the Social Security Administration and give you a copy. A W-2c is a correction form, not a replacement, and it shows the old figure and the new figure side by side.

If the employer refuses or stalls past the end of February, call the IRS at 800-829-1040 and report the missing or incorrect form. The IRS will contact the employer and send you Form 4852, a substitute W-2.

Codes that get confused with each other

Code D and Code AA trip people up because both are 401(k) money. Code D is the pretax side; Code AA is the Roth side. A plan that allows both means you could see both letters on one form.

Code W is the HSA, which is pretax and flows onto Form 8889. If your W-2 has a DD amount that matches your HSA contribution, the payroll system wrote the wrong letter.

Your next move before you file

Read every Box 12 entry on your W-2 right now, before the form gets filed into a drawer. If a number looks wrong, email payroll today, not April 10.

For the full context on year-end reporting, see the W-2 and reporting hub. For how these amounts interact with employer tax filings, the payroll tax hub is the next stop. To compare payroll software, see the payroll provider reviews and comparisons.

Frequently asked questions

Does a Code DD amount on my W-2 increase my taxes?

No. Code DD is informational reporting of your employer sponsored health plan cost and does not change Box 1 wages, withholding, or your refund.

What does Code W mean on a W-2?

Code W is the total HSA contribution made through payroll, both your pretax portion and your employer's portion combined. You carry the Code W amount to Form 8889 when you file, and the total must stay under the annual HSA limit or you owe a 6 percent excise tax on the excess.

I have both Code D and Code AA. Is that a mistake?

No, that is legal. Code D is pretax 401(k) and Code AA is Roth 401(k). Your combined total still has to stay under the annual 402(g) elective deferral limit.

What do I do if my W-2 Box 12 has no code but there is a dollar amount?

Every Box 12 amount must have a letter code next to it. Ask your employer to reissue the form with the correct letter.

This is not legal or financial advice. Consult a qualified professional for your specific situation.