San Bernardino County, California
120 ZIP codes · Avg score 65/100 · Grade C · Updated
ZipCheckup grade for San Bernardino County: C.
A mixed picture - some signals here are worth your attention.
Across San Bernardino County's 120 ZIP codes, water safety results are uneven - a portion of systems carry active or recent violations, while others meet standards without issues.
How San Bernardino County Compares
How San Bernardino County Compares
San Bernardino County scores 11 points below the California state average (76/100) and 8 points below the national average (73/100).
Data: ZipCheckup Home Safety Score model 4.0.0; EPA SDWIS, UCMR 5, EPA radon zones, EPA AirData Last verified:
ZIP Code Risk Map
Water Quality Map: San Bernardino County, California
Each dot represents a ZIP code. Color indicates water quality grade. Tap a dot for details.
Key Risk Factors
Health risk index: 11.6 (asthma 9.9%, diabetes 12.1%)
Estimated additional annual cost per homeowner: $3,236, driven primarily by wildfire
62.7% of homes built before 1978 (lead paint era)
Violation History (2022–2025)
↑ Worsening trendEPA violation counts by year across San Bernardino County water systems. Health-based shown in red, total in blue.
Peak year: 2024 with 34 violations. Past 5 years: 83 total (83 health-based). Health-based violations are rising versus the prior 2-year window - worth closer monitoring.
Source: EPA SDWIS historical violations. Data may lag 6–12 months for the most recent year.
County Health Indicators vs National Average
Black markers indicate national averages. Source: CDC PLACES, Census ACS.
Infrastructure Overview
Modeled area-level indicator, not a failure probability. Sources: Census ACS housing age, EPA DWINS infrastructure needs, EPA SDWIS violations, and EPA lead indicators.
Compound Risk Breakdown
Estimated additional annual cost per homeowner: $3,236
Bar widths proportional to share of total annual risk cost. Source: compound risk model (FEMA, EPA, USGS).
Housing Age Distribution
732,639 housing units in San Bernardino County
Source: U.S. Census Bureau ACS B25034 (Year Structure Built).
Water Safety Affordability
How much it costs to fix water issues relative to home values in San Bernardino County
Remediation costs are relatively manageable for most homeowners in San Bernardino County, representing a small fraction of property value.
Remediation includes water filtration, lead abatement, radon mitigation, and flood protection where applicable. Source: Census ACS, EPA SDWIS.
Health Outcomes vs National Average
CDC PLACES data for San Bernardino County residents
Black markers = national averages. Red = above national avg. Green = below. Source: CDC PLACES, Census ACS.
Water systems serving San Bernardino County
8 community water systems serving San Bernardino County.
- C
- B
- B
- B
- C
- B
Show all 8 water systems
- C
- B
78 total water systems serve San Bernardino County.
Systems with the most violations in San Bernardino County
5 water systems with recorded EPA violations.
- B
- D
All ZIP Codes in San Bernardino County
120 ZIP codes tracked in San Bernardino County.
| # | ZIP Code | City | Safety Score | Grade | Violations | Home Value |
|---|---|---|---|---|---|---|
| 1 | 91701 | Rancho Cucamonga | 75 | B | 0 | $719K |
| 2 | 91730 | Rancho Cucamonga | 75 | B | 0 | $595K |
| 3 | 91737 | Rancho Cucamonga | 75 | B | 0 | $844K |
| 4 | 91739 | Rancho Cucamonga | 75 | B | 0 | $860K |
| 5 | 91786 | Upland | 75 | B | 0 | $607K |
| 6 | 92277 | Twentynine Palms | 75 | B | 0 | $224K |
| 7 | 92310 | Fort Irwin | 75 | B | 0 | — |
| 8 | 92335 | Fontana | 75 | B | 1 | $434K |
| 9 | 92336 | Fontana | 75 | B | 0 | $605K |
| 10 | 92337 | Fontana | 75 | B | 0 | $519K |
| 11 | 92344 | Hesperia | 75 | B | 0 | $454K |
| 12 | 92371 | Phelan | 75 | B | 0 | $352K |
| 13 | 92372 | Pinon Hills | 75 | B | 0 | $419K |
| 14 | 92392 | Victorville | 75 | B | 0 | $366K |
| 15 | 92394 | Victorville | 75 | B | 2 | $340K |
| 16 | 92395 | Victorville | 75 | B | 1 | $336K |
| 17 | 92397 | Wrightwood | 75 | B | 0 | $457K |
| 18 | 92401 | San Bernardino | 75 | B | 0 | $348K |
| 19 | 92405 | San Bernardino | 75 | B | 0 | $377K |
| 20 | 92415 | San Bernardino | 75 | B | 0 | — |
| 21 | 92252 | Joshua Tree | 74 | B | 1 | $291K |
| 22 | 92284 | Yucca Valley | 74 | B | 22 (21 health) | $315K |
| 23 | 92307 | Apple Valley | 74 | B | 6 (1 health) | $397K |
| 24 | 92363 | Needles | 74 | B | 3 | $139K |
| 25 | 92385 | Skyforest | 74 | B | 2 | $388K |
| 26 | 92316 | Bloomington | 73 | B | 3 | $448K |
| 27 | 92411 | San Bernardino | 70 | B | 16 | $319K |
| 28 | 92407 | San Bernardino | 65 | C | 20 (1 health) | $473K |
| 29 | 92308 | Apple Valley | 62 | C | 12 (3 health) | $361K |
| 30 | 91709 | Chino Hills | 58 | C | 1 | $830K |
| 31 | 91761 | Ontario | 58 | C | 0 | $590K |
| 32 | 91762 | Ontario | 58 | C | 1 | $569K |
| 33 | 91763 | Montclair | 58 | C | 0 | $550K |
| 34 | 91764 | Ontario | 58 | C | 0 | $524K |
| 35 | 91784 | Upland | 58 | C | 0 | $854K |
| 36 | 92301 | Adelanto | 58 | C | 1 | $316K |
| 37 | 92311 | Barstow | 58 | C | 1 | $218K |
| 38 | 92314 | Big Bear City | 58 | C | 3 | $413K |
| 39 | 92315 | Big Bear Lake | 58 | C | 0 | $538K |
| 40 | 92317 | Blue Jay | 58 | C | 0 | $549K |
| 41 | 92342 | Helendale | 58 | C | 0 | $340K |
| 42 | 92345 | Hesperia | 58 | C | 0 | $360K |
| 43 | 92350 | Loma Linda | 58 | C | 1 | — |
| 44 | 92352 | Lake Arrowhead | 58 | C | 2 | $627K |
| 45 | 92354 | Loma Linda | 58 | C | 2 | $539K |
| 46 | 92376 | Rialto | 58 | C | 1 | $433K |
| 47 | 92377 | Rialto | 58 | C | 0 | $554K |
| 48 | 92386 | Sugarloaf | 58 | C | 0 | $447K |
| 49 | 92404 | San Bernardino | 58 | C | 2 | $384K |
| 50 | 92408 | San Bernardino | 58 | C | 2 | $407K |
| 51 | 92410 | San Bernardino | 58 | C | 1 | $274K |
| 52 | 92313 | Grand Terrace | 57 | C | 2 | $466K |
| 53 | 92382 | Running Springs | 57 | C | 4 | $374K |
| 54 | 92324 | Colton | 56 | C | 3 | $413K |
| 55 | 92346 | Highland | 56 | C | 6 | $462K |
| 56 | 92321 | Cedar Glen | 55 | C | 7 | $480K |
| 57 | 92325 | Crestline | 54 | D | 2 (1 health) | $358K |
| 58 | 92359 | Mentone | 54 | D | 5 (3 health) | $411K |
| 59 | 92373 | Redlands | 53 | D | 6 (3 health) | $713K |
| 60 | 92374 | Redlands | 53 | D | 6 (3 health) | $494K |
| 61 | 92399 | Yucaipa | 52 | D | 6 (3 health) | $472K |
| 62 | 91710 | Chino | 47 | D | 5 (4 health) | $645K |
| 63 | 91708 | Chino | — | — | 1 | $643K |
| 64 | 91729 | Rancho Cucamonga | — | — | — | |
| 65 | 91743 | Guasti | — | — | — | |
| 66 | 91758 | Ontario | — | — | — | |
| 67 | 91759 | Mt Baldy | — | — | 0 | $340K |
| 68 | 91785 | Upland | — | — | — | |
| 69 | 91798 | Ontario | — | — | — | |
| 70 | 92242 | Earp | — | — | $134K | |
| 71 | 92256 | Morongo Valley | — | — | 43 (42 health) | $265K |
| 72 | 92267 | Parker Dam | — | — | — | |
| 73 | 92268 | Pioneertown | — | — | 1 | $526K |
| 74 | 92278 | Twentynine Palms | — | — | — | |
| 75 | 92280 | Vidal | — | — | — | |
| 76 | 92285 | Landers | — | — | 1 | $222K |
| 77 | 92286 | Yucca Valley | — | — | — | |
| 78 | 92304 | Amboy | — | — | — | |
| 79 | 92305 | Angelus Oaks | — | — | 7 (1 health) | $418K |
| 80 | 92309 | Baker | — | — | $115K | |
| 81 | 92312 | Barstow | — | — | — | |
| 82 | 92318 | Bryn Mawr | — | — | — | |
| 83 | 92322 | Cedarpines Park | — | — | 2 (1 health) | $615K |
| 84 | 92323 | Cima | — | — | — | |
| 85 | 92327 | Daggett | — | — | 0 | — |
| 86 | 92329 | Phelan | — | — | — | |
| 87 | 92331 | Fontana | — | — | — | |
| 88 | 92332 | Essex | — | — | $375K | |
| 89 | 92333 | Fawnskin | — | — | $400K | |
| 90 | 92334 | Fontana | — | — | — | |
| 91 | 92338 | Ludlow | — | — | — | |
| 92 | 92339 | Forest Falls | — | — | $503K | |
| 93 | 92340 | Hesperia | — | — | — | |
| 94 | 92341 | Green Valley Lake | — | — | 0 | $368K |
| 95 | 92347 | Hinkley | — | — | 0 | — |
| 96 | 92356 | Lucerne Valley | — | — | 14 (4 health) | $239K |
| 97 | 92357 | Loma Linda | — | — | — | |
| 98 | 92358 | Lytle Creek | — | — | $514K | |
| 99 | 92364 | Nipton | — | — | — | |
| 100 | 92365 | Newberry Springs | — | — | $161K | |
| 101 | 92366 | Mountain Pass | — | — | — | |
| 102 | 92368 | Oro Grande | — | — | 0 | $314K |
| 103 | 92369 | Patton | — | — | 0 | — |
| 104 | 92378 | Rimforest | — | — | 2 | $350K |
| 105 | 92391 | Twin Peaks | — | — | 2 | $313K |
| 106 | 92393 | Victorville | — | — | — | |
| 107 | 92398 | Yermo | — | — | $186K | |
| 108 | 92402 | San Bernardino | — | — | — | |
| 109 | 92403 | San Bernardino | — | — | — | |
| 110 | 92406 | San Bernardino | — | — | — | |
| 111 | 92412 | San Bernardino | — | — | — | |
| 112 | 92413 | San Bernardino | — | — | — | |
| 113 | 92414 | San Bernardino | — | — | — | |
| 114 | 92418 | San Bernardino | — | — | — | |
| 115 | 92423 | San Bernardino | — | — | — | |
| 116 | 92424 | San Bernardino | — | — | — | |
| 117 | 92427 | San Bernardino | — | — | — | |
| 118 | 93558 | Red Mountain | — | — | — | |
| 119 | 93562 | Trona | — | — | $60K | |
| 120 | 93592 | Trona | — | — | — |
Recommended Buyer Guides for San Bernardino County
Filtered against EPA monitoring data and CDC lead-exposure guidance, the guides below skip the generic catalog and connect directly to the contaminants and hazards on file here.
- Best Water Filters for Lead — Lead above EPA action level in 3 ZIP codes
- Best Lead Paint Test Kits — 62.7% of homes built before 1978
- Best Under-Sink Reverse Osmosis Systems — Multi-contaminant removal at the kitchen tap
- Best HEPA Air Purifiers for Wildfire Smoke — Wildfire is the top compound risk factor
Deep Dive Reports
Detailed analysis for San Bernardino County, California
Overview
San Bernardino County in California covers 120 tracked ZIP records with an average Home Safety Score of C (65/100) across 62 scored records.
44 of 77 ZIP codes with a reported violation count in the available EPA record have recorded EPA violations. 55 health-based violations appear in the available health breakdown.
← Back to California Home Safety Profile
Data Sources
- Water quality: EPA Safe Drinking Water Information System (SDWIS)
- PFAS screening: EPA UCMR 5
- Radon zones: EPA Map of Radon Zones
- Air quality: EPA AirData annual AQI
- Home values: U.S. Census Bureau ACS (median estimates by ZCTA)
Reporting periods vary by source. Missing data is shown as unavailable, not as zero.