Refolk
TeardownApplying at volume

The Posted Range Read, Eight Ranges Sorted to Send, Level-Check, or Skip

Turn any posted pay range into a new-hire landing zone, place your target in it, and sort the posting to Send, Level-Check, or Skip with a written reason.

22 min readLast reviewed November 4, 2026Read as Markdown

Key takeaways

  • A single professional pay band usually spreads 40 to 50% above its minimum, so a posted range wider than about 65% probably covers two adjacent levels, and one wider than about 73% is wider than two standard grades stacked together.
  • New hires usually land at a compa-ratio of 0.80 to 0.95 of the band midpoint, so compare your target with that landing zone, clipped at the posted minimum, and not with the whole posted range.
  • Always measure spread from the minimum: a two-level range that is 65% wide from its minimum reads as only 49% from its midpoint and passes for a single level.
  • When Glassdoor matched 147,568 listings, actual pay fell below the posted range in 22% of them and above it in only 11%, and more than 60% of salaries sat below the range median.
  • Refolk's index holds 182,960 US profiles titled Senior Software Engineer and 33,173 titled Staff, about 5.5 to 1, so a range that spans both levels will most likely be filled, and priced, at Senior.
  • If your target sits above a stacked range's lowest-level landing zone but inside its top-level zone, sort the posting to Level-Check: send it, then confirm the level in the first recruiter exchange.

This is the read to run on a week of ranged postings before you apply to any of them. It is for job seekers applying at volume who see a pay range on most postings, some of them several hundred percent wide. It gives you the arithmetic, the width thresholds, and a worked batch of eight ranges sorted to Send, Level-Check, or Skip, including three I got wrong on the first pass.

Three terms come up throughout:

  • Spread: (max - min) / min. This is how wide the range is, as a percentage of its bottom.
  • Compa-ratio: a pay figure divided by the range midpoint. 1.00 means exactly at the midpoint.
  • Range penetration: (pay - min) / (max - min). This is how far up the range a figure sits, from 0% at the minimum to 100% at the maximum.

What does a posted salary range actually tell you?

A posted range is a legal disclosure. It is not a forecast of your offer. Depending on the jurisdiction and the employer, it can describe hiring pay for one level, a whole pay band, several levels stacked together, or one level priced across many locations. Work out which one you are looking at before you compare your number to it.

The legal wording sets the limits of what a range can mean:

  • 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." This is the only definition I found that ties the posted range to hiring pay rather than to the full band.
  • Colorado allows the lowest to the highest pay the employer in good faith believes it might pay for the particular job. Open-ended ends such as "30,000 and up" or "up to $60,000" are not allowed.
  • New York State guidance, as quoted in Harvard Business Review, says a range should reflect "a single opportunity and single geographic region."
  • The EU Pay Transparency Directive (2023/970), Article 5, gives applicants a right to the initial pay or its range, either in the job advert, before the interview, or some other way. Italy and Latvia go further and require pay in the advert itself.

So two ranges that look the same can mean different things. A California range points at what new hires get. A Colorado range can legally include pay that only a long-serving employee would reach.

How accurate are posted ranges? Glassdoor matched 147,568 job listings against what employees reported earning:

  • In 67% of listings, reported salaries fell inside the posted range.
  • In 22%, they fell below it.
  • In 11%, they fell above it.
  • More than 60% of salaries for a given job sat below the median of the pay range.

Ranges in states with transparency laws were about as accurate as ranges elsewhere.

These figures come with two cautions. First, they describe current employees, including people who have had raises since they were hired, so new-hire offers probably sit even lower. Second, I found no published dataset of new-hire offers measured against posted ranges. The landing zone below is a compensation-practice convention, not a measured offer distribution.

What sits inside a posted range

  1. Posted range
    The legal disclosure; it may stack several levels or locations
  2. One level in one location
    A single band, usually 40 to 60% wide
  3. Current employees' pay
    More than 60% sits below the range median
  4. New-hire landing zone
    0.80 to 0.95 of the level's midpoint, clipped at the min
Your offer is set by the innermost layer, the new-hire landing zone, not by the posted range around it.

How wide is a single-level salary range?

