DEV Community

Faishal
Faishal

Posted on

How much of a work bonus do you actually keep? The 22% withholding math

A bonus check almost always looks smaller than the number your boss quoted. That is not a mistake. It is withholding, and the math is simple enough to put in a function.

I added a bonus estimator to SalaryPayTools, a small site of free US pay calculators. Here is what it models and why.

The three pieces of a bonus check

For a separately paid cash bonus (US W-2, 2026), the estimate has three parts:

  1. Federal income tax withholding. Many employers use the optional flat percentage method for supplemental wages: 22% up to $1 million in the calendar year, 37% on the part above that.
  2. Social Security. 6.2% up to the 2026 taxable maximum of $184,500.
  3. Medicare. 1.45% on all covered wages, plus an extra 0.9% on wages above $200,000.

State and local withholding vary too much to guess, so the calculator takes an optional percentage from you instead of picking one from your location.

Worked example

A $10,000 bonus, $60,000 already earned this year, no state withholding:

Gross Federal 22% FICA 7.65% You receive
$1,000 $220 $76.50 $703.50
$5,000 $1,100 $382.50 $3,517.50
$10,000 $2,200 $765 $7,035
$20,000 $4,400 $1,530 $14,070

So a $10,000 bonus lands around $7,035, or 70.35%.

The core logic

const FEDERAL_RATE = 0.22;
const FEDERAL_HIGH_RATE = 0.37; // above $1M supplemental wages
const SS_RATE = 0.062;
const SS_CAP = 184_500;
const MEDICARE_RATE = 0.0145;

export function bonusAfterTax(
  bonus: number,
  priorSupplemental = 0,
  ssWagesYtd = 0,
  statePct = 0
) {
  const lowPart = Math.max(0, Math.min(bonus, 1_000_000 - priorSupplemental));
  const highPart = bonus - lowPart;
  const federal = lowPart * FEDERAL_RATE + highPart * FEDERAL_HIGH_RATE;
  const ssBase = Math.max(0, Math.min(bonus, SS_CAP - ssWagesYtd));
  const ss = ssBase * SS_RATE;
  const medicare = bonus * MEDICARE_RATE;
  const state = bonus * (statePct / 100);
  return bonus - federal - ss - medicare - state;
}
Enter fullscreen mode Exit fullscreen mode

(A simplified sketch of the idea, not the site's exact code. The additional 0.9% Medicare is left out here.)

The thing people get wrong

The "22% bonus tax" is a withholding procedure, not a special tax bracket. At filing time your bonus is taxed like the rest of your income, so you can be over-withheld or under-withheld. Some payroll systems also use the aggregate method, which this model does not cover.

Try it

You can play with the numbers here: Tax and Bonus Calculator. It is an estimate, not tax advice.

Top comments (0)