County intelligence

San Francisco County

California (CA) · FIPS 06075 · 16,676 employers · 164,633 filings with wage data

Employers in San Francisco, CA filed 176,802 certified H-1B applications requesting 325,766 workers across 15,271 companies. The median offered wage is $125,000/yr. The largest filers are Deloitte Consulting LLP, Uber Technologies, Inc. and Ernst & Young U.S. LLP. The displacement model assigns 360.3K worker-equivalent exposures to these filings. Separately, 4,471 layoffs appear in matched WARN notices.

Source import recorded Sep 2, 2026

What the local records contain / DOL & WARN

What XH1B calculates / Local wage comparisons

How to read the wage comparison

County averages mix occupations and years. Offered wages and the latest available national BLS occupation medians are averaged separately over available records, so their populations can differ. This is a screening comparison, not a comparison of matched filings or a finding about an individual wage.

Definitions & methodology ↗

Filings & wages

Annual filing records and a county-level wage comparison.

Filing history

Annual DOL filing records. Workers requested are not confirmed hires.

05K10K15K20K25K30Kpeak 18K (2019)2007: 682 filings (941 workers)2008: 4,437 filings (9,268 workers)2009: 2,678 filings (3,911 workers)2010: 1,192 filings (2,496 workers)2011: 5,608 filings (10,438 workers)2012: 6,290 filings (12,299 workers)2013: 6,458 filings (12,340 workers)2014: 2,596 filings (4,194 workers)2015: 13,368 filings (28,407 workers)2016: 13,858 filings (28,237 workers)2017: 14,451 filings (34,878 workers)2018: 16,674 filings (34,009 workers)2019: 18,176 filings (29,270 workers)2020: 14,457 filings (23,489 workers)2021: 14,462 filings (24,973 workers)2022: 13,684 filings (21,712 workers)2023: 10,519 filings (18,180 workers)2024: 10,434 filings (14,664 workers)2025: 10,559 filings (15,471 workers)2026: 2,536 filings (6,035 workers)200720082009201020112012201320142015201620172018201920202021202220232024202520262007: 941 workers2008: 9,268 workers2009: 3,911 workers2010: 2,496 workers2011: 10,438 workers2012: 12,299 workers2013: 12,340 workers2014: 4,194 workers2015: 28,407 workers2016: 28,237 workers2017: 34,878 workers2018: 34,009 workers2019: 29,270 workers2020: 23,489 workers2021: 24,973 workers2022: 21,712 workers2023: 18,180 workers2024: 14,664 workers2025: 15,471 workers2026: 6,035 workersfilings
filingsworkers (scaled)
Inspect filing outcomes All available years and DOL statuses

Certified, denied, and withdrawn counts describe application decisions. They do not measure visas issued or workers hired.

Offered-wage distribution

Percentiles across 172,943 positive year-unit LCA offers, all outcomes and visa classes.

$62,042$99,380$136,718$174,056$211,394$128,128annual wage

Application outcomes all available years

  • Certified171,578 · 96.4%
  • Denied2,006 · 1.1%
  • Withdrawn4,311 · 2.4%
How this distribution is built Year-unit offers, all outcomes and visa classes

The distribution covers positive offers with wage unit Year, across all outcomes and visa classes. It differs from the certified H-1B summary cohort. It does not adjust for occupation, employer, or worksite mix.

Downstream impact

Conditional effects of this county's modeled displacement exposure.

Americans displaced (modeled estimate)

360,276

The math
Base (1 per certified worker)
+325,766
Wage-gap multiplier

66377 of 176802 filings below BLS median

+30,039
WARN layoffs (government-reported)

71 notices filed

+4,471
Total360,276

Σ workers×(1+wage_gap) + Σ WARN layoffs. The 1.0 base rate per certified H-1B worker request is a site model assumption. Wage gap multiplier = (BLS median − offered wage) / BLS median, applied only to filings offering less than the BLS median. Related research provides context, not validation of these exact coefficients. This is a modeled estimate, not a count of actual displacements. WARN layoff counts are government-reported.

Exposure method v1.2 · This is a modeled worker-equivalent count.

Modeled consequence estimates

Conditional impacts associated with modeled displacement

Explore San Francisco County’s scenarioEarnings · children · health · adjust the worker count

