Methodology
A salary benchmark is only as honest as its caveats. Here is exactly what the Fairness Score is built on — and what it can't tell you.
The data
Every employer sponsoring an H-1B worker must file a Labor Condition Application (LCA)with the US Department of Labor, stating the job title, worksite, and the wage it commits to pay. The DOL's Office of Foreign Labor Certification publishes every filing as public-domain disclosure data each quarter.
- Vintage: FY2025 (2024-10-01 to 2025-09-30) and FY2026 through Q2 (2025-10-01 to 2026-03-31).
- Filters: status Certified only (withdrawn, denied, and certified-withdrawn filings are excluded), visa class H-1B only, full-time positions only.
- Volume: 709,416 certified filings pass those filters; 318,565 of them map to one of our canonical roles and power the score.
What an LCA wage is — and is not
- It is offered base salary, not total compensation. No equity, no bonus, no benefits. At big-tech employers, actual total comp can be 1.5–2x the filed base. Comparing your base against filed bases is apples-to-apples; comparing your total comp is not.
- It is the wage at filing time. Raises after filing don't show up until the next petition. The distribution slightly lags the market.
- The low end is floored, not free. Employers must pay at least the DOL prevailing wage for the occupation and area, so the p10 of filed wages sits above the true market floor. A "you're above p10" result means less than it would in an unfloored dataset.
- It covers H-1B roles only. Roles and employers that rarely sponsor visas are under-represented. This is a benchmark of what sponsoring employers file — a uniquely honest slice, but a slice.
- One filing ≠ one hire. A certified LCA doesn't guarantee the position was filled, and one filing can cover multiple workers (we count each filing once).
How the score is computed
- Wages are annualized. Hourly wages × 2,080 (40h × 52w), weekly × 52, bi-weekly × 26, monthly × 12. We use the lower bound of the filed wage range (
WAGE_RATE_OF_PAY_FROM) — the amount the employer actually commits to. Annualized wages outside $25k–$1.5M are treated as data errors and dropped. - Job titles are normalized. Level suffixes are stripped ("Software Engineer II" → Software Engineer), and the ~220 highest-volume title strings are hand-mapped to canonical roles — including employer-specific ladders (Amazon "SDE", Salesforce "SMTS", bank "VP, Lead Software Engineer", Deloitte "JC" codes). Seniority is preserved where the title carries it: a Senior Software Engineer is scored against Senior Software Engineer filings, not the all-level pool.
- Worksites are bucketed into metros. Suburb cities roll up to their metro (Bellevue → Seattle; Sunnyvale → SF Bay Area; Jersey City → New York City). Smaller cities stand alone. A published range requires at least 30 filings; employer-level views require at least 10. Below those thresholds we fall back to the national pool and say so.
- Your percentile is interpolated. We publish p10/p25/p50/p75/p90 per role × metro and interpolate your salary linearly between them. Beyond the observed range we extrapolate conservatively and cap the score at 1–99: no dataset this size can honestly say "100th percentile".
- FY2025 and FY2026 are pooled. Where both years have enough data we also show year-over-year medians. There is no recency weighting yet — that's on the roadmap.
Privacy
The aggregates are pre-computed static JSON. Your salary is compared against thementirely in your browser — it is never transmitted, stored, or logged. This site has no accounts and no salary database of yours to leak.
Source
US Department of Labor, Employment & Training Administration, Office of Foreign Labor Certification — LCA disclosure files. Public domain.