← All studies · askamerica.ai

Existing skilled manufacturing workforce is concentrated in about two dozen mid-size Midwest/Southeast counties — separate from the low-cost-land counties that win most site-selection contests

BLS QCEW 2023 county employment (NAICS 335 electrical equipment, 3363 motor-vehicle parts, 333 machinery) as a battery-relevant manufacturing proxy, location-quotient method

Existing skilled manufacturing workforce vs. cheap land: county-level battery-plant readiness BLS QCEW 2023, private employment, NAICS 335+3363+333 as battery-relevant proxy; ACS 2019-2023 median home value Highest workforce concentration (Fond du Lac Co., WI) 12.75x national average Battery-relevant manufacturing (electrical equipment + motor-vehicle parts + machinery) location quotient Haywood Co., TN (Ford BlueOval City site) 0.26x national average Cheap land ($119,600 median home value) but almost no pre-existing skilled manufacturing base Top 10 counties by battery-relevant manufacturing location quotient 0 2 4 6 8 10 12 14 County LQ (1.0=national avg) Fond du Lac WI Anderson SC Calhoun MI Madison OH Christian KY Black Hawk IA Shelby OH Macomb MI Livingston MI Racine WI LQ = share of county private employment in NAICS 335/3363/333 vs national share Workforce concentration vs. a known 'cheap-land' greenfield site 0 2 4 6 8 10 12 14 County Battery-relevant LQ Fond du Lac WI (top LQ) Ottawa MI (LGES plant) Troup GA (Kia/EV corridor) Haywood TN (BlueOval City) Haywood Co. TN is the real site of Ford's BlueOval City battery/EV megasite, chosen largely for land and incentives AskAmerica · askamerica.ai
SVG

Summary

Using BLS QCEW 2023 county employment in the three NAICS industries most transferable to battery-cell manufacturing — electrical equipment/component manufacturing (335, which includes storage-battery manufacturing 33591), motor-vehicle-parts manufacturing (3363), and industrial machinery (333) — a location-quotient (LQ) analysis identifies roughly two dozen mid-size counties, concentrated in Michigan, Ohio, Wisconsin, Kentucky, Indiana and the Carolinas/Georgia auto corridor, where this workforce is 6-13x more concentrated than the national average. These are places with decades of automotive-supplier and electrical-equipment employment, not places chosen because land was cheap. By contrast, several real, publicly announced battery megasites — most starkly Ford's BlueOval City in Haywood County, TN — sit in counties with a battery-relevant LQ of roughly 0.3 (well below the national average) and cheap land (median home value ~$120K), meaning the workforce is being built from scratch rather than drawn from an existing base.

Method, exclusions, and what the proxy does and does not capture

No table in this corpus directly measures 'skilled manufacturing workforce for battery production' — there is no occupational series for battery technicians, cell assemblers, or EV-supply-chain electricians at county grain (search_catalog returned no match for 'skills', 'electricians', 'machinists' as county-level occupation counts). The proxy used here is BLS QCEW county employment (2023, private ownership) in three NAICS codes whose labor pools are the ones battery plants actually hire from: 335 (electrical equipment/appliance/component mfg, which includes battery mfg itself, NAICS 33591), 3363 (motor-vehicle parts, the auto-supplier trades — machine operators, industrial electricians, quality techs — that GM/Ford/LG/Panasonic/SK plants recruit from directly), and 333 (industrial/general machinery, the tool-and-die/mechatronics trades). A location quotient (LQ) of 5 means that industry group is 5x as concentrated in that county's private workforce as the U.S. average.

