Roofer salary in Madison, WI
Roofers in the Madison, WI metro area earn a median of $60,820 a year ($29.24 an hour), based on BLS data for 270 workers.
Pay ranges from $40,660 for the lowest-paid 10% to $81,760 for the top 10%. That is 10% higher than the national median of $55,440. Pay here is 2% higher than the Wisconsin statewide median of $59,370. There are 0.66 roofers per 1,000 jobs here — the job is less common than nationally (location quotient 0.76). The average (mean) salary is $59,770, close to the median.
Pay range for roofers in Madison, WI
| Pay level | Yearly | Hourly |
|---|---|---|
| 10th percentile (entry level) | $40,660 | $19.55 |
| 25th percentile | $49,300 | $23.70 |
| Median | $60,820 | $29.24 |
| 75th percentile | $69,460 | $33.39 |
| 90th percentile (top earners) | $81,760 | $39.31 |
| Average (mean) | $59,770 | $28.73 |
Half of roofers earn more than the median and half earn less. Percentiles show the spread: 10% earn less than the 10th percentile, and 10% earn more than the 90th.
Median paycheck, before taxes
| Pay period | Amount |
|---|---|
| Monthly | $5,068.33 |
| Semi-monthly (24 a year) | $2,534.17 |
| Biweekly (26 a year) | $2,339.23 |
| Weekly | $1,169.62 |
| Hourly | $29.24 |
Based on a full-time year of 2,080 hours. Convert any amount with the hourly to salary converter.
Roofer salary in other metro areas nearby
| Metro area | Median salary | Workers |
|---|---|---|
| Minneapolis-St. Paul-Bloomington, MN-WI | $75,400 | 1,250 |
| Duluth, MN-WI | $72,860 | 240 |
| Janesville-Beloit, WI | $63,310 | 70 |
| Appleton, WI | $61,880 | 120 |
| Racine-Mount Pleasant, WI | $60,680 | 70 |
| Milwaukee-Waukesha, WI | $60,140 | 980 |
| Green Bay, WI | $59,320 | 90 |
| Oshkosh-Neenah, WI | $58,880 | 80 |
| Sheboygan, WI | $58,230 | 50 |
| Eau Claire, WI | $51,380 | 70 |
Highest-paying states for roofers
| State | Median salary |
|---|---|
| Illinois | $77,900 |
| New Jersey | $76,600 |
| Minnesota | $74,490 |
| Massachusetts | $72,750 |
| Alaska | $66,750 |
| New York | $66,020 |
| California | $63,600 |
| Connecticut | $62,070 |
| District of Columbia | $61,750 |
| Rhode Island | $61,630 |
See Roofer pay in every state or the Wisconsin statewide figures.
Related jobs in Madison, WI
| Job | Median salary | Hourly |
|---|---|---|
| Construction Laborer | $57,000 | $27.40 |
| Carpenter | $63,480 | $30.52 |
| Electrician | $78,430 | $37.71 |
| Plumbers, Pipefitters, and Steamfitters | $85,160 | $40.94 |
| Operating Engineers and Other Construction Equipment Operators | $83,060 | $39.93 |
| Cement Masons and Concrete Finishers | $65,910 | $31.69 |
| Painters, Construction and Maintenance | $56,490 | $27.16 |
| Sheet Metal Worker | $74,450 | $35.79 |
| Drywall and Ceiling Tile Installers | $63,500 | $30.53 |
| Brickmasons and Blockmasons | $82,420 | $39.62 |
| Floor Layers, Except Carpet, Wood, and Hard Tiles | $49,310 | $23.71 |
| Glazier | $82,480 | $39.65 |
| Paving, Surfacing, and Tamping Equipment Operators | $93,610 | $45.01 |
| Structural Iron and Steel Workers | $92,460 | $44.45 |
More: Construction and Extraction Occupations · all salaries in Madison, WI
Source: U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics, May 2025 estimates, occupation code 47-2181. Wages include base pay, tips, commissions and shift pay, but not overtime, bonuses or benefits, and exclude the self-employed.
Frequently asked questions
How much does a roofer make in Madison, WI?
The median salary for roofers in the Madison, WI metro area is $60,820 a year, or $29.24 an hour. Pay ranges from $40,660 for the lowest-paid 10% to $81,760 for the top 10%.
How much do the highest-paid roofers make in Madison, WI?
The top 10% of roofers in the Madison, WI metro area earn at least $81,760 a year. The top 25% earn $69,460 or more.
What is the starting pay for roofers in Madison, WI?
Entry-level pay (the 10th percentile) is about $40,660 a year, and a quarter of roofers earn $49,300 or less.
How many roofers work in Madison, WI?
About 270 roofers are employed in the Madison, WI metro area, not counting the self-employed.