These are conditional population estimates scaled from San Francisco County's current modeled displacement count. They are not observed outcomes, a prediction about any person, or evidence that this entity caused displacement.

Exposure method v1.2 (stored with this aggregate) · benchmarked to the latest BLS survey. Consequence parameters v1.54; build v1.54+engine0.4.1+d84162591c94d06c8148c4834ae705ff3f9a015c29955d95d26749834cd136ed+national-reference1

Excess deaths over 20 years

Illustrative reference calculation · population applicability is not established

10,361.09

Range: 4,057.54 to 18,048.26

20-year reference scenario: high-seniority male displacement effect. This is not an expected count for an unknown population.

Source-profile mortality point (deaths)
10,361.0912888
No sustained excess from year 7 (deaths)
7,394.07921449

Declared structural comparison; not a confidence interval or a model probability.

Baseline population: US prime-age men (45-54).

Child lifetime earnings lost

Illustrative reference calculation · population applicability is not established

$172.5B

Range: $44.8B to $291.3B

Canadian father–son firm-closure effect, applied to a US male lifetime-earnings baseline in 2024 dollars. The reference result uses 2 children per worker.

Baseline population: US male median lifetime earnings.

The mortality effect comes from a high-seniority male study cohort. Treat the count as a reference scenario unless the population matches. A mixed population needs a reviewed transport rule.

The range is the engine's parameter-support envelope: it varies declared parameters only and adds none of the exposure input's uncertainty.

The math, limits, and citations

Illustrative reference calculation scaled by the supplied worker-equivalent exposure. Two children per worker; 20-year mortality follow-up. This does not establish that an entity caused these outcomes.

Input SHA-256: a771d456f24b73ab4a27e51e83ec07640a0d93114d4ffc968aae925e700d843d

Excess deaths over 20 years: {"status":"illustrative_reference_calculation","eligible_for_public_headline":false,"target_population":null,"decision":null,"transport_assumptions":["high-tenure male mass-layoff cohort, ages 45–54","Pennsylvania early-1980s response transported to target place and calendar time","fixed baseline age rate over follow-up; cohort aging is not modeled"],"reason":"Target cohort applicability and transport have not been established for this outcome; display as an illustrative reference calculation."}

Child lifetime earnings lost: {"status":"illustrative_reference_calculation","eligible_for_public_headline":false,"target_population":null,"decision":null,"transport_assumptions":["Canadian father-son firm-closure estimate transported to the target families","US male synthetic career earnings convert a relative adult earnings effect to dollars","lifetime dollars are undiscounted; this is not an annual loss"],"reason":"Target cohort applicability and transport have not been established for this outcome; display as an illustrative reference calculation."}

Projection eligibility: {"child":{"status":"direct_estimate","eligible_for_validated_direct_contrast":true,"reason":"direct displacement-to-child adult earnings estimate; transport still requires an applicability decision"},"grandchild":{"status":"structural_projection","eligible_for_validated_direct_contrast":false,"reason":"combines a direct child estimate with an intergenerational persistence assumption; not an identified displacement intervention effect"},"greatgrandchild":{"status":"source_withdrawn","eligible_for_validated_direct_contrast":false,"reason":"source withdrawn for grandchild_earnings->greatgrandchild_earnings: The source measures earnings for three generations and education for four. It does not estimate .55 causal gap transmission to a fourth earnings generation. Retaining a projection would require an explicit uncalibrated assumption, not a source-identified default."}}

Exposure source: {"source":"one-worker normalized reference input","method":"scale by the stored warehouse worker-equivalent exposure at read time"}

Exact values: excess deaths over 20 years 10,361.0912888 (range 4,057.53572532 to 18,048.264165); child lifetime earnings lost $172,534,222,539.53 (range $44,814,083,776.50 to $291,291,544,547.26);

The displayed range is a parameter-support envelope, not a confidence interval.

Place reference: national reference.

Not included: exposure estimation error; baseline estimation error; unmodeled pathways.