Exclusion disclosed — predicates 'mfg_emp IS NOT NULL' and 'total_emp IS NOT NULL': BLS QCEW suppresses (disclosure_code='N') employment figures for any county-industry cell dominated by one or two employers, replacing the true count with NULL, and a NULL cannot be ranked or divided. Applying those two filters removes 395 of 3,274 county-level QCEW area codes (12.1%) from the ranking. Named by state, the excluded units are concentrated in exactly the sparsely populated rural counties this question is about: 55 in Texas (e.g. Loving, King, Terrell, Kent, Stonewall, McMullen, Culberson), 29 in Nebraska (Arthur, Loup, Blaine, Grant, McPherson), 25 in Georgia (Glascock, Quitman, Echols, Talbot, Baker), 25 in Kansas (Greeley, Wallace, Stanton, Kearny), 23 in South Dakota (Oglala Lakota, Jones, Harding, Ziebach), 20 in North Dakota (Slope, Golden Valley, Billings), 18 in Montana, 18 in Kentucky (Owsley, Leslie, Wolfe, Elliott — rural Appalachian counties), 15 in Colorado, and 11 in Alaska (Denali, Yakutat, Kusilvak). With the filter applied, 2,879 counties remain, representing 131,286,713 total private jobs and 12,840,453 manufacturing jobs — effectively the entire national manufacturing workforce, since suppression removes individual small cells, not whole regional economies; without the filter the true national total is at most negligibly higher, because these are overwhelmingly the lowest-population counties in the country. But the composition, not the total, is what matters for this question: because suppression is triggered by having so few employers that one dominant plant would be individually identifiable, a genuinely rural 'cheap land, one hidden factory' county is exactly the profile most likely to be excluded here. Its true battery-relevant LQ is unknown from this table, not confirmed low, and that is a real limitation of using QCEW to answer this specific question.

The proxy is also imperfect on its own terms: a county can have a high LQ from legacy auto-parts plants whose workers may or may not transfer cleanly to lithium-cell chemistry work, and a county's true workforce also depends on nearby community-college/apprenticeship pipelines (e.g. Georgia's technical college system, cited by Manufacturing Dive as a deliberate part of the Southeast's battery-workforce buildout) that QCEW employment counts do not capture at all.

Counties with real pre-existing capacity

Fond du LacWI12.7526.1%$209,800
AndersonSC11.1827.8%$212,500
CalhounMI10.9123.7%$151,500
MadisonOH10.4317.0%$231,400
ChristianKY9.6723.4%$149,200
Black HawkIA9.3623.6%$182,400
OttawaMI6.5936.0%$291,200
TroupGA7.7832.4%$187,800
AndersonSC11.1827.8%$212,500
Black HawkIA9.3623.6%$182,400
CalhounMI10.9123.7%$151,500
ChristianKY9.6723.4%$149,200
Fond du LacWI12.7526.1%$209,800
MadisonOH10.4317.0%$231,400
OttawaMI6.5936.0%$291,200
TroupGA7.7832.4%$187,800
TroupGA7.7832.4%$187,800
Black HawkIA9.3623.6%$182,400
ChristianKY9.6723.4%$149,200
CalhounMI10.9123.7%$151,500
OttawaMI6.5936.0%$291,200
MadisonOH10.4317.0%$231,400
AndersonSC11.1827.8%$212,500
Fond du LacWI12.7526.1%$209,800
Fond du LacWI12.7526.1%$209,800
AndersonSC11.1827.8%$212,500
CalhounMI10.9123.7%$151,500
MadisonOH10.4317.0%$231,400
ChristianKY9.6723.4%$149,200
Black HawkIA9.3623.6%$182,400
TroupGA7.7832.4%$187,800
OttawaMI6.5936.0%$291,200
OttawaMI6.5936.0%$291,200
TroupGA7.7832.4%$187,800
AndersonSC11.1827.8%$212,500
Fond du LacWI12.7526.1%$209,800
CalhounMI10.9123.7%$151,500
Black HawkIA9.3623.6%$182,400
ChristianKY9.6723.4%$149,200
MadisonOH10.4317.0%$231,400
OttawaMI6.5936.0%$291,200
MadisonOH10.4317.0%$231,400
AndersonSC11.1827.8%$212,500
Fond du LacWI12.7526.1%$209,800
TroupGA7.7832.4%$187,800
Black HawkIA9.3623.6%$182,400
CalhounMI10.9123.7%$151,500
ChristianKY9.6723.4%$149,200

