๐ช๐ต๐ฎ๐ ๐ ๐๐ฒ๐ฎ๐ฟ๐ป๐ฒ๐ฑ ๐๐๐ถ๐น๐ฑ๐ถ๐ป๐ด ๐ฎ๐ป ๐๐ณ๐๐ฒ๐ฟ-๐ง๐ฎ๐ ๐ฅ๐ฎ๐ถ๐๐ฒ ๐๐ฎ๐น๐ฐ๐๐น๐ฎ๐๐ผ๐ฟ
I got a raise recently. I multiplied my salary by 1.05 and expected a specific jump in my paycheck. I was wrong. The actual money in my bank account was much lower.
I built a TypeScript calculator to understand why. I found three main reasons why simple math fails you.
Your marginal tax rate matters most Most people assume a raise is taxed at their average rate. It is not. A raise sits on top of your existing income. This means it is taxed at your marginal rate, which is the highest bracket you hit.
Tax brackets are not switches A common myth says a raise can push you into a higher bracket and leave you with less money. This is false. Progressive tax brackets are bands. Only the dollars inside the new, higher band get taxed at the higher rate.
FICA creates hidden cliffs Social Security taxes stop after you hit a certain income cap. If your raise crosses this threshold, you keep more of it. A flat percentage estimate will always miss this detail.
One example: An $80,000 salary with a 5% raise. โข Gross raise: $4,000 โข Federal tax (22% marginal): -$880 โข FICA tax: -$306 โข Net raise: $2,814
You keep about 70% of the raise. The $4,000 headline never hits your account.
The most important number is your real raise. You must account for inflation to see if you are actually richer. If inflation is 3.3% and your raise is 5%, you are not 1.7% richer. The math is multiplicative.
The real math: ((1 + nominal_raise) / (1 + inflation)) - 1.
In this case, your real raise is 1.6%. If your raise is lower than inflation, you took a pay cut.
A technical lesson for developers: Never type the same number twice. I used to hardcode tax rates in my text. This caused errors. Now, I use one constants module. Every number on my site comes from the same code. If a number exists in two places, it is already wrong.
Source: https://dev.to/mark_b5f4ffdd8e7cd58/what-i-learned-building-an-after-tax-raise-calculator-485h