
Roof replacement, repair and storm damage in all 21 jurisdictions we cover in St. Louis 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 446,192 homes, 89% were built before 2000 — past the usual 25-year life of a roof — and the median year built is 1969.
Arch City Roofers – St. Louis County on Google Maps
Click a city for its full permit and code detail.
| City | Permit for a re-roof | Adopted code | Building official | Building dept. |
|---|---|---|---|---|
| Affton | Conditional | 2015 IRC | — | 314-615-5184 |
| Ballwin | Yes | 2015 I-Codes (2024 I-Codes proposed for 2026) | — | 636-227-2129 |
| Brentwood | Not published | 2024 IRC | John Benisch, Chief Building Official (314-963-8607) | 314-963-8602 |
| Chesterfield | Not published | 2015 IBC / 2015 IRC | — | 636-537-4000 |
| Clayton | Not published | 2021 IRC | — | 314-290-8463 |
| Creve Coeur | Not published | 2009 IRC | Gregory B. Tate, Chief Building Official (314-872-2513) | 314-872-2500 |
| Des Peres | Not published | 2018 I-Codes | Will Penney, Building Official (314-835-6100, wpenney@desperesmo.org) | 314-835-6100 |
| Ellisville | Not published | 2015 IRC | Jeff Center, Building Inspector (636-227-9660) | 636-227-9660 |
| Eureka | Not published | 2018 IRC | — | — |
| Florissant | Not published | 2021 IRC | Debra Irvin, Building Commissioner | 314-839-7648 |
| Kirkwood | Not published | 2021 IRC | Randy Noland, Building Commissioner (314-822-5814) | 314-822-5823 |
| Manchester | Not published | Not published | — | 314-615-5184 |
| Maryland Heights | Yes | 2021 IRC | Jason Boren, Building Commissioner (314-738-2241) | 314-291-6550 |
| Mehlville | Conditional | 2015 IRC | — | 314-615-5184 |
| Oakville | Conditional | 2015 IRC | — | 314-615-5184 |
| Richmond Heights | Not published | Not published | James Benedick, Building/Zoning Administrator (jbenedick@richmondheights.org) | 314-646-7658 |
| Unincorporated St. Louis County | Conditional | 2015 IRC | — | 314-615-5184 |
| Town and Country | Yes | 2018 I-Codes (2024 I-Codes pending) | — | 314-587-2820 |
| University City | Not published | 2018 IRC | — | — |
| Webster Groves | Not published | 2015 IBC family | — | 314-963-5300 |
| Wildwood | Not published | Not published | — | — |
We list a building official's name only where the jurisdiction publishes one — 8 of 21 here do. We list a permit answer only where the jurisdiction states one — 7 of 21 here do, and 3 of those clearly require a permit. Everything else is left blank on purpose.
Each line is a summary of that town's own page.
St. Louis County has 446,192 homes in the Census count, with a median year built of 1969. 10% were built before 1940, 69% before 1980 and 11% in 2000 or later; the single biggest decade was the 1960s, with 82,127 homes (18%). 72% of homes are single-family detached houses and 69% of occupied homes are owner-occupied; the count includes 1,546 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, 399,338 homes across St. Louis County (89%) were built before 2000 and have outlived at least one roof, and 234,740 (53%) predate 1970. The 27,989 homes from the 2000s are where first replacements are coming up now.
Across the 20 places we cover here with their own Census figures, Richmond Heights has the oldest housing (43% before 1940) and Eureka the newest (47% built in 2000 or later). Florissant is the largest, at 23,064 homes, and Richmond Heights has the highest share of renters (46%), where the roof is more often a landlord's decision.
| Place | Homes | Median built | Before 1940 | 2000 or later | Detached | Owner-occupied |
|---|---|---|---|---|---|---|
| Florissant | 23,064 | 1963 | 2% | 3% | 79% | 67% |
| Chesterfield | 21,603 | 1982 | 1% | 17% | 63% | 78% |
| University City | 17,841 | 1949 | 38% | 6% | 61% | 56% |
| Oakville | 14,242 | 1982 | 2% | 16% | 80% | 86% |
| Mehlville | 13,994 | 1969 | 1% | 8% | 59% | 66% |
| Wildwood | 13,391 | 1992 | 2% | 19% | 92% | 92% |
| Maryland Heights | 13,108 | 1975 | 1% | 12% | 50% | 57% |
| Kirkwood | 12,978 | 1962 | 17% | 19% | 75% | 77% |
| Ballwin | 12,563 | 1976 | 0% | 8% | 81% | 84% |
| Webster Groves | 9,921 | 1952 | 35% | 5% | 79% | 76% |
| Affton | 9,092 | 1958 | 9% | 5% | 83% | 81% |
| Creve Coeur | 8,821 | 1980 | 1% | 22% | 51% | 61% |
| Manchester | 7,423 | 1977 | 1% | 5% | 73% | 75% |
| Clayton | 6,934 | 1954 | 35% | 20% | 31% | 55% |
| Eureka | 4,805 | 1999 | 3% | 47% | 82% | 79% |
| Richmond Heights | 4,599 | 1947 | 43% | 18% | 57% | 54% |
| Brentwood | 4,442 | 1956 | 14% | 13% | 49% | 63% |
| Ellisville | 4,349 | 1983 | 0% | 23% | 60% | 75% |
| Town and Country | 4,163 | 1983 | 3% | 17% | 83% | 86% |
| Des Peres | 3,331 | 1976 | 0% | 13% | 98% | 96% |
| Built | Homes | Share | |
|---|---|---|---|
| Before 1940 | 43,354 | 10% | |
| 1940s | 28,196 | 6% | |
| 1950s | 81,063 | 18% | |
| 1960s | 82,127 | 18% | |
| 1970s | 71,197 | 16% | |
| 1980s | 53,584 | 12% | |
| 1990s | 39,817 | 9% | |
| 2000s | 27,989 | 6% | |
| 2010s | 15,700 | 4% | |
| 2020 or later | 3,165 | 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 150 reports of hail 1 inch or larger in St. Louis County from 2016 through 2025, on 34 days. 42 were 1.75 inches or larger, and 15 of those reached 2 inches; the largest, 2.5 inches, fell on May 16, 2025. The busiest single day was March 14, 2025, with 43 reports.
| Year | Reports | |
|---|---|---|
| 2016 | 11 | |
| 2017 | 4 | |
| 2018 | 3 | |
| 2019 | 7 | |
| 2020 | 2 | |
| 2021 | 4 | |
| 2022 | 1 | |
| 2023 | 14 | |
| 2024 | 11 | |
| 2025 | 93 |
Counted within 5 miles of each town’s center, Affton has the most reports (43) and Ellisville the fewest (10). Each town’s own page lists its latest dates. Reports come from spotters and the public, so busier places log more of them.
Missouri has no statewide residential building code: each city adopts an edition by ordinance, and in unincorporated areas the county's code applies. Across the 21 jurisdictions we cover in St. Louis County, that adds up to 10 different editions in force:
Manchester, Richmond Heights, Wildwood publish 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 21 jurisdictions we cover across St. Louis County, 3 require one (Ballwin, Maryland Heights, Town and Country); 4 exempt it only under conditions (Affton, Mehlville, Oakville, Unincorporated St. Louis County); the other 14 publish no answer either way. Each city page says which applies and links the building department.
Across St. Louis County the jurisdictions we cover enforce 10 different editions: the 2015 IRC in Affton, Ellisville, Mehlville, Oakville, Unincorporated St. Louis County; the 2021 IRC in Clayton, Florissant, Kirkwood, Maryland Heights; the 2018 IRC in Eureka, University City; the 2015 I-Codes (2024 I-Codes proposed for 2026) in Ballwin; the 2024 IRC in Brentwood; the 2015 IBC / 2015 IRC in Chesterfield; the 2009 IRC in Creve Coeur; the 2018 I-Codes in Des Peres; the 2018 I-Codes (2024 I-Codes pending) in Town and Country; the 2015 IBC family in Webster Groves. 3 publish 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 St. Louis County at 1969, with 10% of its 446,192 homes built before 1940 and 11% in 2000 or later. 89% were built before 2000, so most have had at least one new roof already.
Missouri has no state roofing license; licensing and registration are set city by city. Among the cities we cover in St. Louis County, Kirkwood, Webster Groves, Ballwin, Brentwood require a contractor to be licensed or registered with the city before a permit is issued.
8 of the 21 we cover publish a name: Brentwood, Creve Coeur, Des Peres, Ellisville, Florissant, Kirkwood, Maryland Heights, Richmond Heights. Where a name is published, it is on that city's page with the department's own number.
Bordering St. Louis 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 · www.stlpr.org. Rules and staff change; check with the jurisdiction.

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