The reason for this is something called “anchoring”. The first number given in a negotiation always ends up being the starting point for that negotiation.
Let’s say you make 100k but you’re due for a COL bump in 2 months. If you tell them you make 100k, your offer will likely be 105k-110k. Not enough to justify moving.
Also consider that even if you get 115k-120k (these bumps are becoming less frequent), things like the health plan and 401k plan may not be apples to apples.
If your current 100k job has no out-of-pocket healthcare expenses and a 4% 401k match, but the new job has 10% coinsurance with 8k out-of-pocket maximum and no 401k match, you’ll need to earn roughly 118k to avoid a PAY CUT. (You gotta make 12k to pay 8k out of pocket and you’ll be missing out on 4K in pre-tax money).
Shitty healthcare plans with coinsurance and no 401k matches are ways to appear to give you a bump while real compensation is the same or less.
So never put out that number that you’re making now unless you want a failed negotiation. That company may very well be willing to pay 140k because they know their benefits suck. But they won’t knowingly give you a massive bump if they know your old salary. Because subconsciously they will anchor that number to your “worth” as determined by your nominal salary at your old company (and pre-annual increase).