Methodology

How we calculate every salary you see.

Transparent, repeatable, and continuously refined.

1. National baselines

For each of our 60+ occupations, we maintain three national baselines: a 10th-percentile entry figure (p10), a national median, and a 90th-percentile experienced figure (p90). United States figures are calibrated to the U.S. Bureau of Labor Statistics Occupational Employment and Wage Statistics (OEWS) May 2025 release. Canadian figures are calibrated to the latest available Government of Canada Job Bank wage data.

2. Experience multipliers

Each occupation has four experience-level multipliers — entry, mid, senior, and lead — derived from published BLS career-stage data and platform-aggregated survey distributions. A mid-level multiplier of 1.00 anchors the baseline; entry sits at ~0.75, senior at ~1.30, and lead at ~1.60, with occupation-specific adjustments.

3. Cost-of-living adjustment

For every city we maintain a cost-of-living index where 100 represents the US national average. City-level salary is calculated as baseline × experience multiplier × (COL index / 100). This anchors a $80,000 national role at ~$144,000 in San Jose (COL 202) and ~$66,000 in El Paso (COL 82), matching observed market behavior.

4. Taxes

Our after-tax calculator stacks the current federal brackets, the appropriate state or provincial brackets, FICA (Social Security + Medicare) for US, and CPP + EI for Canada. Standard deductions are applied by filing status.

5. Refresh cadence

Wage baselines are refreshed against each new BLS OEWS release (currently May 2025) and the latest Government of Canada Job Bank wage data. Tax brackets are refreshed every January. Cost-of-living indices are reviewed quarterly.

Figures shown are estimates and may vary by employer, experience, credentials, industry, and local market conditions.

6. Known limitations

  • Equity compensation (RSUs, stock options) is not yet modeled.
  • Bonus structures vary widely by employer; our medians reflect base + typical performance bonus only.
  • Smaller cities (under ~200k population) fall back to regional-average COL indices.

Formula at a glance

salary =
  base_median
  × experience_multiplier
  × (city.col_index / 100)

Why ranges, not single numbers?

Every page shows p10, median, and p90. Treating salary as a range is more useful than a single point estimate, especially during negotiation.