Methodology

How VisaSalaries turns raw U.S. Department of Labor disclosure filings into the wages, premiums, and benchmarks shown across the site. This page is our public statement of record; we keep it factually exact and log every meaningful change in the changelog below.

Last updated June 2, 2026 · Data coverage FY2021–FY2026 (through Q2)

Data Sources

Our primary source is the U.S. Department of Labor, Office of Foreign Labor Certification (OFLC) Disclosure Data — the official quarterly releases of H-1B Labor Condition Applications (LCA), PERM permanent labor certifications, and Prevailing Wage Determinations.

  • DOL OFLC Disclosure Data (H-1B LCA, PERM, Prevailing Wage) — the source for every wage, premium, and filing count on the site.
  • FLC Wage Library (OEWS prevailing-wage levels) — referenced for context but not yet ingested; see Data Processing below for how this affects the lottery wage-level breakpoints.

We cover fiscal years FY2021–FY2026 (through Q2). We begin at FY2021 because it is the first fully FLAG-system year with a stable, consistent schema; FY2020 mixed legacy iCERT and FLAG records and is excluded.

Update Cadence

We refresh quarterly, typically within about two weeks of each DOL release. Quarterly files are cumulative within a fiscal year, and our loader de-duplicates on case number, keeping the record from the highest available quarter so re-running an update is idempotent.

  • Last refresh: June 1, 2026
  • Next expected refresh: September 2026

Regulatory Context

The H-1B program is in active regulatory flux. The figures and tools on this site reflect the rules as we currently understand them; all are subject to ongoing litigation and may change.

  • A $100,000 fee on new H-1B petitions, effective September 21, 2025.
  • A wage-weighted lottery, effective February 27, 2026, for the FY2027 cap. Each registration receives pool entries by OEWS wage level: Level IV → 4 entries, Level III → 3, Level II → 2, Level I → 1.
  • These rules are subject to ongoing litigation; this page tracks the current state.

Data Processing

The following steps describe how raw filings become the published numbers. They are the data contract behind every statistic on the site.

Prevailing-wage premium

The prevailing-wage premium is the median of (offered wage ÷ prevailing wage) − 1, stored as a fraction and shown ×100 as a percent. It is a median, not a mean, chosen specifically to resist outlier distortion — a single absurd filing can drag a mean badly, but barely moves the median. We do not describe it as an average.

Outlier handling

Roughly 5.8% of rows are flagged as suspicious and excluded from every published statistic (a NOT is_suspicious filter), as well as from search. These are implausible values such as annualized wages produced by unit-of-pay errors — for example an hourly rate mistakenly multiplied to an eight-figure annual salary. Flagged rows are excluded, not retained: they do not appear in company stats, aggregations, the dashboard parquet, or detail search.

SOC occupation-code normalization

SOC codes are normalized to their 6-digit base, stripping O*NET detail suffixes (including doubled suffixes such as 11-1021.00.00). Deprecated 2010 SOC codes are crosswalked toward 2018 codes. A small number of same-occupation rows remain split across legacy and new codes — a known limitation we are actively consolidating.

Company name normalization

Company names are consolidated using fuzzy matching against a manually curated alias table, so variants like “Google LLC”, “GOOGLE INC.”, and “Alphabet Inc.” collapse to a single canonical entity. A single-token guard prevents unrelated short names (e.g. “Tesla” vs “Tesla Dentistry”) from being merged; borderline cases are reviewed quarterly.

Lottery wage-level breakpoints

The Level I–IV wage thresholds shown in the lottery tools are derived — the median observed annual prevailing wage per disclosed wage level — and are not the official OEWS / FLC Wage Library figures, which we have not yet ingested. They are labeled “approximate” wherever they appear. The lottery-odds selection rate r defaults to 0.30, an explicitly labeled placeholder pending a real registrations-vs-cap figure; the resulting odds are a historical-distribution estimate, not a guarantee.

Dashboard “weighted wage”

The dashboard’s “weighted wage” is a filing-count–weighted mean of per-group medians (SUM(median × count) ÷ SUM(count)), not a true pooled median. We label it honestly as a weighted wage and do not call it a median.

Wage annualization

Wages reported by the hour, week, bi-week, or month are converted to an annual figure (hourly annualized at 2,080 hours/year). A reverse guard handles records mis-tagged as hourly: a value above $500/hour (≈ $1.04M/year if annualized) is treated as already-annual rather than multiplied again, which prevents inflated eight-figure salaries.

PERM field availability

PERM filings from FY2025 onward do not include the country-of- citizenship or class-of-admission fields, which DOL removed from disclosure data that year. We store these as null for affected rows; they are not used in wage analysis.

Known Limitations

  • LCA filings precede actual H-1B issuance: a filing does not guarantee the visa was approved or that the worker was hired.
  • PERM data covers permanent labor certifications only — not the subsequent I-140 or I-485 stages.
  • Small SOC × metro combinations may have insufficient sample size; thin combinations are flagged and de-indexed until the data thickens.
  • A small number of same-occupation rows remain split across legacy and new SOC codes, as noted under SOC normalization above.
  • Lottery wage-level breakpoints are derived approximations, not official OEWS figures.
  • Quarterly DOL releases occasionally include retroactive corrections, so figures for a given period can change slightly between refreshes.

Changelog

  • June 2, 2026: Published the methodology, about, privacy, and terms pages.
  • June 1, 2026: Consolidated SOC occupation codes to their 6-digit base (stripping O*NET detail suffixes) so a single occupation in a metro is no longer split across suffixed codes.
  • May 2026: Switched the published prevailing-wage premium from a mean to a median, and began excluding outlier filings (≈5.8% of rows) from every published statistic and from search.
  • May 2026: Added the in-browser salary dashboard and the FY2027 lottery decision tools (wage-level lookup, odds estimator, wage-threshold calculator).
  • April 2026: Initial publication: company, job, and wage-by-city pages from DOL OFLC disclosure data, FY2021 onward.