How to set salary ranges for job postings: a method you can defend
On this page
- What the law asks the range to be
- Step 1: define the level before the number
- Step 2: check what you already pay
- Step 3: check the market
- Step 4: set the floor and the ceiling
- Step 5: check the spread against the rules and the reader
- Step 6: handle location
- Step 7: add the rest of the package
- Step 8: write down why
- Step 9: revisit before every repost
- Mistakes that make a range indefensible
- Quick reference
- Questions people ask
A posted salary range has two jobs. It has to attract the people you want, and it has to be a good-faith estimate of what you would actually pay, because that is the standard most pay transparency laws apply. Ranges fail when they are built backward from a number that "looks competitive," copied from the full pay band, or made so wide they say nothing. This page sets out a method that produces a range you can defend to a candidate, a hiring manager and a regulator, with the reasoning written down.
Not legal advice. Legal standards cited here were checked against the statutes and agency guidance linked in the text as of October 2026. The method is general practice, not a legal safe harbor.
What the law asks the range to be
The wording differs, but the idea is the same everywhere.
- California defines the pay scale as "a good faith estimate of the salary or hourly wage range that the employer reasonably expects to pay for the position upon hire" (Labor Code 432.3(m)).
- New York defines the range as the minimum and maximum "that the employer in good faith believes to be accurate at the time of the posting" (Labor Law 194-b).
- Colorado wants the range the employer genuinely expects to pay for that specific opening, not a company-wide band; see the Colorado guide.
- Open-ended ranges fail in every jurisdiction that has addressed them, from Colorado and Washington to British Columbia.
So the test is not "is this range attractive" but "would we really pay someone at the bottom, and would we really pay someone at the top, for this job, now."
Step 1: define the level before the number
Most range disputes are really level disputes. A hiring manager who says "senior engineer" and means "someone who can lead a team of five" is describing a different job from one who means "four years of experience." Before any pay data, agree in writing:
- the scope of decisions the person will make alone;
- who they report to and whether anyone reports to them;
- the minimum experience that would make someone hireable, and what "fully proficient" looks like; and
- where the person can work from.
Put these in the requisition. The job requisition form template has the fields, and intake meeting questions covers how to draw them out.
Step 2: check what you already pay
Internal data comes before market data. List everyone currently in the same job and level, with base pay, start date and location. Three things to look for:
- Incumbents below your planned floor. If you post a floor above what people already in the job earn, they will see it. Fix that first, or have a documented reason for the difference. See pay equity audit before posting ranges.
- Unexplained spread among incumbents. Large gaps between people doing the same work, without a reason such as tenure or performance, are an equal pay risk regardless of the posting.
- Recent offers. What did the last two or three hires in this job accept? If they all landed near the top of the old range, the market has moved.
Step 3: check the market
Use at least two sources and note which you used. Paid salary surveys and compensation vendors are the usual choice for larger employers. A free baseline is the Bureau of Labor Statistics Occupational Employment and Wage Statistics program, which publishes wage percentiles by occupation and metro area; it lags the market and its occupation codes are broad, so treat it as a floor check rather than a target. Postings by competitors are now a source too, since many of them must publish ranges, but they show asking ranges, not what was paid.
Pick a market position on purpose. "Around the median for this metro" and "top quartile because the role is hard to fill" are both defensible. "Whatever gets applicants" is not a position.
Step 4: set the floor and the ceiling
The floor is the least you would pay someone who meets the minimum bar from step 1. The ceiling is the most you would pay someone fully proficient on day one, within the budget for the req. Both ends must be real: if nobody would ever be offered the bottom number, it should not be the bottom.
An example, with illustrative figures: incumbents earn $82,000 to $94,000; recent hires accepted $88,000 and $91,000; market data puts the metro median near $90,000. A floor of $85,000 (minimum-bar hire) and a ceiling of $100,000 (fully proficient, top of budget) is a range the employer can explain from its own evidence. The spread is about 18% of the floor.
Step 5: check the spread against the rules and the reader
| Check | Rule or reason |
|---|---|
| Ontario | Posted range may not exceed $50,000 a year (not required at all above $200,000) |
| New Jersey | Proposed Department of Labor rule would treat a spread above 60% of the minimum as noncompliant |
| Everywhere else | No fixed number we found, but a very wide range invites the question whether it is a good-faith estimate; New York's guidance gives $1 to $1,000,000 as an obvious failure |
| The candidate | A range that spans two levels reads as "we haven't decided what this job is" |
If the range has to be wide because you would hire at two levels, consider posting two levels, each with its own range, rather than one wide range. Pay range vs pay band explains the difference between the band you manage pay with and the range you post.
Step 6: handle location
If you pay differently by location, set a range for each location or pay zone the role could be filled from, and post the ones that apply. Colorado expects the Colorado-facing range to be the one a Colorado hire would actually get. Pay transparency for remote jobs shows how to lay out zones in a posting.
Step 7: add the rest of the package
Many states pair the range with a general description of benefits and other compensation (Colorado, Washington, Maryland, Minnesota, New Jersey and Connecticut, among others). Write a short benefits line and a one-sentence bonus or commission description now, so the posting does not stall later. For commission-only roles, New York accepts a general statement that compensation is based on commission.
Step 8: write down why
One paragraph in the requisition: the level, the internal data, the market sources and date, the floor and ceiling and why. California requires employers to keep each employee's job title and wage rate history for the duration of employment plus three years. Your range rationale is not the same record, but it is what you will want if anyone asks how the posted number was set.
Step 9: revisit before every repost
A range is accurate "at the time of the posting." If a req has been open for four months, offers have been declined on pay, or the hiring manager has changed the level, re-run steps 2 to 5 before the ad goes back up. If you keep hiring above the top, the range was wrong; raise it rather than relying on exceptions.
Mistakes that make a range indefensible
- A ceiling nobody reaches. If no one has been hired in the top third of the range in two years, the ceiling is decoration.
- A floor below the current team. It tells the team the company would replace them for less, and it is a pay equity problem waiting to be found.
- Copying a competitor's posting. Their range reflects their levels and their budget, not yours.
- Setting it after the first offer. A range set to fit the candidate you already like is not an estimate made in good faith at the time of posting.
- Leaving recruiters to improvise. If recruiters do not know why the range is what it is, they cannot answer the candidate's first question about it; see how recruiters answer candidate salary questions.
Quick reference
SALARY RANGE WORKSHEET
Job and level: ______________________ Locations: ______________
Minimum bar for hire: ________________________________________
Fully proficient means: ______________________________________
Incumbents (same job/level): low $_____ high $_____ count ___
Recent hires accepted: $_____ $_____ $_____
Market sources (name, date): _________________ _______________
Market position chosen: ______________________________________
Floor: $_______ (why: _______________________________________)
Ceiling: $_____ (why: _______________________________________)
Spread: ____% of floor Ontario $50,000 cap OK? ___ NJ 60%? ___
Location zones and ranges: ___________________________________
Benefits line: _______________________________________________
Bonus/commission line: _______________________________________
Approved by: ____________ Date: ________ Re-check by: ________
Once the range is set, see salary range job posting examples for how to write it into the ad, and pay transparency laws by state for what each state requires alongside it.
Questions people ask
How wide should a salary range in a job posting be?
Wide enough to cover the candidates you would genuinely hire at the level described, and no wider. Legal limits exist in some places: Ontario caps posted ranges at $50,000 a year, and New Jersey's Department of Labor has proposed treating a spread over 60% of the minimum as noncompliant. Most of the other laws we cover set no number but require a good-faith estimate.
Should I post the full pay band or just the hiring range?
Usually the hiring range. Laws like California's define the posted pay scale as what the employer reasonably expects to pay for the position upon hire, and New York's as what the employer in good faith believes accurate at the time of posting. A full band that runs to pay levels only reached after years in the job overstates what a new hire would get.
Can I pay above the posted range?
Usually the law does not forbid it, and British Columbia's guidance says so expressly. But if you regularly hire above the top, the range was not a good-faith estimate, so update the posting instead.
Where do I get market data for a salary range?
Common sources are paid salary surveys, compensation data vendors and, for a free baseline, the US Bureau of Labor Statistics Occupational Employment and Wage Statistics program, which publishes wage percentiles by occupation and area. Check what your own incumbents earn before you rely on any external number.