Data checked · source: US Bureau of Labor Statistics
For journalists and researchers
Everything on this page is free to quote. You do not need our permission, you do not need to ask, and we will not send you a follow-up email.
What we are: one person computing what US field work costs, from BLS wage data and verified retail prices. Not a marketplace, not a lead generator, no advertisers. How we make money.
Findings you can use today
These are calculated from the May 2025 OEWS release across 49 metro areas. We have not found anywhere else publishing the metro-level spread for these trades in one place.
1. The same trade pays 156% more in one US metro than another
Equipment Operators earn a median $59.97 an hour in San Francisco-Oakland-Fremont and $23.41 in Oklahoma City — a 2.56× gap for the same job title.
| Trade | US median | Highest metro | Lowest metro | Gap |
|---|---|---|---|---|
| Equipment Operator | $28.78 | San Francisco-Oakland-Fremont $59.97 | Oklahoma City $23.41 | 156% |
| Plumber | $30.67 | San Jose-Sunnyvale-Santa Clara $51.71 | Tampa-St. Petersburg-Clearwater $25.00 | 107% |
| Electrician | $30.38 | Portland-Vancouver-Hillsboro $50.53 | Orlando-Kissimmee-Sanford $24.43 | 107% |
| Roofer | $26.65 | Chicago-Naperville-Elgin $39.47 | Oklahoma City $21.00 | 88% |
| Tile Setter | $26.77 | Boston-Cambridge-Newton $39.54 | New Orleans-Metairie $21.22 | 86% |
| Carpenter | $29.12 | San Francisco-Oakland-Fremont $42.89 | Dallas-Fort Worth-Arlington $23.44 | 83% |
| Hvac Technician | $29.33 | San Jose-Sunnyvale-Santa Clara $39.45 | Tampa-St. Petersburg-Clearwater $24.30 | 62% |
| Painter | $23.75 | San Francisco-Oakland-Fremont $30.58 | San Antonio-New Braunfels $20.88 | 46% |
2. Chicago pays trades better than San Francisco or New York
Averaged across all eight trades we track, Chicago-Naperville-Elgin ranks #2 of 49 at $41.21 an hour — above San Francisco ($40.00) and New York ($36.31). Chicago roofers are the highest paid in the country at $39.47 an hour, ahead of every coastal metro. This runs against the usual coastal-cities-pay-most assumption, and it holds because Chicago's building trades are heavily unionised.
| Rank | Metro area | Mean of 8 trade medians |
|---|---|---|
| 1 | San Jose-Sunnyvale-Santa Clara, CA | $41.25 |
| 2 | Chicago-Naperville-Elgin, IL-IN | $41.21 |
| 3 | San Francisco-Oakland-Fremont, CA | $40.00 |
| 4 | Seattle-Tacoma-Bellevue, WA | $39.23 |
| 5 | Minneapolis-St. Paul-Bloomington, MN-WI | $37.65 |
| 6 | Boston-Cambridge-Newton, MA-NH | $36.89 |
| 7 | New York-Newark-Jersey City, NY-NJ | $36.31 |
| 8 | Portland-Vancouver-Hillsboro, OR-WA | $36.09 |
| 9 | Los Angeles-Long Beach-Anaheim, CA | $34.17 |
| 10 | Hartford-West Hartford-East Hartford, CT | $34.12 |
| … | ||
| 45 | Jacksonville, FL | $25.02 |
| 46 | Oklahoma City, OK | $24.80 |
| 47 | Tampa-St. Petersburg-Clearwater, FL | $24.25 |
| 48 | San Antonio-New Braunfels, TX | $24.23 |
| 49 | Orlando-Kissimmee-Sanford, FL | $23.94 |
49 metro areas where BLS publishes at least six of our eight trades. Top to bottom: 1.72×.
3. What the worker earns and what the customer pays are two different numbers
This is the calculation almost no cost guide performs. A wage is not a billed rate: the shop also pays payroll tax, workers' compensation, insurance, the truck, fuel, tools, dispatch and unbilled drive time. We model the difference as 1.3× labour burden and 1.7–2.45× overhead and profit — combined, 2.21× to 3.19×.
| Trade | Median wage | Modelled billed rate | Difference per hour |
|---|---|---|---|
| Plumber | $30.67 | $68–$98 | $37.11–$67.17 |
| Electrician | $30.38 | $67–$97 | $36.76–$66.53 |
| Hvac Technician | $29.33 | $65–$94 | $35.49–$64.23 |
| Carpenter | $29.12 | $64–$93 | $35.24–$63.77 |
| Equipment Operator | $28.78 | $64–$92 | $34.82–$63.03 |
| Tile Setter | $26.77 | $59–$85 | $32.39–$58.63 |
| Roofer | $26.65 | $59–$85 | $32.25–$58.36 |
| Painter | $23.75 | $52–$76 | $28.74–$52.01 |
Please attribute this one carefully. The wages are government data. The multiplier is our assumption, published in full on the methodology page. If you quote a billed rate, say it is a FieldPricing estimate, not a BLS figure.
How to cite us
FieldPricing, {page title}, August 6, 2026. https://fieldpricing.com/
Underlying wage data: US Bureau of Labor Statistics, Occupational Employment and Wage Statistics,
May 2025.
A link is appreciated and not required. We will never ask you to add one, and we will never follow up asking you to change how you credited us.
What we can help with
- A number for a specific metro and trade — we have 49 metro areas × eight trades, and can pull any cell with its BLS series ID.
- Why a quote looks high — we break jobs into equipment, parts, labour hours, permit and disposal, each sourced. See the job cost pages.
- The wage-to-invoice gap — the arithmetic above, for any trade.
What we cannot help with: anything we have not calculated. We will tell you we do not know rather than guess, and we will say when a figure is uncertain.
Known limitations — read before citing
We publish these on the methodology page in full. The short version: OEWS is a sample-based survey, not a census; metros where BLS suppressed a figure are omitted rather than estimated; self-employed workers are excluded, which understates owner-operator earnings; and our billed-rate multiplier is an editorial judgement, not a measurement.
Contact
Mingo — contact page. One person, in a time zone that is probably not yours. If you are on deadline, say so in the subject line and I will answer first.