How to calculate salary range (step-by-step guide 2023)

Setting the right salary is crucial to provide the right incentives for candidates to join you company, but how do you determine a salary range.

How to calculate salary range (step-by-step guide 2023)

In today's competitive job market, attracting and retaining top talent is a priority for every hiring company. One of the most critical aspects of achieving this is offering an appropriate and competitive salary range for each job position. 

However, accurately calculating the right salary range can be complex and ambiguous and therefore challenging, as it involves considering numerous factors such as industry trends, location, company size, and the level of the role itself. 

Failing to calculate the right salary range can lead to a mismatch in expectations, resulting in potential hires seeking opportunities elsewhere, and current employees becoming dissatisfied or unproductive. 

There is now a second reason to get this right: in most of the US and, from 2026, across the EU, the range is a published legal artifact, not an internal note. You have to be able to defend the number you posted.

This guide walks through the factors that shape a range, then does the part most articles skip: the actual arithmetic. Midpoint, range spread, minimum and maximum, and where a specific new hire should land inside the band.

Steps in calculating a salary range

Calculating a salary range involves several steps and considerations. Steps 1 to 6 gather the inputs. Step 7 is where you build the range itself, and step 8 is where you place a person in it.

Step 1: Define the job position and responsibilities

Outline the key tasks, skills, and qualifications required for the position.

Example: For a Software Developer position, the responsibilities may include coding, debugging, and collaborating with team members to develop software solutions.

The important discipline here is that you are scoping a level, not a person. "Software Developer II, 3 to 5 years, ships features independently within an existing codebase" is a level. "Whoever we end up liking" is not, and it cannot be priced.

Step 2: Conduct market research

Analyze salary data for similar positions within your industry and region.

Use these sources to benchmark salaries:

  • Free, self-reported sources: Websites like Glassdoor, Payscale, Salary.com, and Levels.fyi for tech roles.
  • Government data: The US Bureau of Labor Statistics OEWS survey publishes free percentile wage data by occupation and metro area. It is slow to update but it is a real probability sample, not volunteers.
  • Paid survey data: Salary surveys from professional organizations, trade associations, or compensation consultancies (Mercer, WTW, Radford). This is what most companies over ~200 employees actually anchor to.
  • Posted ranges: Because of transparency laws, your competitors' job ads now contain their ranges. This is the fastest-moving benchmark available and it is free.

The caveat that matters: free self-reported data is a convenience sample. People with unusual pay are more motivated to submit it, titles are inconsistent between companies, and entries can be years old. Treat it as a sanity check on a paid survey or BLS figure, not as the anchor by itself.

Pick a percentile, not an "average." This is the step most people skip. Market data is a distribution, so you have to decide where in it you intend to sit. Roughly 90% of organizations anchor their midpoints to the 50th percentile (the median) of their chosen market. Paying at the 75th percentile is a deliberate strategy for hard-to-fill roles, and it costs real money. "The average salary is about $95,000" is not a decision. "Our midpoint is the 50th percentile of software engineers at 50 to 500-person tech companies in our metro, which is $95,000" is.

Example: For the Software Developer position, you research the median for the role in your region and find it is $95,000.

Step 3: Consider company size and budget

Assess how your company's size and budget may impact the salary range.

Smaller companies: May offer lower salaries but provide additional perks, equity, or growth opportunities.

Larger companies: May have resources to offer higher salaries and extensive benefits packages.

In practice this decision is the percentile choice from step 2. If you cannot fund the 50th percentile, you are not "paying market", you are choosing the 40th percentile and accepting a longer time-to-fill. That is a legitimate trade, but make it consciously and say so internally, because the alternative is a range you quietly breach on every offer.

Example: As a small tech startup, you might anchor slightly below the median and compensate with stock options and flexible work hours.

Step 4: Set the range for the job, not the candidate

This is where most guides, and most hiring teams, go wrong.

