Software Engineer Salary Research: Do This Before You Negotiate

May 28, 202610 min read
interview-prepcareercommunication
Software Engineer Salary Research: Do This Before You Negotiate
TL;DR
  • Total compensation is base plus annual bonus plus annual equity vesting. Never compare base to base across offers.
  • Levels.fyi is the right first stop, but filter by recency and check base salary separately. Stock appreciation inflates older equity figures.
  • H1B LCA filings are certified wage data from actual offer letters and the most reliable public source for base salary floors.
  • Level mapping matters more than the data itself. One rung off at a large company means researching the wrong range by $50-100K in TC.
  • RSU vesting schedules are not equivalent. Amazon's 5/15/40/40 back-loaded structure pays significantly less in years one and two than a linear vest.
  • Set your floor, target, and anchor before any recruiter call. The moment you name a number first, you create a ceiling.

Most software engineers walk into salary negotiations having checked one number on one website. That number is almost always wrong for their situation. They counter from a bad baseline, the recruiter says "I'll take that back to the team," and two years later they're still wondering why their coworker drives a nicer car.

Getting the research right takes about two hours. Two hours now versus leaving $30-80K on the table annually for the next four years. The math is not close.


Total Compensation Is the Unit. Base Salary Is Not.

Before you open any tool, know what you are comparing. Tech compensation has four real components.

Base salary is the fixed, predictable number. It hits your bank account every two weeks regardless of stock price or performance rating. It's also the number most people obsess over, and usually not the largest part of an offer. It's also the number every "software engineer salary" headline uses, which is why those headlines are almost always misleading.

Equity at public companies comes as Restricted Stock Units. An RSU grant vests over four years, typically with a one-year cliff. A $300,000 grant means $75,000 per year at your current stock price, not $300,000 in year one. At Amazon, the schedule is back-loaded: 5% in year one, 15% in year two, 40% in year three, 40% in year four. That is not the same as a straight 25/25/25/25 split even if the grant totals look identical on paper. It's a math problem your recruiter is not going to solve for you.

Annual bonus ranges from about 10% of base at entry level to 20-30% or higher at senior levels. Some companies pay it in cash, others in stock.

Sign-on bonus is a one-time payment that comes from a completely separate budget than base salary. This matters when you negotiate. More on that at the end.

When you compare two offers, compare total compensation annualized: base plus expected annual bonus plus annual equity vesting. Never compare base to base or equity grant to equity grant.

A company offering $200K base with no equity versus one offering $165K base with $80K in annual RSU vesting is not close. The second offer is $15,000 higher. This sounds obvious. Engineers miss it constantly, partly because the recruiter is often presenting only one of those numbers.


Start Your Salary Research With Levels.fyi, But Read It Carefully

Levels.fyi is the right first stop. It is built around total comp, not just base. It organizes data by company and level. For large companies with a few hundred submissions, it is the most accurate public resource available.

Use it to establish a range, not a single number. Look at the 25th, 50th, and 75th percentile for your specific company and level. The median is a baseline. Your target is around the 75th percentile.

Know the limitations. Levels.fyi has self-selection bias. People who negotiated strong offers are more likely to submit data. This pushes averages up slightly, which is useful because it shows what is achievable.

A subtler problem: some users report current total compensation rather than their original offer. At companies with strong stock appreciation, this inflates numbers significantly. An engineer at a company whose stock tripled might report $450K TC, but the original offer was $280K. Filter for recent submissions, and check the base salary column separately to sanity-check whether equity figures look plausible for a new hire.

For companies with fewer than 50 data points, treat Levels.fyi as directional only.

What engineers think salary research means vs. what it actually involves

Checking one Glassdoor number for two minutes vs. the actual process of cross-referencing Levels.fyi, H1B data, Blind, and salary bands.


Three Sources You Are Definitely Not Using

Levels.fyi gives you a benchmark. You need at least two more inputs to triangulate. Most people stop there. That is why most people leave money on the table.

H1B LCA filings are public record. Companies that hire workers on H-1B visas must file Labor Condition Applications with the Department of Labor, disclosing the offered wage. Tools like h1bdata.info index these filings by company and job title. The data covers base salary only, but it is certified wage data from actual offer letters, not self-reported. For large companies, this is the most reliable base salary floor you will find. It is dramatically underused, which means the engineers who use it have an edge the rest don't know about.

Blind (teamblind.com) is anonymous, verified by employer email, and active. Search for the company and role. You will find recent threads where engineers share specific offers, often with full breakdowns. The signal-to-noise ratio is lower than Levels.fyi, but the recency is often better. Someone posting last week about a Google L5 offer is more current than an aggregated median.

Job postings with salary ranges. Several states now require employers to post salary bands. If the role is in one of them, the posted range tells you the official band. The catch: these ranges are wide, covering everyone from a newly promoted engineer to a seasoned veteran. The bottom is where uninformed candidates land. Treat the posted range as confirmation that your Levels.fyi target is realistic, not as a ceiling.

