{
  "title": "How much do plumbers make by US metro",
  "trade": "Plumber",
  "socCode": "47-2152",
  "generated": "2026-06-01",
  "dataSource": "BLS OEWS May 2025 metropolitan files",
  "notes": [
    "Raw BLS OEWS May 2025 metropolitan medians (p50) for plumbers (SOC 47-2152). Not cost-of-living adjusted: expensive metros rank higher partly because they are expensive. These are highest-PAYING metros for plumbers, not \"best places to work.\"",
    "Plumber data is complete across this metro set - BLS published wages for all 50 of 50 metros, so no metro is imputed or dropped.",
    "OEWS is an employer survey of wages, not total compensation - it excludes benefits, overtime, and self-employment (business-owner) income, which can be a large share of a plumber's pay.",
    "The \"New York\" metro is the BLS New York-Newark-Jersey City, NY-NJ area; metro figures cover the whole CBSA, not the five boroughs alone.",
    "Metro set is the 50 US metros with the most skilled-trades employment; not every US metro is covered. A single May 2025 vintage, not a trend."
  ],
  "summary": {
    "metroCount": 50,
    "metrosCovered": 50,
    "metrosSuppressed": 0,
    "coveragePct": 100,
    "top": {
      "metroName": "San Jose, CA",
      "primState": "CA",
      "annualP50": 107560
    },
    "bottom": {
      "metroName": "Tampa, FL",
      "primState": "FL",
      "annualP50": 52000
    },
    "spread": 55560,
    "crossMetroMedian": 64360
  },
  "rankings": [
    {
      "rank": 1,
      "metroSlug": "san-jose-ca",
      "metroName": "San Jose, CA",
      "primState": "CA",
      "areaTitle": "San Jose-Sunnyvale-Santa Clara, CA",
      "annualP25": 76040,
      "annualP50": 107560,
      "annualP75": 155600,
      "hourlyP50": 51.71,
      "employment": 3830
    },
    {
      "rank": 2,
      "metroSlug": "chicago-il",
      "metroName": "Chicago, IL",
      "primState": "IL",
      "areaTitle": "Chicago-Naperville-Elgin, IL-IN",
      "annualP25": 74300,
      "annualP50": 103380,
      "annualP75": 122540,
      "hourlyP50": 49.7,
      "employment": 12750
    },
    {
      "rank": 3,
      "metroSlug": "minneapolis-mn",
      "metroName": "Minneapolis, MN",
      "primState": "MN",
      "areaTitle": "Minneapolis-St. Paul-Bloomington, MN-WI",
      "annualP25": 65290,
      "annualP50": 101630,
      "annualP75": 114980,
      "hourlyP50": 48.86,
      "employment": 6730
    },
    {
      "rank": 4,
      "metroSlug": "portland-or",
      "metroName": "Portland, OR",
      "primState": "OR",
      "areaTitle": "Portland-Vancouver-Hillsboro, OR-WA",
      "annualP25": 72440,
      "annualP50": 101010,
      "annualP75": 128360,
      "hourlyP50": 48.56,
      "employment": 4600
    },
    {
      "rank": 5,
      "metroSlug": "boston-ma",
      "metroName": "Boston, MA",
      "primState": "MA",
      "areaTitle": "Boston-Cambridge-Newton, MA-NH",
      "annualP25": 62640,
      "annualP50": 96760,
      "annualP75": 117900,
      "hourlyP50": 46.52,
      "employment": 9200
    },
    {
      "rank": 6,
      "metroSlug": "seattle-wa",
      "metroName": "Seattle, WA",
      "primState": "WA",
      "areaTitle": "Seattle-Tacoma-Bellevue, WA",
      "annualP25": 62040,
      "annualP50": 95230,
      "annualP75": 126730,
      "hourlyP50": 45.78,
      "employment": 6350
    },
    {
      "rank": 7,
      "metroSlug": "detroit-mi",
      "metroName": "Detroit, MI",
      "primState": "MI",
      "areaTitle": "Detroit-Warren-Dearborn, MI",
      "annualP25": 61190,
      "annualP50": 86370,
      "annualP75": 99650,
      "hourlyP50": 41.53,
      "employment": 5520
    },
    {
      "rank": 8,
      "metroSlug": "milwaukee-wi",
      "metroName": "Milwaukee, WI",
      "primState": "WI",
      "areaTitle": "Milwaukee-Waukesha, WI",
      "annualP25": 62350,
      "annualP50": 84700,
      "annualP75": 108000,
      "hourlyP50": 40.72,
      "employment": 2760
    },
    {
      "rank": 9,
      "metroSlug": "grand-rapids-mi",
      "metroName": "Grand Rapids, MI",
      "primState": "MI",
      "areaTitle": "Grand Rapids-Wyoming-Kentwood, MI",
      "annualP25": 57550,
      "annualP50": 80440,
      "annualP75": 91310,
      "hourlyP50": 38.67,
      "employment": 2270
    },
    {
      "rank": 10,
      "metroSlug": "providence-ri",
      "metroName": "Providence, RI",
      "primState": "RI",
      "areaTitle": "Providence-Warwick, RI-MA",
      "annualP25": 57730,
      "annualP50": 79820,
      "annualP75": 106710,
      "hourlyP50": 38.37,
      "employment": 3000
    },
    {
      "rank": 11,
      "metroSlug": "new-york-ny",
      "metroName": "New York, NY",
      "primState": "NY",
      "areaTitle": "New York-Newark-Jersey City, NY-NJ",
      "annualP25": 61900,
      "annualP50": 78610,
      "annualP75": 107970,
      "hourlyP50": 37.79,
      "employment": 21040
    },
    {
      "rank": 12,
      "metroSlug": "san-francisco-ca",
      "metroName": "San Francisco, CA",
      "primState": "CA",
      "areaTitle": "San Francisco-Oakland-Fremont, CA",
      "annualP25": 62650,
      "annualP50": 77880,
      "annualP75": 121770,
      "hourlyP50": 37.44,
      "employment": 5660
    },
    {
      "rank": 13,
      "metroSlug": "st-louis-mo",
      "metroName": "St. Louis, MO",
      "primState": "MO",
      "areaTitle": "St. Louis, MO-IL",
      "annualP25": 57430,
      "annualP50": 77000,
      "annualP75": 103830,
      "hourlyP50": 37.02,
      "employment": 4060
    },
    {
      "rank": 14,
      "metroSlug": "indianapolis-in",
      "metroName": "Indianapolis, IN",
      "primState": "IN",
      "areaTitle": "Indianapolis-Carmel-Greenwood, IN",
      "annualP25": 59830,
      "annualP50": 76980,
      "annualP75": 97480,
      "hourlyP50": 37.01,
      "employment": 4010
    },
    {
      "rank": 15,
      "metroSlug": "kansas-city-mo",
      "metroName": "Kansas City, MO",
      "primState": "MO",
      "areaTitle": "Kansas City, MO-KS",
      "annualP25": 57020,
      "annualP50": 76150,
      "annualP75": 98990,
      "hourlyP50": 36.61,
      "employment": 3740
    },
    {
      "rank": 16,
      "metroSlug": "philadelphia-pa",
      "metroName": "Philadelphia, PA",
      "primState": "PA",
      "areaTitle": "Philadelphia-Camden-Wilmington, PA-NJ-DE-MD",
      "annualP25": 60900,
      "annualP50": 74860,
      "annualP75": 103770,
      "hourlyP50": 35.99,
      "employment": 7150
    },
    {
      "rank": 17,
      "metroSlug": "louisville-ky",
      "metroName": "Louisville, KY",
      "primState": "KY",
      "areaTitle": "Louisville/Jefferson County, KY-IN",
      "annualP25": 51660,
      "annualP50": 74680,
      "annualP75": 88420,
      "hourlyP50": 35.91,
      "employment": 2780
    },
    {
      "rank": 18,
      "metroSlug": "baton-rouge-la",
      "metroName": "Baton Rouge, LA",
      "primState": "LA",
      "areaTitle": "Baton Rouge, LA",
      "annualP25": 62460,
      "annualP50": 74240,
      "annualP75": 77360,
      "hourlyP50": 35.69,
      "employment": 2790
    },
    {
      "rank": 19,
      "metroSlug": "san-diego-ca",
      "metroName": "San Diego, CA",
      "primState": "CA",
      "areaTitle": "San Diego-Chula Vista-Carlsbad, CA",
      "annualP25": 61390,
      "annualP50": 72510,
      "annualP75": 94480,
      "hourlyP50": 34.86,
      "employment": 5100
    },
    {
      "rank": 20,
      "metroSlug": "washington-dc",
      "metroName": "Washington, DC",
      "primState": "DC",
      "areaTitle": "Washington-Arlington-Alexandria, DC-VA-MD-WV",
      "annualP25": 55780,
      "annualP50": 71860,
      "annualP75": 94050,
      "hourlyP50": 34.55,
      "employment": 9420
    },
    {
      "rank": 21,
      "metroSlug": "los-angeles-ca",
      "metroName": "Los Angeles, CA",
      "primState": "CA",
      "areaTitle": "Los Angeles-Long Beach-Anaheim, CA",
      "annualP25": 58560,
      "annualP50": 71110,
      "annualP75": 101300,
      "hourlyP50": 34.19,
      "employment": 15690
    },
    {
      "rank": 22,
      "metroSlug": "pittsburgh-pa",
      "metroName": "Pittsburgh, PA",
      "primState": "PA",
      "areaTitle": "Pittsburgh, PA",
      "annualP25": 59780,
      "annualP50": 70100,
      "annualP75": 84870,
      "hourlyP50": 33.7,
      "employment": 2910
    },
    {
      "rank": 23,
      "metroSlug": "sacramento-ca",
      "metroName": "Sacramento, CA",
      "primState": "CA",
      "areaTitle": "Sacramento-Roseville-Folsom, CA",
      "annualP25": 56320,
      "annualP50": 65210,
      "annualP75": 85340,
      "hourlyP50": 31.35,
      "employment": 3120
    },
    {
      "rank": 24,
      "metroSlug": "cincinnati-oh",
      "metroName": "Cincinnati, OH",
      "primState": "OH",
      "areaTitle": "Cincinnati, OH-KY-IN",
      "annualP25": 50290,
      "annualP50": 65160,
      "annualP75": 84740,
      "hourlyP50": 31.33,
      "employment": 3640
    },
    {
      "rank": 25,
      "metroSlug": "salt-lake-city-ut",
      "metroName": "Salt Lake City, UT",
      "primState": "UT",
      "areaTitle": "Salt Lake City-Murray, UT",
      "annualP25": 50940,
      "annualP50": 64800,
      "annualP75": 79740,
      "hourlyP50": 31.15,
      "employment": 3190
    },
    {
      "rank": 26,
      "metroSlug": "riverside-ca",
      "metroName": "Riverside, CA",
      "primState": "CA",
      "areaTitle": "Riverside-San Bernardino-Ontario, CA",
      "annualP25": 53180,
      "annualP50": 63920,
      "annualP75": 81250,
      "hourlyP50": 30.73,
      "employment": 4510
    },
    {
      "rank": 27,
      "metroSlug": "denver-co",
      "metroName": "Denver, CO",
      "primState": "CO",
      "areaTitle": "Denver-Aurora-Centennial, CO",
      "annualP25": 59920,
      "annualP50": 63900,
      "annualP75": 81350,
      "hourlyP50": 30.72,
      "employment": 5750
    },
    {
      "rank": 28,
      "metroSlug": "phoenix-az",
      "metroName": "Phoenix, AZ",
      "primState": "AZ",
      "areaTitle": "Phoenix-Mesa-Chandler, AZ",
      "annualP25": 54430,
      "annualP50": 63750,
      "annualP75": 90470,
      "hourlyP50": 30.65,
      "employment": 9270
    },
    {
      "rank": 29,
      "metroSlug": "omaha-ne",
      "metroName": "Omaha, NE",
      "primState": "NE",
      "areaTitle": "Omaha, NE-IA",
      "annualP25": 49140,
      "annualP50": 63400,
      "annualP75": 92810,
      "hourlyP50": 30.48,
      "employment": 2430
    },
    {
      "rank": 30,
      "metroSlug": "columbus-oh",
      "metroName": "Columbus, OH",
      "primState": "OH",
      "areaTitle": "Columbus, OH",
      "annualP25": 49340,
      "annualP50": 63260,
      "annualP75": 85370,
      "hourlyP50": 30.41,
      "employment": 3060
    },
    {
      "rank": 31,
      "metroSlug": "baltimore-md",
      "metroName": "Baltimore, MD",
      "primState": "MD",
      "areaTitle": "Baltimore-Columbia-Towson, MD",
      "annualP25": 54880,
      "annualP50": 63200,
      "annualP75": 82710,
      "hourlyP50": 30.38,
      "employment": 5220
    },
    {
      "rank": 32,
      "metroSlug": "cleveland-oh",
      "metroName": "Cleveland, OH",
      "primState": "OH",
      "areaTitle": "Cleveland, OH",
      "annualP25": 50510,
      "annualP50": 63020,
      "annualP75": 83080,
      "hourlyP50": 30.3,
      "employment": 3040
    },
    {
      "rank": 33,
      "metroSlug": "austin-tx",
      "metroName": "Austin, TX",
      "primState": "TX",
      "areaTitle": "Austin-Round Rock-San Marcos, TX",
      "annualP25": 48760,
      "annualP50": 62810,
      "annualP75": 79710,
      "hourlyP50": 30.2,
      "employment": 5260
    },
    {
      "rank": 34,
      "metroSlug": "virginia-beach-va",
      "metroName": "Virginia Beach, VA",
      "primState": "VA",
      "areaTitle": "Virginia Beach-Chesapeake-Norfolk, VA-NC",
      "annualP25": 49500,
      "annualP50": 61870,
      "annualP75": 65510,
      "hourlyP50": 29.75,
      "employment": 5100
    },
    {
      "rank": 35,
      "metroSlug": "richmond-va",
      "metroName": "Richmond, VA",
      "primState": "VA",
      "areaTitle": "Richmond, VA",
      "annualP25": 48500,
      "annualP50": 61480,
      "annualP75": 72020,
      "hourlyP50": 29.56,
      "employment": 2340
    },
    {
      "rank": 36,
      "metroSlug": "houston-tx",
      "metroName": "Houston, TX",
      "primState": "TX",
      "areaTitle": "Houston-Pasadena-The Woodlands, TX",
      "annualP25": 49260,
      "annualP50": 61300,
      "annualP75": 75680,
      "hourlyP50": 29.47,
      "employment": 10980
    },
    {
      "rank": 37,
      "metroSlug": "dallas-tx",
      "metroName": "Dallas, TX",
      "primState": "TX",
      "areaTitle": "Dallas-Fort Worth-Arlington, TX",
      "annualP25": 47910,
      "annualP50": 61250,
      "annualP75": 75290,
      "hourlyP50": 29.45,
      "employment": 11980
    },
    {
      "rank": 38,
      "metroSlug": "raleigh-nc",
      "metroName": "Raleigh, NC",
      "primState": "NC",
      "areaTitle": "Raleigh-Cary, NC",
      "annualP25": 48370,
      "annualP50": 60540,
      "annualP75": 70010,
      "hourlyP50": 29.1,
      "employment": 2810
    },
    {
      "rank": 39,
      "metroSlug": "nashville-tn",
      "metroName": "Nashville, TN",
      "primState": "TN",
      "areaTitle": "Nashville-Davidson--Murfreesboro--Franklin, TN",
      "annualP25": 49020,
      "annualP50": 60100,
      "annualP75": 75090,
      "hourlyP50": 28.9,
      "employment": 2760
    },
    {
      "rank": 40,
      "metroSlug": "birmingham-al",
      "metroName": "Birmingham, AL",
      "primState": "AL",
      "areaTitle": "Birmingham, AL",
      "annualP25": 49240,
      "annualP50": 60090,
      "annualP75": 64450,
      "hourlyP50": 28.89,
      "employment": 1840
    },
    {
      "rank": 41,
      "metroSlug": "las-vegas-nv",
      "metroName": "Las Vegas, NV",
      "primState": "NV",
      "areaTitle": "Las Vegas-Henderson-North Las Vegas, NV",
      "annualP25": 47380,
      "annualP50": 59700,
      "annualP75": 87620,
      "hourlyP50": 28.7,
      "employment": 3800
    },
    {
      "rank": 42,
      "metroSlug": "oklahoma-city-ok",
      "metroName": "Oklahoma City, OK",
      "primState": "OK",
      "areaTitle": "Oklahoma City, OK",
      "annualP25": 47270,
      "annualP50": 59150,
      "annualP75": 79080,
      "hourlyP50": 28.44,
      "employment": 2400
    },
    {
      "rank": 43,
      "metroSlug": "jacksonville-fl",
      "metroName": "Jacksonville, FL",
      "primState": "FL",
      "areaTitle": "Jacksonville, FL",
      "annualP25": 47600,
      "annualP50": 58920,
      "annualP75": 63930,
      "hourlyP50": 28.33,
      "employment": 2380
    },
    {
      "rank": 44,
      "metroSlug": "charlotte-nc",
      "metroName": "Charlotte, NC",
      "primState": "NC",
      "areaTitle": "Charlotte-Concord-Gastonia, NC-SC",
      "annualP25": 47430,
      "annualP50": 58690,
      "annualP75": 64230,
      "hourlyP50": 28.22,
      "employment": 3840
    },
    {
      "rank": 45,
      "metroSlug": "atlanta-ga",
      "metroName": "Atlanta, GA",
      "primState": "GA",
      "areaTitle": "Atlanta-Sandy Springs-Roswell, GA",
      "annualP25": 45950,
      "annualP50": 58380,
      "annualP75": 71950,
      "hourlyP50": 28.07,
      "employment": 5470
    },
    {
      "rank": 46,
      "metroSlug": "san-antonio-tx",
      "metroName": "San Antonio, TX",
      "primState": "TX",
      "areaTitle": "San Antonio-New Braunfels, TX",
      "annualP25": 46230,
      "annualP50": 58180,
      "annualP75": 68510,
      "hourlyP50": 27.97,
      "employment": 3190
    },
    {
      "rank": 47,
      "metroSlug": "miami-fl",
      "metroName": "Miami, FL",
      "primState": "FL",
      "areaTitle": "Miami-Fort Lauderdale-West Palm Beach, FL",
      "annualP25": 47560,
      "annualP50": 57760,
      "annualP75": 63960,
      "hourlyP50": 27.77,
      "employment": 5930
    },
    {
      "rank": 48,
      "metroSlug": "boise-city-id",
      "metroName": "Boise City, ID",
      "primState": "ID",
      "areaTitle": "Boise City, ID",
      "annualP25": 46600,
      "annualP50": 56940,
      "annualP75": 74640,
      "hourlyP50": 27.38,
      "employment": 1760
    },
    {
      "rank": 49,
      "metroSlug": "orlando-fl",
      "metroName": "Orlando, FL",
      "primState": "FL",
      "areaTitle": "Orlando-Kissimmee-Sanford, FL",
      "annualP25": 47520,
      "annualP50": 55380,
      "annualP75": 61750,
      "hourlyP50": 26.62,
      "employment": 4040
    },
    {
      "rank": 50,
      "metroSlug": "tampa-fl",
      "metroName": "Tampa, FL",
      "primState": "FL",
      "areaTitle": "Tampa-St. Petersburg-Clearwater, FL",
      "annualP25": 48740,
      "annualP50": 52000,
      "annualP75": 61720,
      "hourlyP50": 25,
      "employment": 4180
    }
  ],
  "faqs": [
    {
      "question": "How much do plumbers make in NYC?",
      "answer": "The median plumber wage in the New York metro is $78,610 a year (about $37.79/hour), per BLS OEWS May 2025. Half of New York metro plumbers earn between $61,900 (25th percentile) and $107,970 (75th percentile). This is the BLS figure for the New York-Newark-Jersey City area; it is a before-tax employer-survey wage and does not include benefits, overtime, or self-employment income."
    },
    {
      "question": "Which US metro pays plumbers the most?",
      "answer": "Of the 50 metros with BLS plumber data, San Jose, CA pays the highest median at $107,560 a year, per BLS OEWS May 2025. These are raw wages, not adjusted for cost of living, which is high in San Jose, CA."
    },
    {
      "question": "Do plumbers make more in expensive coastal cities?",
      "answer": "Not always. In raw BLS dollars, Chicago, IL plumbers (median $103,380, rank #2) out-earn San Francisco, CA plumbers (median $77,880, rank #12) - and Chicago is far cheaper to live in (BLS OEWS May 2025). Strong building-trades unions, not just local cost of living, push plumber wages up. We don't cost-of-living adjust, so read the ranking as \"highest-paying before rent,\" not \"best place to work.\""
    },
    {
      "question": "How much do plumbers make in Chicago?",
      "answer": "The median plumber wage in the Chicago metro is $103,380 a year ($74,300 to $122,540 between the 25th and 75th percentiles), per BLS OEWS May 2025."
    },
    {
      "question": "How much do plumbers make in Los Angeles?",
      "answer": "The median plumber wage in the Los Angeles metro is $71,110 a year ($58,560 to $101,300 between the 25th and 75th percentiles), per BLS OEWS May 2025."
    },
    {
      "question": "How much do plumbers make in Houston?",
      "answer": "The median plumber wage in the Houston metro is $61,300 a year ($49,260 to $75,680 between the 25th and 75th percentiles), per BLS OEWS May 2025."
    },
    {
      "question": "What is the typical plumber wage across major US metros?",
      "answer": "Across the 50 metros with BLS plumber data, the metro medians run from $52,000 (Tampa, FL) to $107,560 (San Jose, CA), a $55,560 spread. The middle of that set sits near $64,360. That figure describes these metros, not a national average. All numbers are BLS OEWS May 2025 medians."
    }
  ]
}