The instinct is to adjust the range up or down once you meet a candidate. Do not. A salary range belongs to a job and a level, not to a person. If you re-cut the band for each applicant, you do not have a range, you have a negotiation, and you have lost the one thing the range is for: paying two people who do the same job comparably.

Experience and qualifications still matter enormously. They just enter the calculation in two different places:

  • Between ranges: A Senior Software Developer requiring 5+ years is a different level with its own range, benchmarked separately. It is not the same range stretched upward.
  • Within a range: A specific candidate's experience determines where inside the band their offer sits. That is step 8.

This distinction is also what makes a posted range defensible. Under transparency rules you must post a good-faith range before you have met anyone, so a range that only exists after you have picked a favourite is not a range you can legally advertise.

Step 5: Factor in location

Consider the labor market and cost of living where the role will actually be performed.

Most structures handle this with geographic differentials: one national or headquarters range, multiplied by a location factor per market. That is cleaner than maintaining a separate hand-built structure per city.

For remote roles, decide the policy once and write it down: pay for the employee's location, or pay one national rate regardless of location. Both are defensible. Deciding case by case is not, and it is exactly how pay-equity problems get created.

Example: If your company is located in San Francisco, you would apply an upward differential to a national software developer range to reflect the local market.

Step 6: Include benefits and perks

Consider the value of benefits and perks when calculating the total compensation package.

  • Health insurance, retirement plans, and paid time off.
  • Equity, bonus, flexible work hours, remote work options, and professional development opportunities.

Example: Your company may offer a Software Developer a base salary of $80,000, with a comprehensive benefits package, making the total compensation worth $95,000.

One warning: benefits are a real part of the value you offer, but do not use them to talk yourself out of a competitive base. Benchmark base against base. Many transparency laws require you to post the salary or hourly range specifically, with benefits described separately, so a "total comp" number cannot be substituted for the range in your job ad.

Step 7: Actually build the range

You now have a midpoint. A range is built from two numbers: the midpoint (your market anchor) and the range spread (how wide the band is).

The formulas

  • Range spread = (maximum - minimum) / minimum
  • Midpoint = (minimum + maximum) / 2
  • Minimum = midpoint / (1 + spread / 2)
  • Maximum = minimum x (1 + spread)

Note that range spread is measured from the minimum, not from the midpoint. That one detail causes more errors than anything else in compensation math, and we will come back to it.

How wide should the band be?

Wider bands give longer runway before someone tops out, which suits roles where people grow for years. Narrow bands suit jobs that reach full proficiency quickly. Common conventions:

Job levelTypical range spreadWhy
Administrative / operational~30% to 40%Reaches full proficiency fast, less room to grow in-role
Professional / management~50%Years of skill growth inside the same level
Executive~50% to 65%+Wide performance variance, individually negotiated
Broadbands80% to 200%Few, very wide bands replacing many narrow grades

A worked example

Our Software Developer is a professional individual-contributor role, so we use a 50% spread around the $95,000 midpoint from step 2:

  • Minimum = $95,000 / (1 + 0.50 / 2) = $95,000 / 1.25 = $76,000
  • Maximum = $76,000 x (1 + 0.50) = $114,000

Check the work both ways. The midpoint of $76,000 and $114,000 is ($76,000 + $114,000) / 2 = $95,000, and the spread is ($114,000 - $76,000) / $76,000 = 50%. Both reconcile, so the band is $76,000 to $114,000.

The mistake almost everyone makes

A 50% range spread does not mean "midpoint plus or minus 25%".

If you take $95,000 and go plus or minus 25%, you get $71,250 to $118,750. Check that band's actual spread: ($118,750 - $71,250) / $71,250 = 66.7%. You wanted a 50% band and you built a 67% one, roughly a third wider than intended, which quietly raises your maximum by nearly $5,000 per employee and lets people sit well above market with nowhere to go.