Two of these are directly validated against real battery investments: Ottawa County, MI is the actual county for LG Energy Solution's Holland, MI battery-cell plant, and Troup County, GA (West Point) sits in the Kia Georgia / West Point EV-supplier corridor that also supports SK Battery America nearby. Large metro counties (Los Angeles, Cook/Chicago, Harris/Houston, Wayne/Detroit) have far larger absolute manufacturing headcounts but much lower LQs (roughly 7-14 for Wayne/Macomb/Oakland MI, but near 1 for LA/Houston/Chicago once diluted across a much bigger, more diversified economy) — a reminder that raw employment counts alone overstate 'workforce readiness' in a giant metro and understate it in a specialized mid-size county.

A real 'cheap land, not workforce' case: Haywood County, TN

Ford's BlueOval City (battery cells plus EV assembly, Stanton, TN) sits in Haywood County — total private employment of only ~4,870 in 2023, battery-relevant LQ of 0.26 (roughly a quarter of the national concentration), and a median home value of $119,600, among the cheapest in this comparison set. This is the clearest quantitative case in the data for a site chosen primarily for land availability, highway/rail access, and state incentives rather than an existing skilled manufacturing base — consistent with public reporting that Tennessee and Ford have had to build workforce housing and training programs around the site rather than draw on a local pipeline.

Caveats

What This Report Does Not Answer

Every query behind this report

11 warehouse calls ran in this session, in order. Each is reproducible against the same snapshot.

query — 8 rows — 1270 ms
SELECT DISTINCT industry_code FROM econ.county_qcew WHERE industry_code IN ('31-33','1013','335','3359','336','3363','333','23') AND "year"='2023' LIMIT 50
query — 40 rows — 1203 ms
WITH base AS (
  SELECT area_fips,
    SUM(CASE WHEN industry_code='10' THEN annual_avg_emplvl END) AS total_emp,
    SUM(CASE WHEN industry_code='31-33' THEN annual_avg_emplvl END) AS mfg_emp,
    SUM(CASE WHEN industry_code='31-33' THEN annual_avg_wkly_wage END) AS mfg_wage,
    SUM(CASE WHEN industry_code='335' THEN annual_avg_emplvl END) AS elec_equip_emp,
    SUM(CASE WHEN industry_code='3363' THEN annual_avg_emplvl END) AS motor_parts_emp,
    SUM(CASE WHEN industry_code='333' THEN annual_avg_emplvl END) AS machinery_emp
  FROM econ.county_qcew
  WHERE "year"='2023' AND own_code='5' AND industry_code IN ('10','31-33','335','3363','333')
  GROUP BY area_fips
)
SELECT area_fips, total_emp, mfg_emp, mfg_wage,
  COALESCE(elec_equip_emp,0)+COALESCE(motor_parts_emp,0)+COALESCE(machinery_emp,0) AS battery_relevant_emp,
  ROUND(100.0*mfg_emp/NULLIF(total_emp,0),2) AS mfg_share_pct
