Methodology
Every figure on this site is either published by a US government agency or calculated from one by a rule written below. Where we substitute or approximate, it says so on the page itself, not only here.
Pay
Wages come from the Bureau of Labor Statistics Occupational Employment and Wage Statistics programme (May 2025), cross-industry, for the nation, the states and 530 metropolitan and nonmetropolitan areas. We publish the median and the 10th, 25th, 75th and 90th percentiles exactly as released.
BLS suppresses any cell that would disclose an individual employer, and top-codes wages at or above $115.00 an hour or $239,200 a year. Those arrive as missing values and are shown as “not published” — never as zero, and never quietly averaged away. Some occupations are reported only annually (teachers) or only hourly (many service roles); the tables label those too.
What pay is worth locally
Each area’s median is divided by its regional price parity from the Bureau of Economic Analysis (2024), an index where the national average is 100. A figure above the headline means money goes further there than the US average.
The honest limitation: BEA publishes parities for states and for metropolitan areas, but not for the roughly 130 nonmetropolitan areas BLS reports wages for, and not for the territories at all. Nonmetropolitan areas inherit their state’s index, which includes that state’s cities and therefore overstates rural costs. Those rows are marked approx. Territories have no index, and their real-wage column stays empty rather than guessing.
After state tax
State income tax is applied to the median using 2026 rates for a single filer taking the standard deduction. Graduated brackets are walked marginally; flat-rate states use their single rate; nine states levy no wage income tax at all.
Deliberately excluded: federal income tax and FICA, because they are the same everywhere and including them would add a large constant that makes cross-state comparison harder to read rather than easier. Local and municipal taxes — real in New York City and parts of Ohio and Pennsylvania — are excluded because they cannot be derived from a state. The column is labelled “after state tax”, not “take-home”, for that reason.
AI exposure
Two indices, built from different evidence, are computed for every occupation from O*NET 2026. Pages show both, plus the gap between them.
Method 1 — ability mix. The share of an occupation’s rated ability importance that is cognitive rather than psychomotor, physical or sensory, using O*NET’s own element families (1.A.1 against 1.A.2 to 1.A.4). No judgement of ours enters beyond that split.
Method 2 — task content. The importance-weighted share of an occupation’s tasks that describe language and information work. Each task is scored against two published word lists: one of information verbs (analyse, draft, record, schedule, verify…) and one of embodied verbs (lift, install, drive, repair, sterilise…). A task matching any embodied term scores zero regardless of its language content, because the physical constraint binds.
What the number is not. Exposure means a model could plausibly do a meaningful share of the tasks. It is not a prediction that anyone will automate the job, and not a forecast that the occupation shrinks. For that, every page shows the BLS ten-year employment projection next to it — and the two frequently point in opposite directions. Where our two methods disagree by a wide margin, the page says the evidence is mixed rather than averaging the disagreement away.
Employer pay
Figures attributed to named companies come from certified Department of Labor foreign labour certification filings (FY2026). These are wages an employer committed to for a sponsored role.
They are not company-wide averages, and not necessarily what US-citizen staff in the same job earn. Only certified filings are counted; denied and withdrawn ones say nothing about pay. Any employer–occupation–state cell with fewer than three filings is withheld entirely, so no individual’s pay can be identified from this site.
Reading your résumé
The file is parsed by code running in your browser. It is never transmitted, and we never receive it. Parsing uses rules and regular expressions rather than a language model — so it works on any phone, produces the same answer every time, and can tell you which rule fired.
We deliberately do not repair multi-column layouts. An applicant tracking system reads a two-column CV as one scrambled stream, and showing you that damage is the point of the exercise.
If you choose to contribute anonymously, what is sent is a list of which checks fired, an occupation code, a state and rounded years of experience. No text, no job title, no employer, no filename. There is no identifier linking it to you, which means we could not connect it to a person even if asked to.
Which pages exist
An occupation gets a page only if it is a detailed Standard Occupational Classification code with a published national median and at least a thousand people employed in it. Anything below that threshold has figures too sparse to say anything useful, so no page is generated rather than a thin one.