Blocked model paths: local_service_jobs_lost: requires a documented net local loss of tradable jobs; worker displacement alone is not this exposure.

  • Excess deaths over 20 years: sullivan2009 (earnings_shock->mortality_peak; canonical) Study population: US high-seniority displaced men born 1930-1959.
  • Excess deaths over 20 years: sullivan2009 (earnings_shock->mortality_offset_1; canonical) Study population: US high-seniority displaced men born 1930-1959.
  • Excess deaths over 20 years: sullivan2009 (earnings_shock->mortality_offsets_2_3; canonical) Study population: US high-seniority displaced men born 1930-1959.
  • Excess deaths over 20 years: sullivan2009 (earnings_shock->mortality_offsets_4_5; canonical) Study population: US high-seniority displaced men born 1930-1959.
  • Excess deaths over 20 years: sullivan2009 (earnings_shock->mortality_sustained; canonical) Study population: US high-seniority displaced men born 1930-1959.
  • Child lifetime earnings lost: oreopoulos2008 (displacement->child_earnings; EXACT) Study population: Canada 39k father-son pairs firm closures.
Scenario assumptions, sensitivity and source records

Outcome statistics use the displayed exposure. Baselines, coefficients, annual family schedules and component records retain their source normalization.

{
  "displayed_workers": 360276.399,
  "source_normalization_workers": 1,
  "applicability": {
    "excess_deaths": {
      "status": "illustrative_reference_calculation",
      "eligible_for_public_headline": false,
      "target_population": null,
      "decision": null,
      "transport_assumptions": [
        "high-tenure male mass-layoff cohort, ages 45–54",
        "Pennsylvania early-1980s response transported to target place and calendar time",
        "fixed baseline age rate over follow-up; cohort aging is not modeled"
      ],
      "reason": "Target cohort applicability and transport have not been established for this outcome; display as an illustrative reference calculation."
    },
    "child_lifetime_earnings_lost_usd": {
      "status": "illustrative_reference_calculation",
      "eligible_for_public_headline": false,
      "target_population": null,
      "decision": null,
      "transport_assumptions": [
        "Canadian father-son firm-closure estimate transported to the target families",
        "US male synthetic career earnings convert a relative adult earnings effect to dollars",
        "lifetime dollars are undiscounted; this is not an annual loss"
      ],
      "reason": "Target cohort applicability and transport have not been established for this outcome; display as an illustrative reference calculation."
    }
  },
  "target_population": null,
  "projection_eligibility": {
    "child": {
      "status": "direct_estimate",
      "eligible_for_validated_direct_contrast": true,
      "reason": "direct displacement-to-child adult earnings estimate; transport still requires an applicability decision"
    },
    "grandchild": {
      "status": "structural_projection",
      "eligible_for_validated_direct_contrast": false,
      "reason": "combines a direct child estimate with an intergenerational persistence assumption; not an identified displacement intervention effect"
    },
    "greatgrandchild": {
      "status": "source_withdrawn",
      "eligible_for_validated_direct_contrast": false,
      "reason": "source withdrawn for grandchild_earnings->greatgrandchild_earnings: The source measures earnings for three generations and education for four. It does not estimate .55 causal gap transmission to a fourth earnings generation. Retaining a projection would require an explicit uncalibrated assumption, not a source-identified default."
    }
  },
  "child_applicability": {
    "source": "oreopoulos2008",
    "source_age_at_displacement": [
      10,
      14
    ],
    "source_child_sex": "Male",
    "source_parent_sex": "Male",
    "source_geography": "Canada",
    "source_event": "father firm closure 1980-1982",
    "target_child_profiles": null,
    "incompatible_children": [],
    "unknown_children": [],
    "source_income_quartile": null,
    "income_rank_definition": null,
    "eligible_for_reviewed_transport": false,
    "status": "unknown",
    "limitations": [
      "No response curve across child ages is identified by this narrow cohort.",
      "Income groups refer to father's average pre-displacement income in 1978-1979; target rank mapping requires a transport argument.",
      "A subgroup's nonsignificant coefficient is retained with its uncertainty, not replaced with zero."
    ]
  },
  "child_valuation": null,
  "assumptions": {
    "mortality_method": "odds_survival",
    "mortality_timing": "Source-offset profile: displacement, +1, +2–3, +4–5, and +6+; displacement is follow-up year 1, so offset +6 begins in follow-up year 7. Annual baseline rates use a constant-hazard rate-to-risk conversion; odds ratios modify annual risk, and survival compounds across phases. The selected baseline age rate is held fixed over the follow-up horizon.",
    "mortality_contract": {
      "method": "odds_survival",
      "timing": "source_profile",
      "baseline_conversion": "1-exp(-annual_rate)",
      "phases": [
        {
          "phase": "displacement",
          "start_offset": 0,
          "duration_years": 1,
          "first_follow_up_year": 1
        },
        {
          "phase": "offset_1",
          "start_offset": 1,
          "duration_years": 1,
          "first_follow_up_year": 2
        },
        {
          "phase": "offsets_2_3",
          "start_offset": 2,
          "duration_years": 2,
          "first_follow_up_year": 3
        },
        {
          "phase": "offsets_4_5",
          "start_offset": 4,
          "duration_years": 2,
          "first_follow_up_year": 5
        },
        {
          "phase": "offset_6_plus",
          "start_offset": 6,
          "duration_years": null,
          "first_follow_up_year": 7
        }
      ],
      "description": "Source-offset profile: displacement, +1, +2–3, +4–5, and +6+; displacement is follow-up year 1, so offset +6 begins in follow-up year 7. Annual baseline rates use a constant-hazard rate-to-risk conversion; odds ratios modify annual risk, and survival compounds across phases. The selected baseline age rate is held fixed over the follow-up horizon."
    },
    "place_application": "initial_only",
    "place_counterfactual": "national child-dollar result is the reference"
  },
  "exposure_provenance": {
    "source": "one-worker normalized reference input",
    "method": "scale by the stored warehouse worker-equivalent exposure at read time"
  },
  "place": null,
  "place_mix": [],
  "input_content_sha256": "a771d456f24b73ab4a27e51e83ec07640a0d93114d4ffc968aae925e700d843d",
  "engine_version": "0.4.1",
  "bundle_sha256": "d84162591c94d06c8148c4834ae705ff3f9a015c29955d95d26749834cd136ed",
  "exposure_input_sha256": "8b4c78f6529f0fbefd8fc3154c9e9b976065d910b4c6e9d55690e36d5c3cdeaa",
  "input_hash": null,
  "engine_sha256": "d84162591c94d06c8148c4834ae705ff3f9a015c29955d95d26749834cd136ed",
  "adapter_sha256": "5fe4b51a9cebfb247cfcd74c734a2b6cb0eae44fce1073917b01455525c6ae52",
  "outcomes": {
    "excess_deaths": {
      "point": 10361.09128882217,
      "low": 4057.535725316561,
      "high": 18048.2641649991,
      "unit": "deaths",
      "baseline": {
        "value": 0.004944,
        "annual_probability": 0.004931798548274205,
        "unit": "deaths_per_person_year",
        "citation": "cdc_wonder D76 (Underlying Cause of Death, 1999-2020), Male 45-54 years, pooled 2015-2019: 514314 deaths / 104024440 person-years = 494.4 per 100k; pulled 2026-09-06 via scraper.cli wonder-mortality into warehouse wonder_mortality",
        "population": "US prime-age men (45-54)",
        "notes": "Pre-pandemic window: excludes 2020 (COVID-distorted; 2020 crude rate 601.5/100k). Single-year 2019 = 490.0/100k. Ages 45-54 match the Sullivan & von Wachter prime-age counterfactual population",
        "sex": "Male",
        "age": "45-54 years",
        "years": "2015-2019",
        "cause": "All causes",
        "geography": "US"
      },
      "steps": [
        {
          "link": "earnings_shock->mortality_peak",
          "phase": "displacement",
          "point": 2.6698,
          "low": 2.1144,
          "high": 3.3711,
          "citation": "sullivan2009",
          "tier": "canonical",
          "population_scope": "US high-seniority displaced men born 1930-1959",
          "evidence_role": "conditional"
        },
        {
          "link": "earnings_shock->mortality_offset_1",
          "phase": "offset_1",
          "point": 1.9838,
          "low": 1.3697,
          "high": 2.8732,
          "citation": "sullivan2009",
          "tier": "canonical",
          "population_scope": "US high-seniority displaced men born 1930-1959",
          "evidence_role": "conditional"
        },
        {
          "link": "earnings_shock->mortality_offsets_2_3",
          "phase": "offsets_2_3",
          "point": 1.7315,
          "low": 1.3238,
          "high": 2.2649,
          "citation": "sullivan2009",
          "tier": "canonical",
          "population_scope": "US high-seniority displaced men born 1930-1959",
          "evidence_role": "conditional"
        },
        {
          "link": "earnings_shock->mortality_offsets_4_5",
          "phase": "offsets_4_5",
          "point": 1.2712,
          "low": 0.97,
          "high": 1.6661,
          "citation": "sullivan2009",
          "tier": "canonical",
          "population_scope": "US high-seniority displaced men born 1930-1959",
          "evidence_role": "conditional"
        },
        {
          "link": "earnings_shock->mortality_sustained",
          "phase": "offset_6_plus",
          "point": 1.1354,
          "low": 1.0335,
          "high": 1.2474,
          "citation": "sullivan2009",
          "tier": "canonical",
          "population_scope": "US high-seniority displaced men born 1930-1959",
          "evidence_role": "conditional"
        }
      ],
      "components": {
        "follow_up_years": 20,
        "method": "odds_survival",
        "timing": "source_profile"
      },
      "applicability": {
        "status": "illustrative_reference_calculation",
        "eligible_for_public_headline": false,
        "target_population": null,
        "decision": null,
        "transport_assumptions": [
          "high-tenure male mass-layoff cohort, ages 45–54",
          "Pennsylvania early-1980s response transported to target place and calendar time",
          "fixed baseline age rate over follow-up; cohort aging is not modeled"
        ],
        "reason": "Target cohort applicability and transport have not been established for this outcome; display as an illustrative reference calculation."
      },
      "interpretation": "Conditional modeled expected difference; parameter bands are support envelopes, not a confidence interval.",
      "persistence_sensitivity": {
        "available": true,
        "status": "declared_structural_sensitivity",
        "eligible_for_public_headline": false,
        "unit": "deaths",
        "variants": {
          "source_profile": {
            "point": 10361.09128882217,
            "low": 4057.535725316561,
            "high": 18048.2641649991,
            "evidence_status": "source_profile_with_transport_assumptions",
            "citations": [
              "sullivan2009"
            ]
          },
          "no_sustained_excess": {
            "point": 7394.079214492454,
            "low": 3311.251878184821,
            "high": 12739.833073927497,
            "evidence_status": "structural_assumption",
            "motivating_citations": [
              "eliasonstorrie2009"
            ],
            "assumption": "Retain source odds through offset +5; set offset +6 onward OR=1.",
            "first_changed_follow_up_year": 7,
            "fixed_late_odds_ratio": 1
          }
        },
        "source_minus_no_sustained_point": 2967.0120743297166,
        "structural_point_range": {
          "low": 7394.079214492454,
          "high": 10361.09128882217,
          "interpretation": "Range of point estimates across these two assumptions; not a confidence interval or a bound on the true effect."
        },
        "shared_inputs": [
          "exposure",
          "resolved mortality baseline",
          "follow-up horizon",
          "source odds through offset +5"
        ],
        "limitations": [
          "No probabilities or model-average weights are assigned to the structures.",
          "A nonsignificant long-run estimate does not establish an exactly zero effect.",
          "The Swedish study differs in population, design, effect scale and follow-up; this hybrid does not reproduce its estimates or substitute its hazard ratios for odds ratios.",
          "The cutoff follows the source profile's offset +6 phase, not the Swedish study's windows; persistence beyond its 12-year follow-up is an assumption in either direction.",
          "Baseline aging and target-population transport remain unresolved in both structures."
        ]
      }
    },
    "child_lifetime_earnings_lost_usd": {
      "point": 172534222539.53098,
      "low": 44814083776.50157,
      "high": 291291544547.26,
      "steps": [
        {
          "link": "displacement->child_earnings",
          "kind": "direct",
          "citation": "oreopoulos2008",
          "tier": "EXACT",
          "param_point": 0.9076,
          "param_low": 0.844,
          "param_high": 0.976,
          "value_point": 0.9076,
          "value_low": 0.844,
          "value_high": 0.976,
          "causal_role": "direct_displacement_estimate",
          "population_scope": "Canada 39k father-son pairs firm closures",
          "evidence_role": "conditional"
        }
      ],
      "unit": "usd_2024",
      "baseline": {
        "value": 2591418,
        "unit": "usd_2024",
        "citation": "SSA Annual Statistical Supplement 2025, Table 4.B6 (CWHS/Master Earnings File, 1 percent sample): male median earnings by age, 2023 (preliminary) — synthetic career ages 20-64 = 5x(24218+42561+52485+60423+64962+67506+68160+64854)+2x60666+3x56666 = 2517175 usd_2023; CPI-U annual averages 304.702->313.689 (BLS series CUUR0000SA0, pulled 2026-09-06) -> 2591418 usd_2024; warehouse ssa_median_earnings (pulled via ssa-earnings-download)",
        "population": "US male median lifetime earnings",
        "notes": "Derivation declared: the cross-sectional age profile summed over a 45-year working life (ages 20-64) is a synthetic cohort — the sum of age-band medians approximates rather than equals the median of individual lifetime sums; median-of-workers semantics excludes non-working years; 2023 medians are preliminary (SSA replaces them with final data in a later edition)"
      },
      "applicability": {
        "status": "illustrative_reference_calculation",
        "eligible_for_public_headline": false,
        "target_population": null,
        "decision": null,
        "transport_assumptions": [
          "Canadian father-son firm-closure estimate transported to the target families",
          "US male synthetic career earnings convert a relative adult earnings effect to dollars",
          "lifetime dollars are undiscounted; this is not an annual loss"
        ],
        "reason": "Target cohort applicability and transport have not been established for this outcome; display as an illustrative reference calculation."
      },
      "interpretation": "Conditional modeled expected difference; parameter bands are support envelopes, not a confidence interval."
    }
  }
}