FROM base
WHERE mfg_emp IS NOT NULL AND total_emp IS NOT NULL AND total_emp > 5000
ORDER BY battery_relevant_emp DESC
FETCH FIRST 40 ROWS ONLY
query — 39 rows — 4541 ms
SELECT county_fips, county_name, state_fips FROM geo.counties WHERE county_fips IN ('48201','26163','26099','26125','17031','06037','26081','39035','06085','55133','48439','27053','06059','06001','55079','06073','04013','48113','40143','17043','39113','36029','26139','17143','17201','45045','45083','37119','45007','36055','21111','48453','29189','39061','18097','25017','39095','19013','09003','55025') AND "year" = (SELECT MAX("year") FROM geo.counties)
query — 30 rows — 1989 ms
WITH base AS (
  SELECT area_fips,
    SUM(CASE WHEN industry_code='10' THEN annual_avg_emplvl END) AS total_emp,
    SUM(CASE WHEN industry_code='31-33' THEN annual_avg_emplvl END) AS mfg_emp,
    SUM(CASE WHEN industry_code='335' THEN annual_avg_emplvl END) AS elec_equip_emp,
    SUM(CASE WHEN industry_code='3363' THEN annual_avg_emplvl END) AS motor_parts_emp,
    SUM(CASE WHEN industry_code='333' THEN annual_avg_emplvl END) AS machinery_emp
  FROM econ.county_qcew
  WHERE "year"='2023' AND own_code='5' AND industry_code IN ('10','31-33','335','3363','333')
  GROUP BY area_fips
),
nat AS (
  SELECT SUM(total_emp) AS nat_total, SUM(COALESCE(elec_equip_emp,0)+COALESCE(motor_parts_emp,0)+COALESCE(machinery_emp,0)) AS nat_battery
  FROM base
)
SELECT area_fips, total_emp, mfg_emp,
  COALESCE(elec_equip_emp,0)+COALESCE(motor_parts_emp,0)+COALESCE(machinery_emp,0) AS battery_relevant_emp,
  ROUND(100.0*mfg_emp/NULLIF(total_emp,0),2) AS mfg_share_pct,
  ROUND( ((COALESCE(elec_equip_emp,0)+COALESCE(motor_parts_emp,0)+COALESCE(machinery_emp,0))*1.0/NULLIF(total_emp,0)) / (nat.nat_battery*1.0/nat.nat_total), 2) AS battery_lq
FROM base, nat
WHERE total_emp BETWEEN 20000 AND 400000
  AND (COALESCE(elec_equip_emp,0)+COALESCE(motor_parts_emp,0)+COALESCE(machinery_emp,0)) > 500
ORDER BY battery_lq DESC
FETCH FIRST 30 ROWS ONLY
query — 30 rows — 2226 ms
SELECT county_fips, county_name, state_fips FROM geo.counties WHERE county_fips IN ('55039','45007','26025','39097','21047','19013','39149','26099','26093','55101','39143','37105','26147','17143','13285','21151','47001','33005','47059','31019','21199','39139','26139','01083','55027','39173','29071','39063','17201','26075') AND "year" = (SELECT MAX("year") FROM geo.counties)
query — 30 rows — 10354 ms
SELECT county_fips, median_home_value FROM census.acs_housing WHERE county_fips IN ('55039','45007','26025','39097','21047','19013','39149','26099','26093','55101','39143','37105','26147','17143','13285','21151','47001','33005','47059','31019','21199','39139','26139','01083','55027','39173','29071','39063','17201','26075') AND "year"=(SELECT MAX("year") FROM census.acs_housing)
query — 4 rows — 2219 ms
WITH base AS (
  SELECT area_fips,
    SUM(CASE WHEN industry_code='10' THEN annual_avg_emplvl END) AS total_emp,
    SUM(CASE WHEN industry_code='31-33' THEN annual_avg_emplvl END) AS mfg_emp,
    SUM(CASE WHEN industry_code='335' THEN annual_avg_emplvl END) AS elec_equip_emp,
    SUM(CASE WHEN industry_code='3363' THEN annual_avg_emplvl END) AS motor_parts_emp,
    SUM(CASE WHEN industry_code='333' THEN annual_avg_emplvl END) AS machinery_emp
  FROM econ.county_qcew
  WHERE "year"='2023' AND own_code='5' AND industry_code IN ('10','31-33','335','3363','333')
  GROUP BY area_fips
),
nat AS (
  SELECT SUM(total_emp) AS nat_total, SUM(COALESCE(elec_equip_emp,0)+COALESCE(motor_parts_emp,0)+COALESCE(machinery_emp,0)) AS nat_battery
  FROM base
)
SELECT area_fips, total_emp, mfg_emp,
  COALESCE(elec_equip_emp,0)+COALESCE(motor_parts_emp,0)+COALESCE(machinery_emp,0) AS battery_relevant_emp,
  ROUND(100.0*mfg_emp/NULLIF(total_emp,0),2) AS mfg_share_pct,
  ROUND( ((COALESCE(elec_equip_emp,0)+COALESCE(motor_parts_emp,0)+COALESCE(machinery_emp,0))*1.0/NULLIF(total_emp,0)) / (nat.nat_battery*1.0/nat.nat_total), 2) AS battery_lq