For professional roles, one level's pay band usually spreads 40 to 50% above its minimum. For senior professional and managerial roles it is 50 to 60%. Once a posted range goes past about 65%, it probably covers two adjacent levels. Past about 73%, it is wider than two standard levels can explain.

Compensation practice sources give these band widths by seniority:

  • Entry and support grades: 30 to 40%
  • Professional grades: 40 to 50%
  • Managerial and senior professional: 50 to 60%
  • Executive: 60% and up

Here is how real posted ranges compare with those norms. Spreads are computed from the minimum.

RangeMinMaxSpread
Professional band norm--40 to 50%
Glassdoor average posting$61,000about $76,000about 25%
Cornell study example$87,000$113,00029.9%
Cornell open-rank faculty post$83,200$357,300329%
Tesla senior software engineer$83,000$418,000404%

Most postings are narrow. A practitioner analysis of 444 postings from 241 employers found a typical accountant range of 25%. The last two rows are where people misread. No published source sets a firm width at which a posting "spans two levels". The closest is one practitioner article, which describes ranges of 60% and up as "often several levels or locations stacked together." The thresholds I use come from how pay bands overlap.

Neighbouring levels overlap a lot. For professional roles, midpoints usually step up 8 to 15% per grade, and a 10% step with a 50% spread gives about 80% overlap between neighbouring grades. So stacking a second grade on top adds less width than you would expect:

Midpoint step per grade1 grade2 grades3 grades
10%50%65.0%81.5%
12.5%50%68.8%89.8%
15%50%72.5%98.4%

Each grade is set at a 50% spread, so its minimum is 0.8 x midpoint and its maximum is 1.2 x midpoint. All results are derived. The 2-grade column is the basis for the 65 to 73% threshold. A 70% range is ambiguous, not absurd. A 300% range cannot be one level, or even three. It has to be several levels or locations stacked together.

These are the width tags I put on each row:

Spread (from min)TagWhat it tells you
50% or underSingleOne standard band fits, but it could still be a location-weighted figure
50 to 65%GreySingle only for senior or managerial roles
65 to 73%Two levelsMatches two adjacent grades stacked
Over 73%StackedMore than two grades, several locations, or a broadband

There is one real exception. Some employers use broadband structures, which run spreads of 80 to 150% where traditional grades run 40 to 60%. A broadband is one band by design. For your read, it still behaves like stacked levels, because a new hire lands near its bottom.

Where will my offer land in the salary range?

A new hire who is still learning the level usually lands at a compa-ratio of 0.80 to 0.95, the lower part of the band. Work out that landing zone for each posting, raise its low end to the posted minimum if needed, and compare your target with the zone, not with the whole range.

Practice examples say the same thing in penetration terms: new hires should sit within the first 25% of the range. One HR guide labels 0 to 25% penetration "New to the role."

The formulas:

  • Midpoint = (min + max) / 2
  • Landing zone = 0.80 x midpoint to 0.95 x midpoint. If the low end falls below the posted min, raise it to the min.
  • Penetration of your target = (target - min) / (max - min)
  • Compa-ratio of your target = target / midpoint

The width of the range changes how far into it a new hire reaches. In a 50% band, the zone covers 0 to 37.5% penetration. In a 30% band it covers only about 0 to 31%, because 0.80 x midpoint falls below the minimum and gets cut off. A narrow range gives you less room, not just smaller numbers.

Zones for a stacked range

When a range is tagged two levels or stacked, its combined midpoint does not belong to any real level, so a zone built from it misleads. Compute two zones instead, and assume each level is a standard 50% band:

  • Lowest-level zone: posted min to 1.19 x posted min. The bottom band starts at the min, its midpoint is 1.25 x min, and 0.95 of that is about 1.19 x min.
  • Top-level zone: 0.67 x posted max to 0.79 x posted max. The top band ends at the max and its midpoint is max / 1.2.

If your target sits in the lowest-level zone, even the bottom level can pay you. If it sits above that zone but no higher than the top-level zone, the employer can only pay you by hiring you at a higher level. Level-Check exists for exactly that case.