Parameter set v1.54 · model v1.54+engine0.4.1+d84162591c94d06c8148c4834ae705ff3f9a015c29955d95d26749834cd136ed+national-reference1

Local connections

County context, public notices, and linked public records.

Community well-being

Food insecurity, SNAP receipt, mental distress, smoking, and overdose mortality in this area. CDC models these from survey data: treat them as local estimates, not headcounts. Bars compare each estimate against population-weighted averages of all reporting areas for the same data year.

Food insecurity

2023

12.1%: 3.1 points below U.S.

Adults receiving SNAP

2023

9.6%: 2.3 points below U.S.

Frequent mental distress

2023

13.8%: 2.2 points below U.S.

Adult smoking

2023

8.8%: 3.3 points below U.S.

Drug overdose deaths

2021

52.6: 20.4 above U.S.

Source: CDC PLACES 2025 release (BRFSS survey year 2023) and NCHS drug poisoning mortality. PLACES values are model-based small-area estimates, not survey counts. Benchmarks are population-weighted averages across all reporting areas.

Medical workforce context

AHRF supply DOL filingsRecordAHRF county supply data and H-1B medical LCAs. Comparisons use the median US county.
MDs per 100k residents970↑ 11.9× median
Active MDs (non-federal)7,850
Nurse practitioners per 100k203↑ 1.1× median
County population808,988
Primary care HPSA designations8
H-1B medical workers certifiedhealthcare SOCs (29-* + 31-2*)73562% of BLS
Full medical breakdown

