
Roof replacement, repair and storm damage in all 5 jurisdictions we cover in Madison County, each with its own page: the local permit rule, the code edition it enforces and the building department's number. Of the county's 119,168 homes, 81% were built before 2000 — past the usual 25-year life of a roof — and the median year built is 1971.
Click a city for its full permit and code detail.
| City | Permit for a re-roof | Adopted code | Building official | Building dept. |
|---|---|---|---|---|
| Alton | Not published | 2021 IRC | Greg Caffey, Building and Zoning Director | 618-463-3500 |
| Collinsville | Yes | 2021 I-Codes | Kendrick Soer, Chief Building Official (618-346-5200 x1123) | 618-346-5200 |
| Edwardsville | Not published | 2021 IRC | — | — |
| Glen Carbon | Not published | Not published | Kari Crawford, Building Official (618-288-2674) | 618-288-2603 |
| Granite City | Not published | 2012 IRC | — | 618-452-6218 |
We list a building official's name only where the jurisdiction publishes one — 3 of 5 here do. We list a permit answer only where the jurisdiction states one — 1 of 5 here do, and 1 of those clearly require a permit. Everything else is left blank on purpose.
Each line is a summary of that town's own page.
Madison County has 119,168 homes in the Census count, with a median year built of 1971. 15% were built before 1940, 61% before 1980 and 19% in 2000 or later; the single biggest decade was the years before 1940, with 17,395 homes (15%). 79% of homes are single-family detached houses and 74% of occupied homes are owner-occupied; the count includes 2,600 mobile homes.
The rule of thumb from Missouri's Department of Commerce and Insurance is a useful life of usually about 25 years for a roof. On that yardstick, 96,920 homes across Madison County (81%) were built before 2000 and have outlived at least one roof, and 57,612 (48%) predate 1970. The 14,019 homes from the 2000s are where first replacements are coming up now.
Across the 5 places we cover here with their own Census figures, Alton has the oldest housing (28% before 1940) and Edwardsville the newest (27% built in 2000 or later). Granite City is the largest, at 12,854 homes, and Alton has the highest share of renters (40%), where the roof is more often a landlord's decision.
| Place | Homes | Median built | Before 1940 | 2000 or later | Detached | Owner-occupied |
|---|---|---|---|---|---|---|
| Granite City | 12,854 | 1957 | 23% | 8% | 81% | 73% |
| Alton | 12,551 | 1953 | 28% | 8% | 75% | 60% |
| Collinsville | 11,644 | 1971 | 17% | 14% | 66% | 66% |
| Edwardsville | 10,609 | 1986 | 16% | 27% | 71% | 67% |
| Glen Carbon | 6,007 | 1990 | 5% | 26% | 70% | 69% |
| Built | Homes | Share | |
|---|---|---|---|
| Before 1940 | 17,395 | 15% | |
| 1940s | 8,750 | 7% | |
| 1950s | 17,278 | 14% | |
| 1960s | 14,189 | 12% | |
| 1970s | 15,106 | 13% | |
| 1980s | 11,057 | 9% | |
| 1990s | 13,145 | 11% | |
| 2000s | 14,019 | 12% | |
| 2010s | 7,132 | 6% | |
| 2020 or later | 1,097 | 1% |
Figures: U.S. Census Bureau, American Community Survey 2020–2024 5-year estimates (tables B25001, B25003, B25024, B25034, B25035). Survey estimates carry margins of error, widest in the smallest places. Census table.
NOAA’s Storm Prediction Center logged 53 reports of hail 1 inch or larger in Madison County from 2016 through 2025, on 24 days. 12 were 1.75 inches or larger, and 4 of those reached 2 inches; the largest, 3.75 inches, fell on March 14, 2024. The busiest single day was March 14, 2025, with 17 reports.
| Year | Reports | |
|---|---|---|
| 2016 | 3 | |
| 2017 | 6 | |
| 2018 | 5 | |
| 2019 | 4 | |
| 2020 | 1 | |
| 2021 | 1 | |
| 2022 | 0 | |
| 2023 | 6 | |
| 2024 | 5 | |
| 2025 | 22 |
Counted within 5 miles of each town’s center, Collinsville has the most reports (15) and Alton the fewest (4). Each town’s own page lists its latest dates. Reports come from spotters and the public, so busier places log more of them.
Illinois' residential building code covers new construction only, so a re-roof here follows the code each city has adopted for itself. Across the 5 jurisdictions we cover in Madison County, that adds up to 3 different editions in force:
Glen Carbon publishes no edition we could read. Ask before work starts which one the roof will be inspected against.
The design figures are the same across the metro (115 mph ultimate design wind, 20 psf ground snow), so the local difference is the code edition and the permit route. What each figure does to a roof is in our St. Louis roofing code guide.
It depends on the city, not the county. Of the 5 jurisdictions we cover across Madison County, 1 requires one (Collinsville); the other 4 publish no answer either way. Each city page says which applies and links the building department.
Across Madison County the jurisdictions we cover enforce 3 different editions: the 2021 IRC in Alton, Edwardsville; the 2021 I-Codes in Collinsville; the 2012 IRC in Granite City. 1 publishes no edition we could read. The edition in force is the one your roof is inspected against.
The Census Bureau's 2020–2024 estimates put the median year built across Madison County at 1971, with 15% of its 119,168 homes built before 1940 and 19% in 2000 or later. 81% were built before 2000, so most have had at least one new roof already.
Yes. Illinois licenses roofing contractors statewide under the Roofing Industry Licensing Act (225 ILCS 335), so a roofer working anywhere in the Metro East needs a current IDFPR roofing license. Among the cities we cover here, Granite City also has its own contractor registration.
3 of the 5 we cover publish a name: Alton, Collinsville, Glen Carbon. Where a name is published, it is on that city's page with the department's own number.
Bordering Madison County, and on this site as well:
Town rules from each jurisdiction's own pages, researched 2026-09-09; housing, Census ACS 2020–2024; hail, NOAA Storm Prediction Center. Sources: data.census.gov · www.spc.noaa.gov · cdb.illinois.gov · cdb.illinois.gov. Rules and staff change; check with the jurisdiction.

Free inspection, a written scope, and photos you keep either way.
Book my free inspection →