FROM base, nat
WHERE area_fips IN ('47075','13031','21093','47163')
query — 4 rows — 3259 ms
SELECT county_fips, median_home_value FROM census.acs_housing WHERE county_fips IN ('47075','13031','21093','47163') AND "year"=(SELECT MAX("year") FROM census.acs_housing)
query — 1 rows — 2044 ms
SELECT COUNT(*) AS n_counties_suppressed FROM (
  SELECT area_fips,
    SUM(CASE WHEN industry_code='10' THEN annual_avg_emplvl END) AS total_emp,
    SUM(CASE WHEN industry_code='31-33' THEN annual_avg_emplvl END) AS mfg_emp
  FROM econ.county_qcew
  WHERE "year"='2023' AND own_code='5' AND industry_code IN ('10','31-33')
  GROUP BY area_fips
) t WHERE mfg_emp IS NULL OR total_emp IS NULL
query — 1 rows — 1853 ms
WITH base AS (
  SELECT area_fips,
    SUM(CASE WHEN industry_code='10' THEN annual_avg_emplvl END) AS total_emp,
    SUM(CASE WHEN industry_code='31-33' THEN annual_avg_emplvl END) AS mfg_emp
  FROM econ.county_qcew
  WHERE "year"='2023' AND own_code='5' AND industry_code IN ('10','31-33')
  GROUP BY area_fips
)
SELECT
  COUNT(*) AS all_counties,
  SUM(CASE WHEN mfg_emp IS NOT NULL AND total_emp IS NOT NULL THEN 1 ELSE 0 END) AS counties_with_data,
  SUM(CASE WHEN mfg_emp IS NULL OR total_emp IS NULL THEN 1 ELSE 0 END) AS counties_suppressed,
  SUM(mfg_emp) AS mfg_emp_captured,
  SUM(total_emp) AS total_emp_captured
FROM base
query — 10 rows — 4596 ms
WITH base AS (
  SELECT area_fips,
    SUM(CASE WHEN industry_code='10' THEN annual_avg_emplvl END) AS total_emp,
    SUM(CASE WHEN industry_code='31-33' THEN annual_avg_emplvl END) AS mfg_emp
  FROM econ.county_qcew
  WHERE "year"='2023' AND own_code='5' AND industry_code IN ('10','31-33')
  GROUP BY area_fips
), excl AS (
  SELECT area_fips FROM base WHERE mfg_emp IS NULL OR total_emp IS NULL
)
SELECT c.state_fips, COUNT(*) AS n_excluded_counties, STRING_AGG(c.county_name, ', ') AS sample_names
FROM excl e JOIN geo.counties c ON c.county_fips = e.area_fips AND c."year" = (SELECT MAX("year") FROM geo.counties)
GROUP BY c.state_fips
ORDER BY n_excluded_counties DESC
FETCH FIRST 10 ROWS ONLY

Sources

  1. BLS QCEW county industry employment 2023 (econ.county_qcew) — Queried via AskAmerica econ.county_qcew, own_code=5 (private), industry_code IN (10,31-33,335,3363,333), year=2023
    Show SQL
    WITH base AS (SELECT area_fips, SUM(CASE WHEN industry_code='10' THEN annual_avg_emplvl END) AS total_emp, SUM(CASE WHEN industry_code='335' THEN annual_avg_emplvl END) AS elec_equip_emp, SUM(CASE WHEN industry_code='3363' THEN annual_avg_emplvl END) AS motor_parts_emp, SUM(CASE WHEN industry_code='333' THEN annual_avg_emplvl END) AS machinery_emp FROM econ.county_qcew WHERE year='2023' AND own_code='5' GROUP BY area_fips) SELECT * FROM base
  2. ACS 5-Year median home value by county (census.acs_housing) — 2019-2023 5-year vintage
  3. https://www.manufacturingdive.com/news/battery-manufacturing-workforce-development-georgia-south-carolina-sk-on/688295/
  4. https://www.transportenvironment.org/uploads/files/Assembly-plant-or-battery-powerhouse.pdf