San Francisco County in context

DOL filings CountyRecordH-1B intensity by county across California. This county is highlighted. Click any county to drill in.
Loading map…
Read the county map County-level H-1B intensity

The map gives geographic context. A county average does not classify every filing, employer, or worker within it.

Employers & occupations

The sponsors and job categories recorded in this county.

Employers (16,676)

DOL filings EmployerRecordRanked by applications in this county.
EmployerFilings
1

Salesforce.com, Inc.

6,796
2

Uber Technologies, Inc. ⚠ Dep

5,086
3

University of California, San Francisco

4,216
4

Ernst & Young U.S. LLP

4,087
5

Infosys Limited ⚠ Dep

3,626
6

Google LLC ⚠ Dep

3,297
7

Salesforce, Inc.

3,135
8

Twitter, Inc.

2,402

Job categories (335)

  • Computer and Information Systems Managers$181.4M · 23.4%
  • Accountants and Auditors$160.3M · 20.7%
  • Management Analysts$149M · 19.2%
  • Biochemists and Biophysicists$119.4M · 15.4%
  • Financial and Investment Analysts$64.3M · 8.3%
  • Operations Research Analysts$38.1M · 4.9%
  • Marketing Managers$32.9M · 4.2%
  • Software Developers$28.8M · 3.7%
