Three years ago, countering a job offer was almost a reflex, and companies budgeted for it. Now the same counter feels risky. The recruiter has backup candidates, layoffs are fresh in everyone's memory, and you may have spent four months getting to this one offer. So a lot of developers sign the first number they see.
That is usually an expensive mistake. The number you sign compounds through every raise, every bonus target, and every future offer that anchors on it. I run a career platform for engineers, which means I spend a lot of time talking to people mid-search and hearing how their offers played out. The pattern over the last few months is consistent: negotiation still works in a buyer's market. What changed is which asks work, and how you have to make them.
What changed, and what didn't
What changed is your fallback position. In 2021, if one company wouldn't move, three others would call you next week. Today most candidates have one live offer at a time, comp bands are enforced instead of bent, and recruiters are less afraid of losing you because the pipeline behind you is full.
What didn't change is the company's sunk cost. By the time you have a written offer, a hiring manager has read dozens of resumes, four to six engineers have spent hours interviewing you, and the recruiter has shepherded the whole thing for weeks. Restarting that process costs them a month or more, and the next candidate might fail the loop. You are not as replaceable at offer stage as you were at application stage. That asymmetry is your negotiating room.
The other thing that didn't change: polite, specific counters almost never get offers pulled. In all the offer stories engineers have shared with me, the rescinded ones trace back to hostility, bluffing, or dragging the process out for weeks. Asking clearly for more is not on that list.
Ask once, and put everything in the ask
In 2021 you could go back and forth three times and nobody blinked. In this market, multiple rounds of counters read as "this person will be difficult after they join." One consolidated, well-reasoned counter reads as "this person knows what they want."
So before you respond to the offer, decide on everything: base, sign-on bonus, equity, level, start date, remote days. Rank them. Then make one counter that includes your full ask, with the most important item first, and say explicitly what happens if they meet it. "If we can get there, I'll sign this week" is the single most persuasive sentence in a buyer's-market negotiation, because it converts your ask from an open-ended haggle into a closing condition.
One more timing rule: never negotiate before the offer exists. If a recruiter asks for your salary expectations in the first screen, deflect. "I'd rather anchor on the role first. Can you share the band for this position?" In a growing number of US states the band is already in the posting, so asking for it is unremarkable. Giving a number before you've demonstrated your value only caps your ceiling.
The levers that still move
Base salary is the stiffest lever right now. Bands exist, finance enforces them, and a recruiter who says "the band is capped" is usually telling the truth. Don't burn your one counter fighting a wall. Redirect the same dollar amount to levers with more give.
- Sign-on bonus. The most flexible lever I see. It's a one-time cost, it doesn't break the band, and it doesn't create a precedent the manager has to defend at review time. If base is capped, ask for the gap as a sign-on.
- Level. If your offer sits at the top of a band, ask whether you were evaluated for the next level. A level bump changes your entire comp trajectory, and hiring managers sometimes have more latitude on level than on dollars within a level.
- Equity and refreshers. Startups in particular often have more room in options than in cash. At larger companies, ask for a committed equity refresh review at 12 months instead of more shares today.
- The cheap stuff. Start date, extra PTO, a fixed number of remote days, conference budget. These cost the company little and are often granted just to close you. Put one or two in your counter so there's something easy to say yes to.
A script that works when you're not holding the cards
Deliver the counter by email after a warm verbal thank-you, so there's a written record and the recruiter can forward it internally without paraphrasing you. Here's the shape that works:
Thank you again for the offer. I'm excited about the team and the work
on [specific project], and I want to get to a yes.
Based on the scope of the role, I was targeting total compensation
closer to [your number]. I understand the base band is firm, so here
is what would get me to sign this week:
- A sign-on bonus of [amount]
- A committed equity refresh review at 12 months
- A start date of [date]
If we can land there, I'm ready to sign.
A few rules baked into that script. It opens with enthusiasm, because the recruiter needs to believe you'll actually accept before they'll fight for you internally. It gives a specific number instead of "is there any flexibility," because vague asks get vague answers. It concedes the base band, which builds credibility for the rest of the ask. And it ends with a closing condition, not an open question.
One thing the script must never contain: a competing offer you don't have. Recruiters at companies in the same market talk, and timelines are easy to verify. If you get caught bluffing, the offer is gone and so is your reputation with that recruiter. Mention other processes only if they're real, and only as loosely as "I'm in late stages elsewhere."
Your bargaining power is built before the offer
Every script above works better when it isn't a bluff. The engineers I've seen negotiate the largest improvements this year all had the same thing: a second offer, or at least a final-round loop, landing in the same two-week window. Nothing you say at offer stage substitutes for an actual alternative.
Which means the real negotiation happens weeks earlier, in how you run your search. Parallel offers come from parallel pipelines, and parallel pipelines come from applying early to a lot of well-matched roles with a resume tailored to each one, because recruiters work the first strong applications hardest and many postings are effectively decided before week two. I build Roleframe, so I'm biased, but this is exactly the problem it exists to solve: paste a posting, get your resume tailored to that job in seconds, and apply while the req is fresh, so you're running five processes instead of one when the offers start landing.
If you can't get parallel offers, you can still manufacture time. When an offer arrives while another loop is mid-flight, tell the second company. "I have an offer with a deadline of Friday, and you're my first choice. Can we accelerate?" Companies compress week-long processes into days for candidates they want.
Before you sign
Get the final terms in writing, including anything verbal like "we'll review your equity at 12 months." A promise that isn't in the offer letter or an email from the recruiter doesn't exist. Then sign, stop looking, and actually withdraw from your other processes. Reneging on a signed offer in a small industry has a long memory.
The short version: negotiate once, negotiate specifically, aim your ask at sign-on and level instead of base, and build alternatives before you need them. The market decides how much room you have. Whether you use that room is still up to you.
If you've negotiated an offer in the last year, I'd like to hear how it went, especially which levers moved and which didn't. Drop it in the comments.

Top comments (0)