Methodology & Data Transparency

This page explains exactly how WaterScore calculates water quality ratings, where our data comes from, and how we ensure accuracy. We believe full transparency is essential for trust.

1. Scoring Formula

Every suburb receives a score from 0 to 10. The score is computed by comparing each measured water quality parameter against its Australian Drinking Water Guidelines (ADWG) limit or recommended range. Each parameter receives an individual score out of 10, and the final suburb score is the unweighted average of all parameter scores.

How each parameter is scored

There are three scoring modes depending on the parameter type:

A. Limit-based parameters

Used for most parameters (turbidity, hardness, fluoride, chlorine, metals, etc.)

ratio = measured_value / ADWG_guideline_limit

If ratio ≤ 1.0:   score = 10 × (1 − ratio × 0.3)

If ratio > 1.0:   score = 10 × max(0, 1 − (ratio − 1))

Within the guideline limit, scoring starts at 10 and decreases gradually (up to a 30% penalty at the limit). Above the limit, the score drops linearly and reaches 0 when the measured value is double the limit.

B. Range-based parameters

Used for pH (acceptable range: 6.5 – 8.5)

midpoint = (min + max) / 2   ⇒   7.5 for pH

half_range = (max − min) / 2   ⇒   1.0 for pH

deviation = |measured_value − midpoint| / half_range

If deviation ≤ 1.0:   score = 10 × (1 − deviation × 0.3)

If deviation > 1.0:   score = 10 × max(0, 1 − deviation)

Optimal score when the value is at the midpoint of the range. Scores decrease as the value approaches either edge.

C. Binary compliance parameters

Used for E. coli and Total Coliforms (guideline limit = 0)

If measured_value = 0:   score = 10   (compliant)

If measured_value > 0:   score = 0    (non-compliant)

Any detection of E. coli or Total Coliforms results in a zero score for that parameter, reflecting the serious health risk.

Final score calculation

final_score = sum(all_parameter_scores) / number_of_scored_parameters

Rounded to 1 decimal place.

All scored parameters carry equal weight. The score uses the latest available reading for each parameter (deduplicated by sample date). Parameters without an ADWG guideline value (e.g. temperature, conductivity) are measured and displayed but do not affect the score.

2. Parameter Reference Table

WaterScore tracks 29 water quality parameters. Of these, 23 have ADWG guideline values and contribute to the score. The remaining 6 are measured for informational purposes only.

Scored parameters (23)

Parameter Unit ADWG Guideline Scoring Mode
pH pH units 6.5 – 8.5 Range
Turbidity NTU ≤ 5 Limit
Total Dissolved Solids mg/L ≤ 600 Limit
Hardness mg/L CaCO3 ≤ 200 Limit
Fluoride mg/L ≤ 1.5 Limit
Total Chlorine mg/L ≤ 5 Limit
Free Chlorine mg/L ≤ 5 Limit
Iron mg/L ≤ 0.3 Limit
Manganese mg/L ≤ 0.1 Limit
Aluminium mg/L ≤ 0.2 Limit
Copper mg/L ≤ 2 Limit
Lead mg/L ≤ 0.01 Limit
E. coli MPN/100mL Not detected Binary
Total Coliforms MPN/100mL Not detected Binary
Nitrate mg/L ≤ 50 Limit
Sulfate mg/L ≤ 500 Limit
Sodium mg/L ≤ 180 Limit
Chloride mg/L ≤ 250 Limit
Colour HU ≤ 15 Limit
PFOS µg/L ≤ 0.07 Limit
PFOA µg/L ≤ 0.56 Limit
Trihalomethanes mg/L ≤ 0.25 Limit
Monochloramine mg/L ≤ 3 Limit

Measured-only parameters (6)

These parameters are recorded and displayed on suburb pages but do not affect the score.

Parameter Unit
Temperature °C
Dissolved Oxygen mg/L
Conductivity µS/cm
Alkalinity mg/L CaCO3
Calcium mg/L
Magnesium mg/L

3. Worked Examples

Two examples showing how the scoring formula works in practice.

Example A: Typical high-quality suburb

A suburb with readings well within ADWG guidelines.

Parameter Value Guideline Ratio Score
Turbidity 0.5 NTU ≤ 5.0 0.1 9.7
pH 7.4 6.5 – 8.5 dev: 0.1 9.7
Fluoride 0.9 mg/L ≤ 1.5 0.6 8.2
E. coli 0 MPN 0 (binary) — 10.0
Hardness 60 mg/L ≤ 200 0.3 9.1
Final score = (9.7 + 9.7 + 8.2 + 10.0 + 9.1) / 5 = 9.3

Example B: Suburb with some exceedances

A suburb with high hardness and elevated manganese.