Posted range read sheet, one row per posting
A  Posting (company, title, link)
B  Location text, copied word for word
C  Level words in the title (count them)
D  Min, annual base
E  Max, annual base
F  Spread: =(E2-D2)/D2
G  Midpoint: =(D2+E2)/2
H  Width tag: =IF(F2<=0.5,"single",IF(F2<=0.65,"grey",IF(F2<=0.73,"two levels","stacked")))
I  Zone low: =MAX(D2,0.8*G2)
J  Zone high: =0.95*G2
K  Lowest-level zone high: =1.19*D2
L  Top-level zone low: =0.67*E2
M  Top-level zone high: =0.79*E2
N  Target base
O  Penetration: =(N2-D2)/(E2-D2)
P  Compa-ratio: =N2/G2
Q  Sort: Send, Level-Check, or Skip
R  Reason, one sentence

Paste the column names into row 1, put your target in column N, and fill the formulas down from row 2.

The worked batch: eight ranges against a $100,000 target

Against a $100,000 base target, the eight ranges sorted to one Send, three Skips, and four Level-Checks. I got three of those calls wrong on the first pass, and the corrections are the useful part.

Ranges A, B, F and G are published ranges. I built the other four from the band arithmetic above so that every fork shows up once:

  • C is a 50% band with a $100,000 midpoint.
  • H is the same band one 10% grade higher.
  • D is C and H stacked into one posted range, which is what a two-level posting looks like.
  • E stacks C with a grade 15% higher.

The $100,000 target is a round number that makes the arithmetic easy to check. Replace it with yours.

Single-level rows

Range (spread)Landing zoneTarget sits atSort
A: $61,000 to $76,000 (24.6%)$61,000 to $65,075Above the maxSkip
B: $87,000 to $113,000 (29.9%)$87,000 to $95,00050% pen, compa 1.00Skip
C: $80,000 to $120,000 (50%)$80,000 to $95,00050% pen, compa 1.00Skip
H: $88,000 to $132,000 (50%)$88,000 to $104,50027.3% pen, compa 0.91Send

Stacked rows

Range (spread)Lowest-level zoneTop-level zoneSort
D: $80,000 to $132,000 (65%)$80,000 to $95,000$88,000 to $104,500Level-Check
E: $80,000 to $138,000 (72.5%)$80,000 to $95,000$92,000 to $109,250Level-Check
F: $83,200 to $357,300 (329%)$83,200 to $98,800Far above targetLevel-Check
G: $83,000 to $418,000 (404%)$83,000 to about $98,600Far above targetLevel-Check

Range A answers the question "should I apply if the salary range is below my target." The target is $24,000 above the posted max, a compa-ratio of 1.46. Glassdoor found pay above the posted range in only 11% of listings, and that figure includes long-serving staff, not just new hires. Skip. Reason: "max $76,000, target $100,000."

H is the clean Send. The target sits at 27.3% penetration and a compa-ratio of 0.91, inside the zone. Reason: "single level, target mid-zone."

Wrong turn 1: Range B was inside the range but outside the zone

On the first pass I tagged B as Send. My salary expectation was inside the posted range, at 50% penetration. That was the wrong test. The landing zone runs from $87,000 (0.80 x midpoint is $80,000, raised to the min) up to $95,000. My target needed a compa-ratio of 1.00, which is above where new hires land, on a range where more than 60% of current employees earn below the median. Skip. Reason: "single level, zone tops at $95,000."

C sharpens the point. It has the same midpoint, the same target, and the same 50% penetration, and it is also a Skip. C's zone reaches 37.5% penetration and B's only about 31%, but neither reaches 50%.

One fork stays open on B. A 30% range is not automatically single-level. If B's posting had included location, tier, or zone wording, I would re-tag it as geo and ask which tier my location falls in before deciding.

Wrong turn 2: Range D passed as single-level because I used the wrong base

I first measured D's width from the midpoint: $52,000 / $106,000 = 49%. That made it single-level. The combined zone came out at $84,800 to $100,700, the target was inside it, so I sorted it Send. Every step was right except the base. Measured from the minimum, D is 65%, which is exactly two 10%-step grades stacked. The combined midpoint of $106,000 belongs to neither level. Recomputed, the lowest-level zone tops out at $95,000, and the target only fits the top level's zone. Level-Check. Reason: "two levels; $100,000 needs the upper one."

