Salary Negotiation & Accepting the Right Offer
Turn an Offer Into the Compensation You Deserve
Open interactive version (quiz + challenge)Real-world analogy
What is it?
Salary negotiation is the process of advocating for fair compensation after receiving a job offer. It involves researching market rates, understanding the full compensation package (base, bonus, equity, benefits), countering the initial offer strategically, and evaluating the total value of the opportunity. Most candidates leave $5,000-$20,000 on the table by not negotiating. Negotiation is expected, professional, and a skill that compounds over your entire career.
Real-world relevance
A study by Salary.com found that not negotiating your starting salary can cost you over $1 million in lifetime earnings due to the compounding effect of raises on a higher base. Hiring managers at companies like Google, Microsoft, and Amazon have publicly stated they EXPECT candidates to negotiate and budget for it. LinkedIn data shows that 39% of workers are afraid to negotiate, but 85% of those who do negotiate receive at least some improvement to the initial offer.
Key points
- Research Market Rates Before Everything — Know your worth before any conversation starts. Use Levels.fyi (best for tech), Glassdoor, LinkedIn Salary, Payscale, and Blind for real compensation data. Filter by: role, level, location, and company size. Have three numbers ready: your target (what you want), your floor (the minimum you will accept), and your reach (the best case scenario). Data is your leverage.
- Never Give a Number First — When asked 'What are your salary expectations?' deflect: 'I would love to understand the full scope of the role and the compensation range you have budgeted.' If they insist, give a range based on your research: 'Based on my research for this level and location, I would expect something in the range of $X to $Y. But I am flexible depending on the total compensation package.' Let them anchor first whenever possible.
- The Total Compensation Framework — Base salary is just one piece. Negotiate the full package: base salary, annual bonus (percentage and target), equity/RSUs (shares, vesting schedule, cliff), signing bonus, relocation assistance, remote work flexibility, PTO days, professional development budget, title, and start date. Sometimes a company cannot move on base but can add $20K in signing bonus or extra equity.
- The Counter-Offer Script — When you receive an offer: (1) Express genuine excitement — 'I am really thrilled about this opportunity.' (2) Ask for time — 'I would love a few days to review the full package.' (3) Come back with your counter: 'Based on my research and competing offers, I was hoping for a base closer to $X. Is there flexibility there?' Always negotiate via email so you have a paper trail and time to think.
- Negotiating Beyond Base Salary — If they say base salary is firm, negotiate these: signing bonus ($5K-30K is common), equity refresh schedule, annual bonus target, remote work days, PTO (ask for 5 extra days), professional development budget ($2K-5K/year), title upgrade (Senior vs Mid — affects future salary), equipment budget, or a guaranteed performance review at 6 months with a raise tied to it.
- Red Flags in Job Offers — Watch for: exploding offers (must decide in 24 hours — push back), below-market compensation with promises of future raises, vague equity terms, no written offer letter, unwillingness to negotiate anything, high turnover mentioned in interviews, unrealistic expectations for the role, and mandatory non-competes that limit your future options. Trust your gut — if it feels wrong, it probably is.
- Evaluating Multiple Offers — Create a scoring matrix: Rate each offer on a 1-10 scale across categories: base compensation, equity upside, team and manager quality, growth opportunities, work-life balance, technology stack, company trajectory, remote flexibility, and commute. Weight each category by importance to YOU. The highest-paying offer is not always the best offer.
- The Leverage of Competing Offers — Nothing strengthens your negotiation position like a competing offer. Even if you prefer Company A, telling them 'I have received a competitive offer from Company B at $X' creates urgency and justifies your counter. Never lie about having an offer you do not have — but do try to align your interview timelines so offers arrive close together.
- When and How to Accept — Once you have negotiated and are satisfied: (1) Get EVERYTHING in writing — offer letter with base, bonus, equity, start date, title, and any special terms. (2) Sign and return promptly. (3) Decline other offers graciously — 'I have decided to go in another direction, but I truly appreciate the opportunity and hope to cross paths again.' (4) Never renege on an accepted offer unless circumstances are extreme.
Code example
// === SALARY NEGOTIATION & OFFER EVALUATION TOOLKIT ===
// --- MARKET RESEARCH SOURCES ---
const researchSources = [
{ name: "Levels.fyi", url: "levels.fyi", best: "Tech company compensation data with level mapping" },
{ name: "Glassdoor", url: "glassdoor.com/Salaries", best: "Broad salary data + company reviews" },
{ name: "LinkedIn Salary", url: "linkedin.com/salary", best: "Role-based salary insights" },
{ name: "Payscale", url: "payscale.com", best: "Personalized salary reports" },
{ name: "Blind", url: "teamblind.com", best: "Anonymous verified compensation sharing" },
{ name: "Comprehensive.io", url: "comprehensive.io", best: "Startup equity calculator" },
];
// --- SALARY NEGOTIATION SCRIPTS ---
const negotiationScripts = {
deflectSalaryQuestion: `
"I would love to understand the full scope of the role
and the compensation range you have budgeted for this
position. I am flexible and want to make sure we find
a number that works for both of us."
If they insist:
"Based on my research on Levels.fyi and Glassdoor for
[Role] at [Level] in [Location], I would expect total
compensation in the range of \$[X] to \$[Y]. But I am
open to discussing the full package."
`,
receiveOffer: `
"Thank you so much — I am genuinely excited about this
opportunity and the team. I would love to take a couple
of days to review the full compensation package
carefully. Could you send over the complete details
in writing? I will get back to you by [date, 2-3 days]."
`,
counterOffer: `
"Thank you again for the offer — I am very excited about
joining [Company]. After reviewing the package and
considering [my research / competing offers / my current
compensation], I was hoping we could discuss adjusting
the base salary to \$[Target].
I believe this reflects my [N years of experience with
X technology] and the value I will bring to [specific
project or team goal]. Is there flexibility here?"
`,
ifBaseSalaryIsFirm: `
"I understand the base salary is firm. Would it be
possible to explore other parts of the package?
Specifically, I would love to discuss:
- A signing bonus of \$[amount]
- Additional equity/RSUs
- [5 extra PTO days / remote flexibility / title upgrade]
- A 6-month performance review with a defined raise
path tied to specific milestones"
`,
handleExplodingOffer: `
"I appreciate the timeline, but I want to make a
thoughtful decision that leads to a long-term commitment.
Could we extend the deadline to [date, 1 week out]? I
want to give your offer the careful consideration it
deserves rather than rushing into a decision."
`,
};
// --- OFFER COMPARISON TEMPLATE ---
const offerComparison = `
| Company A | Company B | Company C
========================|==============|==============|=============
Base Salary | \$___,___ | \$___,___ | \$___,___
Annual Bonus (target %) | ___% | ___% | ___%
Signing Bonus | \$___,___ | \$___,___ | \$___,___
Equity (annual value) | \$___,___ | \$___,___ | \$___,___
Vesting Schedule | ___________ | ___________ | ___________
Total Comp (Year 1) | \$___,___ | \$___,___ | \$___,___
Total Comp (Year 2-4) | \$___,___ | \$___,___ | \$___,___
------------------------|--------------|--------------|-----------
PTO Days | ___ | ___ | ___
Remote Policy | ___________ | ___________ | ___________
Health Insurance | ___________ | ___________ | ___________
401k Match | ___% | ___% | ___%
Dev Budget | \$_____ | \$_____ | \$_____
------------------------|--------------|--------------|-----------
SCORING (1-10):
Team & Manager | ___/10 | ___/10 | ___/10
Growth Opportunity | ___/10 | ___/10 | ___/10
Work-Life Balance | ___/10 | ___/10 | ___/10
Tech Stack Excitement | ___/10 | ___/10 | ___/10
Company Trajectory | ___/10 | ___/10 | ___/10
Commute / Location | ___/10 | ___/10 | ___/10
------------------------|--------------|--------------|-----------
TOTAL SCORE | ___/60 | ___/60 | ___/60
TOTAL COMP (Year 1) | \$___,___ | \$___,___ | \$___,___
DECISION | ___________ | ___________ | ___________
`;
// --- RED FLAGS CHECKLIST ---
const offerRedFlags = [
"Exploding offer (must decide in 24-48 hours)",
"No written offer letter — verbal only",
"Vague equity terms ('we will figure it out later')",
"Below-market base with promises of future raises",
"Unwillingness to negotiate ANY part of the package",
"Mandatory broad non-compete agreement",
"High turnover mentioned by interviewers",
"Manager seems disorganized or evasive about team",
"Unrealistic job scope for the level/compensation",
"The interview process felt rushed or chaotic",
"Glassdoor reviews consistently mention same problems",
"They pressure you to cancel other interviews",
];Line-by-line walkthrough
- 1. Comment header for the negotiation toolkit
- 2.
- 3. Comment: market research sources
- 4. Opening the sources array
- 5. Levels.fyi — best for tech compensation data
- 6. Glassdoor — broad salary data with company reviews
- 7. LinkedIn Salary — role-based insights
- 8. Payscale — personalized salary reports
- 9. Blind — anonymous verified compensation from real employees
- 10. Comprehensive.io — equity calculator for startups
- 11. Closing the sources array
- 12.
- 13. Comment: negotiation scripts
- 14. Opening the scripts object
- 15. Script for deflecting salary question
- 16. Opening the template
- 17. The primary deflection response
- 18. Express flexibility while redirecting to their range
- 19.
- 20. If-they-insist fallback
- 21. Reference specific research sources for credibility
- 22. Give a range based on data, not feelings
- 23. Express openness to full package discussion
- 24. Closing the template
- 25.
- 26. Script for receiving an offer
- 27. Opening the template
- 28. Express genuine excitement first
- 29. Ask for time to review (never decide on the spot)
- 30. Request written details
- 31. Set a specific follow-up date
- 32. Closing the template
- 33.
- 34. Script for counter-offering
- 35. Opening the template
- 36. Thank them and express excitement again
- 37. Reference research or competing offers as justification
- 38. State your target number clearly
- 39.
- 40. Connect your ask to the value you bring
- 41. Reference specific skills and experience
- 42. Ask about flexibility (open-ended, not demanding)
- 43. Closing the template
- 44.
- 45. Script for when base salary is firm
- 46. Opening the template
- 47. Acknowledge the constraint respectfully
- 48. Redirect to other package components
- 49.
- 50. Signing bonus ask
- 51. Additional equity ask
- 52. PTO, remote, or title ask
- 53. Performance-based raise path at 6 months
- 54. Closing the template
- 55.
- 56. Script for handling exploding offers
- 57. Opening the template
- 58. Acknowledge the timeline
- 59. Request extension with a reasonable reason
- 60. Frame it as wanting to make a committed decision
- 61. Closing the template
- 62. Closing the scripts object
- 63.
- 64. Comment: offer comparison template
- 65. Opening the comparison table
- 66.
- 67. Column headers for 3 companies
- 68. Separator line
- 69. Base salary row
- 70. Annual bonus row
- 71. Signing bonus row
- 72. Equity annual value row
- 73. Vesting schedule row
- 74. Year 1 total compensation
- 75. Years 2-4 total compensation
- 76. Separator
- 77. PTO days row
- 78. Remote policy row
- 79. Health insurance row
- 80. 401k match row
- 81. Professional development budget row
- 82. Separator
- 83.
- 84. Scoring section header (1-10 scale)
- 85. Team and manager quality
- 86. Growth opportunity
- 87. Work-life balance
- 88. Tech stack excitement
- 89. Company trajectory
- 90. Commute and location
- 91. Separator
- 92. Total score out of 60
- 93. Total compensation Year 1
- 94. Final decision row
- 95. Closing the template
- 96.
- 97. Comment: red flags checklist
- 98. Opening the red flags array
- 99. Exploding offers with unreasonable deadlines
- 100. No written documentation
- 101. Vague equity promises
- 102. Below-market pay with future promises
- 103. Complete unwillingness to negotiate
- 104. Broad non-compete clauses
- 105. High turnover signals
- 106. Disorganized or evasive management
- 107. Unrealistic scope for the compensation level
- 108. Rushed or chaotic interview process
- 109. Consistent negative Glassdoor reviews
- 110. Pressure to cancel other interviews
- 111. Closing the red flags array
Spot the bug
// Negotiation scenario review:
//
// Recruiter: "What are your salary expectations?"
//
// Candidate: "I currently make $90K so I would like at
// least $95K."
//
// What mistakes did the candidate make?Need a hint?
Show answer
Explain like I'm 5
Fun fact
Hands-on challenge
More resources
- Salary Negotiation Guide for Engineers (Levels.fyi)
- How to Negotiate Your Tech Salary (Rahul Pandey)
- Ten Rules for Negotiating a Job Offer (Haseeb Qureshi)
- How Not to Bomb Your Offer Negotiation (Haseeb Qureshi)
- Comprehensive Equity Calculator (Comprehensive.io)