Updated August 6, 2026 · 12 min read

When to trust salary data

Red flags in job posts, survey bias, sample size, observed vs modeled figures on this site, and when to ask HR for the real band.

Not all published numbers are equal

Salary data is only as good as its sample, definitions, and incentives. A government occupation wage programme, a self-reported employee survey, a recruiter “market flash,” and a job-ad scraping product can all quote a “median” for the same title and disagree by 20% or more.

On Pay by Role we favour public statistical aggregations for country and city percentiles, label observed vs modeled city figures, and refuse to invent national medians when sources do not cover a pair. That does not make every page equally strong — it makes the strength legible.

Trust goes up when the occupation definition matches your work, the geography matches where you will be paid, and the figure is recent enough for your industry’s pace. Trust goes down when any of those are fuzzy.

Red flags in job posts and recruiter ranges

Wide “$80k–$180k” postings without level or location often mean the company has not decided the band — or wants maximum applicant volume. Ask which level the requisition maps to and which geo tier applies before you invest interview time.

Ranges that sit far above local p90 for the stated seniority, or far below local p25, deserve a clarifying question. Sometimes the title is inflated or deflated relative to scope; sometimes the posting recycled a national range for a cheaper location.

Commission-only, “uncapped OTE,” or equity-heavy posts should separate on-target earnings from base. Compare base to market base; treat OTE as a forecast that depends on territory, quota quality, and ramp time.

Survey bias and sample size

Self-reported surveys over-represent people who changed jobs recently, work at large tech brands, or feel underpaid enough to look numbers up. They under-represent stable mid-career employees in smaller firms. That skew often pulls “market” figures upward for fashionable titles.

Small samples are noisy. A metro–occupation cell with thin coverage can swing when a few employers report overtime-heavy or partnership-track pay. Prefer figures tied to large statistical programmes when you need a stable anchor; treat niche survey slices as colour, not gospel.

Definition drift matters as much as sample size. “Software engineer,” “data scientist,” and “product designer” mean different scopes across firms. If your day-to-day matches a neighbouring occupation better, benchmark that slug too and triangulate.

Observed vs modeled on this site

Observed city pages use percentile sets returned for that metro and occupation. They are our strongest local estimates and the ones we prioritise as primary references.

Modeled city pages start from a real national median and scale by the city’s pay index, then apply a spread model for entry-to-senior bands. They are useful for navigation and rough comparison, but they are not metro microdata. If a modeled page is your only reference, widen your confidence interval and confirm with another source before you negotiate hard.

Derived helpers — COL-adjusted pay, rent sketches, tax take-home, trend illustrations — should never be cited as if they were official statistics. They exist to help you ask better questions.

When to ask HR (and what to ask)

Ask for the band when the posting omits pay, when your research puts you near a cliff (below p25 or above p75), or when the role spans multiple levels. A fair question: “What is the budgeted base range for this level in [geo], and where do you typically hire within it?”

Ask how level and geo are determined, whether the range includes bonus or equity, and when compensation is reviewed. Those process answers often matter more than extracting a single number.

If HR cannot share a range, you can still share yours: cite a public percentile band for the city and role, state the total package you need, and invite them to say whether that is realistic before final rounds. Screening for fit early saves everyone time.