E follows the same pattern. It is 72.5% from the minimum and 53% from the midpoint, so the wrong base would have tagged it grey. Level-Check.

Wrong turn 3: Range G looked like room to negotiate

A range of $83,000 to $418,000 looks like an employer willing to pay a lot. My first pass put the target at 5% penetration with a compa-ratio of 0.40 and called it an easy Send with a high ask. But at 404%, G is wider than three standard grades stacked, which reach 98.4% at most. The top belongs to a different job: a higher level, a higher-cost location, or both. The only zone that tells you anything is the bottom one, and it tops out at about $98,600, just under the target. Level-Check.

F, Cornell ILR's own open-rank faculty posting, settles itself if you read the title. It covers the Assistant, Associate and Full professor ranks in one range. Three level words mean three levels. Level-Check. Reason: "three ranks; $100,000 sits above the Assistant zone."

Who a stacked range usually hires

5.5
US Senior Software Engineers per Staff Software Engineer in Refolk's index
182,960 US profiles are titled Senior and 33,173 are titled Staff, so a range covering both levels is most likely filled at Senior.
TitleCountryProfilesRatio to US Senior
Senior SWEUS182,9601.00
Staff SWEUS33,1730.18
Senior SWEGermany15,3230.084

This is why a stacked range goes to Level-Check rather than Send. The most likely outcome is a hire at the lower level, with an offer in the lowest-level zone. The 11.9x gap between the US and Germany is a reminder to run this ratio for your own market, not borrow the US one. Before the recruiter call, Refolk scores how well your history fits each posting, so you can see whether your record reads as the lower level or the upper one before you argue for the upper one.

The Posted Range Read, step by step

The read takes eight steps. The timed ones add up to about six minutes per posting once the sheet is set up. Run each step down the whole batch rather than finishing one posting at a time, so the width tags stay consistent.

The Posted Range Read

  1. Normalise each posting to annual base
    Record min, max, location text and level words as annual base pay for one location, about 2 minutes each. Done when every row has a min, a max and a location.
  2. Compute spread and midpoint
    Spread = (max - min) / min, always divided by the minimum. Midpoint = (min + max) / 2.
  3. Classify the width
    Tag 50% or under single, 50 to 65% grey, 65 to 73% two levels, over 73% stacked. Grey counts as single only for senior or managerial roles.
  4. Compute the landing zone
    Single-level: 0.80 to 0.95 x midpoint, low end raised to the min. Stacked: lowest-level zone min to 1.19 x min, top-level zone 0.67 x max to 0.79 x max.
  5. Place your target
    Record penetration (target - min) / (max - min) and compa-ratio target / midpoint, and note whether the target sits below, inside, or above each zone.
  6. Scan for geo and level wording
    Read every posting, narrow ones included, for location, tier, zone, open rank, or more than one title, about 2 minutes each. Re-tag any row the wording contradicts.
  7. Sort and write the reason
    Apply the sort table below and write one sentence of reason per row. A row with no reason is not sorted.
  8. Confirm the level with the recruiter
    For each Level-Check, ask in the first recruiter exchange which level the range covers, where new hires start, and how final offers are set.

The sort rule as a table:

Where the target sitsWidth tagSort
Inside or below the zoneSingleSend (if below, recheck your target)
Above the zoneSingleSkip
Inside the lowest-level zoneTwo levels or stackedSend
Above lowest, within top-level zoneTwo levels or stackedLevel-Check
Above the top-level zoneTwo levels or stackedSkip

Sorting a posting by width and target position

Target above the zoneTarget inside or below the zone
Single level, target above zone
Skip; a new hire at this level will not reach your number
Stacked, target above lowest-level zone
Level-Check; send, then confirm the level
Single level, target in or below zone
Send; if below, recheck your target
Stacked, target inside lowest-level zone
Send; even the bottom level reaches you
Single-level width (50% or under)Stacked width (over 65%)
The width of a range decides whether a high target is a Skip or a Level-Check.

When a batch sorts like this one, the Send pile is short, and each of those postings deserves a resume tailored to its actual level. Refolk drafts that tailored version and the cover letter from your own history, so the time you save by skipping goes into the postings that can pay you.

How the read goes wrong