The arithmetic that does work: a 50% spread is midpoint plus or minus 20% ($95,000 x 0.8 = $76,000, $95,000 x 1.2 = $114,000). A 40% spread is midpoint plus or minus roughly 16.7%. If you are ever unsure, skip the shortcut and use the formulas above, then reconcile the midpoint.

Step 8: Decide where in the range the offer lands

The range is the job. The offer is the person. Two standard measures tell you where someone sits:

  • Compa-ratio = salary / midpoint. A 1.00 means paid exactly at the market anchor for the level.
  • Range penetration = (salary - minimum) / (maximum - minimum). Expressed as a percentage of the band consumed.

The usual convention is that a new hire who is still learning the level lands in the lower part of the band (roughly a 0.80 to 0.95 compa-ratio), someone fully proficient sits near 1.00, and only sustained top performers push above it. Someone near the maximum has almost no room left, which is a promotion conversation, not a raise conversation.

Example: offering our developer $80,000 against the $76,000 to $114,000 band gives a compa-ratio of $80,000 / $95,000 = 0.84 and a range penetration of ($80,000 - $76,000) / ($114,000 - $76,000) = 10.5%. That is a defensible offer for someone new to the level, and it leaves genuine room to reward them for the next few years without a re-leveling.

If you find yourself wanting to offer above the maximum, that is information. Either the candidate is really the next level up, or your benchmark is stale. Breaking the band to win one candidate is how you end up with two people doing identical work at very different pay, which is precisely the exposure transparency laws are designed to surface.

Pay transparency: your range is now public

The biggest change to salary ranges in the last few years is not methodological, it is legal. The range you calculate is increasingly something you must publish and defend.

United States. More than a dozen states plus Washington D.C. now have pay transparency laws, and the details vary a lot. Colorado requires compensation ranges and a benefits description in job ads and applies to employers with as little as one employee. California and Illinois require pay scales in postings but only for employers with 15 or more employees. Others require disclosure only on request or before a compensation discussion. Most demand a good-faith estimate, meaning the range must reflect what you genuinely expect to pay, so a $60,000 to $250,000 posting to keep options open is not compliance, it is the thing the statutes exist to stop.

European Union. The EU Pay Transparency Directive (2023/970) had a transposition deadline of 7 June 2026, which the European Commission confirmed it would not move. It requires employers to tell applicants the initial pay level or range before the first interview, and it bans asking candidates for their salary history. Important practical nuance: a directive is not directly applicable, and most member states missed the deadline. Only a handful (including Italy, Slovakia, Lithuania and Malta) had implementing law in force on time, while Germany had not published a draft and France and the Netherlands are targeting 1 January 2027. So check the transposition status of each country you hire in rather than assuming a single EU-wide start date.

The operational consequence is the same everywhere: you cannot post a range you have not actually calculated. Steps 1 to 8 stop being good practice and start being the audit trail.

Keep the ranges alive

A salary structure is perishable. Benchmark it at least annually, because if your midpoints drift below market your range quietly becomes fiction and every offer breaks it.

For calibration, US salary increase budgets have settled at around 3.5% for 2026. Mercer's survey of more than 1,000 US organizations (fielded late October 2025) found employers planning 3.2% for merit and 3.5% for total increases, flat against 2025, and WorldatWork's Salary Budget Survey puts mean 2026 budgets at about 3.6%. Note that structure movement and increase budgets are not the same thing: your midpoints move with the market, not with your payroll budget, and in a hot niche the gap between the two is exactly the problem you need to see early.

Conclusion

A defensible salary range comes down to a short sequence: define the level, benchmark it against a stated percentile of a stated market, choose a spread that matches how much room people have to grow in the role, and then do the arithmetic properly (minimum = midpoint / (1 + spread / 2)) and reconcile it. Where an individual lands inside that band is a separate decision, measured with compa-ratio and range penetration.

Do that and you get three things at once: offers candidates accept, internal pay you can explain to the people already doing the job, and a number you can post in a job ad without flinching.