Parameter Value Guideline Ratio Score
Turbidity 2.0 NTU ≤ 5.0 0.4 8.8
Hardness 280 mg/L ≤ 200 1.4 6.0
Manganese 0.15 mg/L ≤ 0.1 1.5 5.0
pH 8.2 6.5 – 8.5 dev: 0.7 7.9
E. coli 0 MPN 0 (binary) — 10.0
Final score = (8.8 + 6.0 + 5.0 + 7.9 + 10.0) / 5 = 7.5

4. Data Collection

Sources

All water quality data comes directly from official reports published by Australian water utilities. We currently source data from 182 utilities across all states and territories, covering the vast majority of Australia's urban population.

Data sources include annual drinking water quality reports, open data portals (e.g. data.nsw.gov.au, data.sa.gov.au), and utility websites. We do not use any third-party or aggregated data sources.

Collection frequency

Our data pipeline runs when utilities publish new reports, typically on an annual basis. Some utilities (such as Sydney Water) publish more frequently. Values shown on WaterScore reflect the most recently published data and may not represent real-time water conditions.

Processing pipeline

The data flows through several stages from source to WaterScore:

  1. Download — Fetch latest reports from utility websites and open data portals (XLSX, CSV, PDF)
  2. Parse — Extract parameter values, measurement dates, and units from source files
  3. Normalise — Map utility-specific parameter names to standard ADWG parameter names (e.g. "Chlorine (free residual)" → "chlorine_free")
  4. Validate — Check for null values, perform unit conversions, and flag anomalies
  5. Load — Upsert into our database with deduplication by suburb, parameter, and report year
  6. Link — Map suburbs to supply zones so that zone-level data is correctly inherited by all suburbs in that zone

Parameters tracked

We track 29 parameters covering health-related contaminants (E. coli, lead, PFOS/PFOA, nitrate), disinfection by-products (trihalomethanes, monochloramine), treatment indicators (turbidity, chlorine), and aesthetic measures (hardness, colour, TDS). Not all utilities report every parameter; see the utility coverage table for details.

5. Data Quality & Validation

Reading validation

  • Null filtering — Readings with no measured value are excluded from scoring. Only parameters with valid numeric values contribute to the score.
  • Deduplication — When multiple readings exist for the same parameter, only the most recent reading (by sample date) is used for scoring.
  • Unit normalisation — All values are converted to standard units (mg/L, NTU, pH units, etc.) during the pipeline's normalisation step.
  • Unique constraints — The database enforces uniqueness on (suburb, supply zone, parameter, report year) to prevent duplicate entries.

Missing data handling

  • Missing parameters — If a utility does not report a particular parameter, it is simply excluded from the suburb's score calculation. The score is the average of whichever parameters are available. This means suburbs with fewer reported parameters may have scores based on a narrower set of data.
  • Supply zone inheritance — Many utilities report data at the supply zone level (e.g. "Eastern Zone") rather than per-suburb. In these cases, all suburbs within a zone inherit the zone's readings. This is the standard approach since water treatment and distribution are zone-based.
  • No imputation — We never estimate or impute missing values. If a reading is not available, it simply does not contribute to the score.

Confidence indicators

Fresh

Data from the current or previous reporting year. High confidence.

Aging

Data is 3 years old. May not reflect current conditions. Use with caution.

Stale

Data is 4+ years old or unavailable. Low confidence; treat as indicative only.

Freshness badges appear on suburb pages to indicate data age. The freshness level is based on the gap between the current year and the most recent report year in our database.

6. Utility Coverage

The table below shows each utility we cover, the number of suburbs in our database, parameters tracked, data completeness (percentage of the 23 scorable ADWG parameters that the utility reports), and a link to the official data source.