The read fails in seven predictable ways. Most of them involve a range that looks safer or richer than it is. Each one has a specific check.

  1. Spread base mismatch. Looks like: a 65% range measured from the midpoint reads as 49% and passes as single-level, as Range D did. Check: always divide by the minimum.
  2. Wide reads as "they will pay the top". Looks like: a 400% range, like Tesla's, seems to leave room to negotiate. Check: above 73%, the range is wider than two adjacent grades, so the top probably belongs to a different level or location.
  3. Employee pay treated as offer pay. Looks like: "67% of salaries fall inside the range, so I will too." Check: that distribution includes people who have had raises since joining. Use the 0.80 to 0.95 compa-ratio zone, not "inside the range."
  4. The posted min treated as a floor. Looks like: assuming the worst case is the minimum. Check: Colorado allows pay outside the range if the range was set in good faith, and Glassdoor found pay below the posted range in 22% of listings.
  5. Narrow assumed to be single-level. Looks like: a 30% range tagged single without reading the text. Check: a narrow range can still be a location-weighted national figure. Look for location, tier, or zone wording.
  6. Open-rank and multi-title postings missed. Looks like: a wide academic or "Senior/Staff" range treated as one job. Check: count the level words in the title. Cornell's open-rank posting names three ranks.
  7. Landing zone left uncapped. Looks like: a 30% band whose zone starts below the posted min, so a low target appears to fit. Check: raise the low end to the posted min, then reread the target.

Failures 2 and 4 together explain most bad sends from a wide range. The top looks reachable and the bottom looks guaranteed, and neither is true.

A 400% range is not room to negotiate. It is several jobs sharing one line.

What this read cannot tell you

The width thresholds and the landing zone come from compensation-practice norms. They were not measured from offers. Several things you might want to know are not publicly established, so treat these as gaps you close locally.

  • No new-hire offer dataset. The best accuracy data, Glassdoor's, covers current employees' reported pay. To check: ask each recruiter where new hires typically start, and record the penetration of every offer you receive. After a few offers, your own numbers beat the convention.
  • Average posted range width. The Cornell ILR study by Lee, Park and Chang in the Journal of Applied Psychology covered about 10 million postings and measured range size as the upper bound minus the lower bound. I could not retrieve the average dollar width and the breakdown by firm and role from its tables, so they are not established here. Glassdoor's figure is that the average range spanned at least $15,000 from a starting point of $61,000.
  • How remote postings set location tiers. No systematic study exists. One Blind user reports that Coinbase puts Colorado in the same tier as most of the country, 15% below the Bay Area. Indeed Hiring Lab found that tech hubs and metro areas with new salary disclosure laws saw the largest increases in advertised ranges. In a 25-profile sample of US Senior Software Engineers in Refolk's index, 15 were in New York, San Francisco, Los Angeles or Boston. That sample is small, so treat it as a hint only. A national remote maximum set at those metros' pay would overstate pay for most other locations. To check: search the posting text for tier wording and ask which tier your location falls in.
  • Legal caps change. New Jersey measured spread from the minimum and capped it at 60%, and the state labor department has proposed deleting that cap. Ontario's $50,000 cap comes from a secondary source, so check the statute itself. Only 4 of 27 EU member states met the directive's transposition deadline, so check your own country's current status. Colorado's enforcement record (2,554 complaints, 24 citations, 10 with fines) suggests nobody is closely policing range width.

Confirming the level in the first recruiter exchange

For every Level-Check posting, send the application, then ask two questions in your first exchange with the recruiter: which level the range covers, and where new hires typically start and how the final offer is set. Cornell ILR's research found that this kind of context is what reduces the ambiguity of a wide range.

Level question for a Level-Check posting
Thanks for getting in touch about the [title] role. Two quick questions so we can make sure this is a fit on both sides:

1. The posting lists [min] to [max]. Does that range cover one level, or more than one (or more than one location)? If more than one, which level are you hiring for here?
2. Where do new hires at that level typically start, and how is the final offer set within the range?

For context, I am targeting a base around [target].

Send in your first reply to the recruiter; swap in the posting's title and range, and leave the target line out if you are not ready to name a number.