Cross-reference all three. If Levels.fyi shows a median of $220K TC for an L5, H1B data shows base salaries between $150-180K, and the posting shows a range of $140-190K base, you have a coherent picture. You know the band, the realistic anchor, and what a strong outcome looks like. Now you can negotiate from a position of actual knowledge instead of vibes.


Nobody Told You Google L4 and L5 Aren't the Same Thing

You cannot compare compensation at different companies without accounting for levels. Titles are not standardized. This is not an accident.

Google L5 is a Senior Software Engineer. Meta E5 is also Senior. Amazon SDE III is L6. Microsoft Senior is approximately L62-L63. These map roughly to each other. Roughly is doing a lot of work in that sentence.

Amazon L6 has a particularly wide band. A newly promoted L6 maps to Google L5. A seasoned L6 maps closer to Google L6. Using the wrong anchor points you at the wrong data by $40-80K in total comp.

Levels.fyi has a level comparison tool. Use it. If you are coming from a startup with no formal leveling, match your scope of work and independence to the level descriptions before pulling numbers.

Getting the level wrong by one rung means researching the wrong range entirely. A Google L5 earns roughly $350-500K TC depending on tenure. A Google L4 earns roughly $230-320K. If you are being considered for L5 but pulling L4 data because the titles confused you, you are anchoring yourself $100K below where you should be. That is not a small error.

Ask the recruiter which level the role maps to early in the process. They will usually tell you. If they hedge, that is also useful information.


The RSU Math Your Recruiter Is Not Going to Walk You Through

Two offers with identical TC numbers are not the same if the equity structure differs. This is obvious in retrospect. It is completely invisible to you at the time you're making the decision, when you're excited and the number looks big on paper.

Public company RSUs are simpler. You get shares that vest on a schedule. You can sell them when they vest. The main variable is the vesting schedule. A back-loaded schedule (Amazon's 5/15/40/40) means you collect less in years one and two. If you plan to stay two years and are comparing offers, the linear vest is meaningfully more valuable. Do the arithmetic.

RSU vesting schedule comparison: linear 25/25/25/25 vs Amazon back-loaded 5/15/40/40

Equity refreshes matter for long-tenure decisions. Most large tech companies issue annual refresh grants. After two or three years, you have overlapping vesting tranches. Your steady-state annual equity income is higher than a new hire grant implies. Factor this in when comparing a new offer against your current total comp.

Private company stock options are a different animal. Options require you to pay the strike price to purchase shares. If the company is acquired or IPOs below your strike price, they are worthless. Do not weight them equally to public RSUs when comparing offers. Do not let a startup paper you into accepting 20% less guaranteed cash for equity that may never vest into anything real.


Set Your Numbers Before the First Call

By the time a recruiter calls to discuss compensation, you need three numbers ready.

Your floor is the minimum total comp you will accept. Calculate it in total comp terms: current comp plus the cost to switch (lost unvested equity, moving expenses, seniority loss). Below this, you walk. This number should be concrete before you pick up the phone.

Your target is around the 75th percentile of Levels.fyi for your role and level. This is the number you ask for if you have to name one first. It should feel slightly uncomfortable to say out loud. If it feels reasonable, it is probably not high enough. The discomfort is a calibration signal. You are your own worst recruiter.

Your anchor is 10-15% above your target. You do not open with this unless you have competing offers or exceptional leverage. Know it anyway.

Do not give any of these numbers to the recruiter before you have an offer in writing. When asked for expectations, say: "I am still learning about the scope and the full package. What is the band you are working with?" Most recruiters will tell you. If they push, give a range with the bottom at your target.

The moment you name a number first, you create a ceiling. The recruiter is not going to propose more than you asked for. This is not a negotiating tactic on their part. It is just how the mechanics work. Once you name it, the number exists. So do not name it first.


Sign-On Bonuses Come From a Different Budget (and That's Your Secret Weapon)

Once you have an offer, sign-on bonuses deserve separate research. Most Levels.fyi submissions include them. Look at what is common for your role and company.

Sign-ons matter because they come from a different budget than base salary. A recruiter who says "we cannot move on base" may have room to add $20-40K as a one-time sign-on without any escalation. That is not a trick. It is how internal budgeting works at most large companies. The full mechanics are in the compensation counter-offer guide.

The interview that earns you this negotiating seat is its own preparation problem. SpaceComplexity runs realistic voice-based mock interviews with rubric-based feedback so you can practice that part under pressure, before the real thing.


The Recap

  • Compare total comp: base plus expected annual bonus plus annual equity vesting. Nothing else.
  • Use Levels.fyi for the benchmark, but filter by recency and check the base salary column. Equity figures can be inflated by stock appreciation in older submissions.
  • Cross-reference with H1B LCA data for base salary floors, Blind for recent offers, and posted job ranges where available.
  • Match the level first. One rung of difference is $50-100K in TC at large companies. Ask the recruiter which level the role maps to.
  • Do the RSU math: compare vesting schedules, not grant sizes. Back-loaded schedules and private company options are not equal to linear public RSUs.
  • Set your floor, target, and anchor before the first compensation call. Do not name a number before you hear theirs.

Further Reading