Utility State Suburbs Parameters Completeness Report Year Source
Icon Water ACT 169 32 91% 2026 —
Albury Council NSW 18 0 0% — —
Armidale Regional Council NSW 54 0 0% — —
Ballina Council NSW 36 0 0% — —
Balranald Council NSW 12 0 0% — —
Bathurst Regional Council NSW 77 0 0% — —
Bega Valley Council NSW 80 0 0% — —
Bellingen Council NSW 40 0 0% — —
Berrigan Council NSW 7 0 0% — —
Bland Council NSW 26 0 0% — —
Blayney Council NSW 17 0 0% — —
Bogan Council NSW 18 0 0% — —
Bourke Council NSW 17 0 0% — —
Brewarrina Council NSW 9 0 0% — —
Broken Hill Council NSW 18 0 0% — —
Byron Council NSW 43 0 0% — —
Cabonne Council NSW 72 0 0% — —
Carrathool Council NSW 24 0 0% — —
Central Coast Council NSW 163 21 74% 2026 —
Central Darling Council NSW 11 0 0% — —
Clarence Valley Council NSW 145 0 0% — —
Cobar Council NSW 17 0 0% — —
Coffs Harbour Council NSW 36 0 0% — —
Coolamon Council NSW 14 0 0% — —
Coonamble Council NSW 21 0 0% — —
Cootamundra-Gundagai Regional Council NSW 17 0 0% — —
Cowra Council NSW 13 0 0% — —
Dubbo Regional Council NSW 64 0 0% — —
Edward River Council NSW 34 0 0% — —
Eurobodalla Council NSW 48 0 0% — —
Federation Council NSW 22 0 0% — —
Forbes Council NSW 26 0 0% — —
Gilgandra Council NSW 11 0 0% — —
Glen Innes Severn Council NSW 30 0 0% — —
Goulburn Mulwaree Council NSW 28 0 0% — —
Greater Hume Shire Council NSW 32 0 0% — —
Griffith Council NSW 15 0 0% — —
Gunnedah Council NSW 25 0 0% — —
Gwydir Council NSW 29 0 0% — —
Hay Council NSW 5 0 0% — —
Hilltops Council NSW 49 0 0% — —
Hunter Water NSW 366 16 57% 2026 —
Inverell Council NSW 44 0 0% — —
Junee Council NSW 13 0 0% — —
Kempsey Council NSW 55 0 0% — —
Kyogle Council NSW 94 0 0% — —
Lachlan Council NSW 16 0 0% — —
Leeton Council NSW 10 0 0% — —
Lismore Council NSW 64 0 0% — —
Lithgow Council NSW 61 0 0% — —
Liverpool Plains Council NSW 30 0 0% — —
Lockhart Council NSW 21 0 0% — —
Mid-Coast Council NSW 201 0 0% — —
Mid-Western Regional Council NSW 114 0 0% — —
Moree Plains Council NSW 18 0 0% — —
Murray River Council NSW 44 0 0% — —
Murrumbidgee Council NSW 11 0 0% — —
Muswellbrook Council NSW 25 0 0% — —
Nambucca Valley Council NSW 39 0 0% — —
Narrabri Council NSW 31 0 0% — —
Narrandera Council NSW 19 0 0% — —
Narromine Council NSW 8 0 0% — —
Oberon Council NSW 41 0 0% — —
Orange Council NSW 6 0 0% — —
Parkes Council NSW 28 0 0% — —
Port Macquarie-Hastings Council NSW 93 0 0% — —
Queanbeyan-Palerang Regional Council NSW 72 0 0% — —
Richmond Valley Council NSW 57 0 0% — —
Shoalhaven Council NSW 138 0 0% — —
Singleton Council NSW 64 0 0% — —
Snowy Monaro Regional Council NSW 134 0 0% — —
Snowy Valleys Council NSW 84 0 0% — —
Sydney Water NSW 1,141 23 74% 2026 —
Tamworth Regional Council NSW 38 0 0% — —
Temora Council NSW 15 0 0% — —
Tenterfield Council NSW 36 0 0% — —
Tweed Council NSW 92 0 0% — —
Upper Hunter Shire Council NSW 43 0 0% — —
Upper Lachlan Shire Council NSW 67 0 0% — —
Uralla Council NSW 21 0 0% — —
Wagga Wagga Council NSW 66 0 0% — —
Walcha Council NSW 4 0 0% — —
Walgett Council NSW 9 0 0% — —
Warren Council NSW 19 0 0% — —
Warrumbungle Shire Council NSW 31 0 0% — —
Weddin Council NSW 10 0 0% — —
Wentworth Council NSW 25 0 0% — —
Wingecarribee Council NSW 54 0 0% — —
Yass Valley Council NSW 32 0 0% — —
Power and Water Corporation NT 385 19 61% 2026 —
Aurukun Council QLD 1 0 0% — —
Balonne Council QLD 6 0 0% — —
Banana Council QLD 68 0 0% — —
Barcaldine Council QLD 23 0 0% — —
Barcoo Council QLD 5 0 0% — —
Blackall Tambo Council QLD 12 0 0% — —
Boulia Council QLD 13 0 0% — —
Bulloo Council QLD 10 0 0% — —
Bundaberg Council QLD 119 0 0% — —
Burdekin Council QLD 43 0 0% — —
Burke Council QLD 6 0 0% — —
Cairns Council QLD 84 0 0% — —
Carpentaria Council QLD 10 0 0% — —
Cassowary Coast Council QLD 127 0 0% — —
Central Highlands (Qld) Council QLD 73 0 0% — —
Charters Towers Council QLD 30 0 0% — —
Cherbourg Council QLD 1 0 0% — —
Cloncurry Council QLD 9 0 0% — —
Cook Council QLD 20 0 0% — —
Croydon Council QLD 10 0 0% — —
Diamantina Council QLD 3 0 0% — —
Doomadgee Council QLD 2 0 0% — —
Douglas Council QLD 38 0 0% — —
Etheridge Council QLD 20 0 0% — —
Flinders (Qld) Council QLD 8 0 0% — —
Fraser Coast Council QLD 116 0 0% — —
Gladstone Council QLD 84 0 0% — —
Gold Coast Council QLD 4 0 0% — —
Goondiwindi Council QLD 47 0 0% — —
Gympie Council QLD 104 0 0% — —
Hinchinbrook Council QLD 31 0 0% — —
Hope Vale Council QLD 0 0 0% — —
Isaac Council QLD 43 0 0% — —
Kowanyama Council QLD 1 0 0% — —
Livingstone Council QLD 66 0 0% — —
Lockhart River Council QLD 1 0 0% — —
Logan Council QLD 1 0 0% — —
Longreach Council QLD 11 0 0% — —
Mackay Council QLD 137 0 0% — —
Mapoon Council QLD 1 0 0% — —
Maranoa Council QLD 68 0 0% — —
Mareeba Council QLD 48 0 0% — —
McKinlay Council QLD 5 0 0% — —
Mornington Council QLD 3 0 0% — —
Mount Isa Council QLD 36 0 0% — —
Murweh Council QLD 17 0 0% — —
Napranum Council QLD 1 0 0% — —
North Burnett Council QLD 97 0 0% — —
Northern Peninsula Area Council QLD 4 0 0% — —
Palm Island Council QLD 1 0 0% — —
Paroo Council QLD 16 0 0% — —
Pormpuraaw Council QLD 1 0 0% — —
Quilpie Council QLD 4 0 0% — —
Redland Council QLD 0 0 0% — —
Richmond Council QLD 6 0 0% — —
Rockhampton Council QLD 70 0 0% — —
Seqwater QLD 835 33 78% 2026 —
South Burnett Council QLD 103 0 0% — —
Southern Downs Council QLD 111 0 0% — —
Tablelands Council QLD 54 0 0% — —
Toowoomba Council QLD 228 0 0% — —
Torres Council QLD 7 0 0% — —
Torres Strait Island Council QLD 37 0 0% — —
Townsville Council QLD 114 0 0% — —
Unitywater QLD 26 0 0% — —
Urban Utilities QLD 378 0 0% — —
Weipa Council QLD 7 0 0% — —
Western Downs Council QLD 104 0 0% — —
Whitsunday Council QLD 63 0 0% — —
Winton Council QLD 4 0 0% — —
Woorabinda Council QLD 1 0 0% — —
Wujal Wujal Council QLD 1 0 0% — —
Yarrabah Council QLD 1 0 0% — —
SA Water SA 2,084 21 78% 2026 —
TasWater TAS 813 35 87% 2026 —
Barwon Water VIC 213 0 0% — —
Central Highlands Water VIC 217 0 0% — —
Coliban Water VIC 226 0 0% — —
East Gippsland Water VIC 154 0 0% — —
Gippsland Water VIC 178 0 0% — —
Goulburn Valley Water VIC 303 0 0% — —
Grampians Wimmera Mallee Water VIC 330 0 0% — —
Greater Western Water VIC 255 16 61% 2026 —
Lower Murray Water VIC 163 0 0% — —
Melbourne Water VIC 0 0 0% — View source
North East Water VIC 264 0 0% — —
South East Water VIC 384 10 43% 2026 View source
South Gippsland Water VIC 66 0 0% — —
Wannon Water VIC 257 0 0% — —
Westernport Water VIC 43 0 0% — —
Yarra Valley Water VIC 303 12 48% 2026 View source
Water Corporation WA 1,817 15 61% 2026 —

7. Known Limitations

  • Not real-time — WaterScore reflects published report data, not real-time measurements. Water quality can vary day-to-day due to weather events, infrastructure issues, or treatment changes.
  • Zone-level granularity — Most utilities report data at the supply zone level. All suburbs in a zone share the same readings, even though localised variation can occur (e.g. due to pipe age or distance from the treatment plant).
  • Parameter coverage varies — Different utilities report different subsets of parameters. A suburb served by a utility that reports 8 parameters will have its score computed from fewer data points than one with 20 parameters reported. We display parameter counts on suburb pages to flag this.
  • Equal weighting — All scored parameters are weighted equally. This means an aesthetic parameter like colour carries the same weight as a health-critical parameter like E. coli. We chose equal weighting for simplicity and transparency, but acknowledge that health-based weighting could be more informative.
  • Annual averages — Some utilities report annual average values rather than individual sample results. This can mask short-term spikes or seasonal variation.
  • Rural and regional gaps — We currently cover 13 major urban utilities. Many smaller regional and remote water suppliers are not yet included.

Disclaimer: WaterScore ratings are provided as a general guide only and are not a substitute for professional water testing or medical advice. If you have specific health concerns about your water quality, contact your water utility directly or consult a health professional.