DOL wage offers BLS occupationsSignalOccupation averages need not describe each filing.
Job categoryH-1B vs BLS

10,799 workers · 6,222 filings · $181.4M wage theft

13-2011 Accountants and AuditorsH-1B $96.4K vs BLS $83.7K+15%

13,756 workers · 5,014 filings · $160.3M wage theft

13-1111 Management AnalystsH-1B $127.2K vs BLS $101.9K+25%

13,500 workers · 4,016 filings · $149.0M wage theft

19-1021 Biochemists and BiophysicistsH-1B $69.1K vs BLS $127.4K-46%

2,025 workers · 2,025 filings · $119.4M wage theft

13-2051 Financial and Investment AnalystsH-1B $129.9K vs BLS $102.7K+26%

7,132 workers · 4,556 filings · $64.3M wage theft

15-2031 Operations Research AnalystsH-1B $126.5K vs BLS $88.9K+42%

9,451 workers · 4,787 filings · $38.1M wage theft

11-2021 Marketing ManagersH-1B $174.8K vs BLS $166.8K+5%

2,192 workers · 1,591 filings · $32.9M wage theft

15-1252 Software DevelopersH-1B $189.7K vs BLS $136K+39%

22,845 workers · 13,748 filings · $28.8M wage theft

Labor condition applications (194,324)

