Methodology

How to read this data

Everything on CitySalaryData comes from one official source: the Occupational Employment and Wage Statistics (OEWS) program at the U.S. Bureau of Labor Statistics. This page explains what those numbers measure, in plain language, and exactly what we do — and refuse to do — with them.

What OEWS measures

OEWS estimates employment and wages for about 830 detailed occupations, by area and industry, from a semiannual survey of roughly 1.1 million business establishments collected over a three-year cycle. The estimates on this site are the May 2025 cross-industry estimates — the reference period all figures describe. Wages include base pay, incentive pay, and production bonuses; they exclude overtime premiums, benefits, and most irregular bonuses. Self-employed workers are not covered.

Estimates, not measurements of you

Every figure is a survey estimatewith sampling and modeling error, not a census and not a prediction. A median of $100,490 does not mean you will be offered $100,490; it means BLS estimates that half of the workers in that occupation and area earn less and half earn more. We never present an estimate as an individual’s expected salary.

Percentiles

A percentile wage is a cut point. The 10th percentile means 10% of workers earn less; the 90th means 90% earn less. The 25th–75th band (the middle half) is usually the most realistic “typical range” for an occupation in an area. Annual and hourly figures are published in parallel: BLS converts hourly wages to annual using 2,080 hours (40 hours × 52 weeks). For occupations that typically work part-year schedules (for example, many teachers) BLS publishes only an annual wage; for a few variable-hours occupations it publishes only an hourly wage. We label both cases.

Geography: metro areas, not city limits

BLS publishes area wage data for metropolitan statistical areas, nonmetropolitan areas, states, and territories — not for individual municipalities. When you search a city, we resolve it to the official BLS area that contains it and label the result with the full area name, for example the “Atlanta–Sandy Springs–Roswell, GA metro area”. A metro estimate describes that entire multi-county region. It is never a city-limits figure, and we never present it as one. City-to-area resolution uses the principal city names embedded in the official area titles plus a small, documented alias list (see Sources).

Suppression: some values are not published

BLS withholds estimates that fail confidentiality or quality standards. The downloadable files mark these with symbols: “*” (wage not available), “**” (employment not available). We preserve these markers exactly. A suppressed value appears on this site as “Not published” — never as zero, never interpolated, never averaged in from neighboring areas.

Top-coded wages

For confidentiality, BLS caps published percentile wages at a threshold — in the May 2025 release, $115.00 per hour / $239,200 per year (marker “#”). Where a percentile is top-coded we show it as “$239,200 or more”. The true value is at or above that threshold.

Employment context numbers

Employment is the estimated count of wage-and-salary jobs in the occupation, rounded by BLS. Jobs per 1,000 is how many of every 1,000 jobs in the area are in the occupation. The location quotientdivides the occupation’s local employment share by its national share: 1.0 means “as common as the national average”; 2.0 means twice as concentrated.

No year-over-year comparisons

BLS explicitly cautions that OEWS estimates are not designed as a time series — methodology, occupation definitions, and area delineations change between releases. This site therefore shows a single release (May 2025) and draws no trend lines and no “wages grew X%” claims.

What we deliberately do not do

  • No cost-of-living adjustments — no defensible official dataset is integrated.
  • No take-home-pay or tax math.
  • No job-openings counts, growth forecasts, education or licensing claims.
  • No averaging of areas, filling of suppressed values, or invented rankings.

Data pipeline

Source files are downloaded from the official BLS tables page, checksummed, parsed, and validated before publication: duplicate keys, malformed SOC codes, impossible percentile ordering, negative values, annual/hourly inconsistencies, unknown suppression markers, and a missing source period all block the build. The current build passed on July 24, 2026. Full provenance — URLs, hashes, timestamps — is on the Sources page.

For the definitive technical documentation, see the BLS Handbook of Methods: OEWS. Found a discrepancy? See Corrections.