What to do with the answer:

  • They name the upper level, or a start that reaches your zone: move the row to Send and tailor the resume to that level.
  • They name the lower level and a start near the minimum: move the row to Skip, or decide now whether a strong performance in the loop could justify arguing for the upper level.
  • They will not say: keep the row at Level-Check, and assume the lowest-level zone until an offer proves otherwise.

Before you call the batch sorted

  • Every row has a min, a max, location text and level words, all as annual base pay.
  • Every spread is divided by the minimum, not the midpoint.
  • Every row carries a width tag: single, grey, two levels, or stacked.
  • Every landing zone has its low end raised to the posted minimum where needed.
  • Every stacked row has a lowest-level zone and a top-level zone, not just a combined zone.
  • Every narrow range has been checked for location, tier, or zone wording.
  • No row is marked Send only because the target sits inside the posted range.
  • Every row has a sort and a one-sentence reason.
  • Every Level-Check row has the level question drafted for the first recruiter reply.

To keep the read current, re-run the sort whenever your target changes, because moving the target by one midpoint step can move several rows between Skip and Level-Check. When a recruiter names the level and starting pay, log it next to the posting. Over a search, those answers become your own landing-zone data for the employers and roles you actually apply to.

Questions job seekers ask

Is my salary expectation being within the posted range enough reason to apply?

No. Being inside the range is the wrong test. New hires usually land at 0.80 to 0.95 of the midpoint, which covers roughly the first quarter to third of a single-level range. A target at the midpoint of a $87,000 to $113,000 range sits inside the range but above the $87,000 to $95,000 landing zone. Compare your target with the zone, and send only when it fits there or when a higher level could plausibly reach it.

What does it mean when the salary range on a job posting is too wide?

It usually means the posting covers more than one level, more than one location, or a broadband structure. A single professional band spreads about 40 to 50% above its minimum. Two adjacent grades stacked come to about 65 to 73%. A range like $83,000 to $418,000, a 404% spread, is wider than three grades and cannot describe one job's hiring pay.

Should I apply if the salary range is below my target?

Usually not, if your target sits above the posted maximum on a single-level range. In Glassdoor's matched data, actual pay fell above the posted range in only 11% of listings, and that includes long-tenured staff, not just new hires. Skip the posting and write down the reason. The exception is a stacked range where a higher level's zone could still reach your number.

Where will my offer land in the salary range?

Most likely at a compa-ratio of 0.80 to 0.95 of the band's midpoint, the usual landing spot for someone new to the level. Multiply the midpoint by 0.80 and 0.95, and raise the low end to the posted minimum if it falls below it. This is a compensation-practice convention, not a measured offer distribution, so check it against the recruiter's answer about typical starting pay.

How can I tell if a job posting range covers multiple levels?

Check three things. First, the spread measured from the minimum: above about 65% suggests two levels. Second, the title: count the level words, as in an open-rank posting naming Assistant, Associate and Full. Third, the text: look for location, tier, or zone wording. If any of these points to stacking, compute the lowest-level zone separately and confirm the level with the recruiter.

Can an employer offer less than the posted minimum?

Yes, in some places. Colorado's rules allow pay outside the posted range if the range was set in good faith. In Glassdoor's data, actual salaries fell below the posted range in 22% of listings. Treat the posted minimum as the bottom of the employer's stated intent, not a guaranteed floor, and confirm the starting figure in the first recruiter exchange.

Put this to work

Paste your career in once. Every application after that is written for you.

Drop a resume or a LinkedIn URL. I rank the live openings against it, rewrite the resume and write a cover letter for the best of them, and fill in the employer's form when you press the button. You read, you decide what goes out.

  1. 01Drop your resume

    A PDF or a LinkedIn URL. About a minute, once.

  2. 02I rank the openings

    Every weekday morning, the live catalog scored against your history. Up to 20 worth your time, not two hundred links.

  3. 03Each one is written up

    Resume rewritten for the posting, a cover letter, a fit score. Press send, or let me fill in the form.

  • New matches ranked and written before you are up.
  • Every bullet stays inside what your history supports. Nothing invented.
  • Queued, submitted, interviewing, offer: one screen, not a spreadsheet.

Free, no card. Up to 25 applications sent a week, and nothing is sent until you say so.

Read next