DOL filings BLS occupationsRecordAll recorded outcomes and visa classes. Use the wage badge to inspect an offer against available benchmarks.
Title · Worksite

A negative % sits below the BLS market median; a positive % sits above.

What the filing rows show One application per row

Each row links to the disclosure record. A wage comparison is a screening calculation, not a finding of a wage violation.

WARN notices (75)Public layoff notices: open to inspect
WARN EmployerReviewOpen a notice to inspect its stated effective date and worker count. Coverage varies by state; some states file no public WARN data.
151

Uber Technologies, Inc. 1725 3rd Street

2026-11-02 · San Francisco

102

Amazon - SF019

2026-10-20 · San Francisco

78

Salesforce, Inc.

2026-10-05 · San Francisco

74

Chime Financial, Inc.

2026-09-30 · 500 San Francisco

135

eBay Inc.

2026-09-30 · San Francisco

198

Uber Technologies, Inc. (Remote)

2026-09-21 · (Remote) San Francisco

14

Records to inspect

Open the linked public records behind this county's filings.

Immigration law firms (2,723)

DOL filings Law firmRecordNames are shown as recorded.

Federal contracts (1,488)

Federal awards EmployerRecordAmounts are individual award actions, not total contract values.
GENERAL MATTER, INC.
Department of Energy · Mar 4, 2026
$900M
TRM LABS, INC.
Department of Homeland Security · Jul 1, 2026
$94.7M
OSSIUM HEALTH, INC.
Department of Health and Human Services · Jul 27, 2026
$27.6M
OSSIUM HEALTH, INC.
Department of Health and Human Services · Mar 3, 2026
$12.4M
OSSIUM HEALTH, INC.
Department of Health and Human Services · Sep 4, 2026
$8.9M
CRAFT MACHINE INC.
Department of Defense · Mar 4, 2026
$8.2M
GECMS, INC
Department of Defense · May 27, 2026
$7.9M
REGENTS OF THE UNIVERSITY OF CALIFORNIA, SAN FRANCISCO, THE
Department of Health and Human Services · Jul 23, 2026
$7.5M

Evidence & sources

Scope, methods, and source coverage for this county record.

Public source records and site analysis. We do not attest to accuracy. Read the full disclaimer.

Dataset guides and site methods

  1. [1] Dataset documentation · DOL OFLC. LCA public disclosure record layout (FY2026 Q3). Pages 1–4: application, DOL outcome and dates, requested positions, employer, representatives, worksites and pay unitsThis layout covers determinations issued October 1, 2025 through June 30, 2026. It documents employer-provided application fields and DOL decisions, not USCIS decisions, payroll verification, legal bills or worker-linked moves. Older layouts can differ.Checked 2026-10-17.
  2. [2] Dataset documentation · BLS. OEWS technical notes (May 2025). Scope of the survey; occupational coding; concepts and estimation methodologyDocuments occupation and geographic wage estimates, not an individual worker’s pay. Use the estimate year and geography stated by the site; older releases can differ.Checked 2026-10-17.
  3. [3] XH1B method or registry · XH1B. WARN Notices (mass layoffs): source registry; Calculation and Matching Methods; Reading Public Records and Derived Indicators. Source registry entry: warn; Filing units, annualization, weighting, wage comparisons, and inference limits; Reading records: units, source coverage, wage gaps, entity links, and inference limitsXH1B dataset description: One row per source_notice_id. The definition of a mass layoff and the layoff threshold vary by state. The threshold is typically 50 or more employees.; These are the site's review methods, not validated predictions of wrongdoing. Inspect underlying records and alternative explanations.
  4. [4] Dataset documentation · USAspending / U.S. Treasury. Federal Spending Guide: contract transactions. Pages 3, 5, 9 and 17: transactions, amount fields and recipient identifiersContract downloads contain prime award transactions. XH1B’s use of recipient identifiers for employer links is its own processing step.Checked 2026-10-18.
  5. [5] XH1B method or registry · XH1B. Displacement Model and Assumptions. Eligibility, requested-position weighting, scopes, WARN matching, and counting limitsModel outputs are estimates. A matched layoff notice does not prove that an H-1B worker replaced a laid-off worker.
  6. [6] XH1B method or registry · XH1B. Downstream Research and Methods. Study populations, parameter bounds, baselines, and expected outcomes; linked model card
  7. [7] Dataset documentation · HRSA. Area Health Resources Files: 2024–2025 technical documentation. County User Guide: physicians, Table 10 NPI professions, population estimates and missing values; Technical Documentation: variable years and sourcesClinician categories and variable years differ. County APRN counts use NPI taxonomy; physician active and federal status matter. Release year is not the year of every measure.Checked 2026-10-18.
Questions about the data & methods

How many H-1B filings are in San Francisco County, CA?

176,802 H-1B labor condition applications requesting 325,766 workers have been filed in San Francisco County, CA, per Department of Labor disclosure records.

How many employers have H-1B filings in San Francisco County, CA?

15,271 distinct employers have filed H-1B labor condition applications in San Francisco County, CA. The employer list on this page is ranked by filings and wage impact.

What worker-equivalent exposure does the displacement model estimate for San Francisco County, CA?

The model estimates 360,276 worker-equivalents of displacement exposure in San Francisco County, CA: one per requested worker on a certified H-1B filing, raised where the offered wage sits below the occupation's BLS median, plus government-reported WARN layoffs matched to filings. This is a modeled exposure estimate, not a count of documented job losses; the formula is on the About page.

What is the median H-1B wage in San Francisco County, CA?

$125,000 per year is the median wage offered on H-1B labor condition applications filed for work in San Francisco County, CA. The wage-distribution chart on this page shows the spread around that median.

Who files the most H-1B filings in San Francisco County, CA?

Salesforce.com, Inc. leads with 6,796 filings, about 4% of all San Francisco County, CA filings. Its dossier page carries the full filing, wage, and layoff history.

What share of San Francisco County, CA H-1B filings does DOL deny?

DOL disclosure records show 171,578 certified, 2,006 denied, 4,311 withdrawn of 177,895 labor condition applications with reported outcomes in San Francisco County, CA. The denial share is 1% across the reported outcomes.

How many WARN layoff notices has San Francisco County, CA recorded?

75 Worker Adjustment and Retraining Notification (WARN) notices. Where a layoff employer then filed H-1B labor condition applications in the same window, the pair is recorded as a displacement event with an evidence score.

When did H-1B use peak in San Francisco County, CA?

Filings peaked in 2019 at 18,176 labor condition applications. The filings-by-year chart on this page shows the full trend since records began.

Which immigration law firms file the most H-1B filings in San Francisco County, CA?

2,723 distinct law firms and agents have filed H-1B applications for employers in San Francisco County, CA. The law-firm table on this page ranks them by filings and by the wage gap their filings carry.

Do San Francisco County, CA H-1B employers hold federal contracts?

1,488 federal contract actions in San Francisco County, CA name employers that also file H-1B labor condition applications. The contracts table links each award to the employer dossier. A shared employer name does not show how award funds were spent.

Where does the San Francisco County, CA H-1B data come from?

Every figure on this page traces to a public government record: DOL OFLC disclosure files (LCA filings, wages, outcomes), BLS OES wage data (occupation medians), state WARN notices, and federal contract awards. The archive is read-only evidence; nothing is crowdsourced or anonymous.