Snow Water Equivalent Explained: Depth Is Not Water
On this page
Problem statement
Ask how much snow there is and you can mean two things: how deep it is, or how much water it holds. For skiing the first matters; for rivers, reservoirs and floods only the second does. Snow water equivalent (SWE) is the depth of water the snowpack would make if it melted on the spot, and the ratio between it and the snow depth — the snow's density — changes from fluffy new snow to dense spring snow by a factor of four or five. A snowpack can get shallower while holding more water.
This page measures the relationship at the Niwot SNOTEL station in Colorado, where both depth and SWE have been recorded daily since 2005, and shows why the two peak on different days.
Quick answer
SWE is depth times density relative to water. Where both are measured, density follows directly — and it is anything but constant:
d = d[d.wy.between(2006, 2025)]
m = d.depth_mm >= 127 # at least 5 inches on the ground
density = (d.swe_mm / d.depth_mm)[m] * 1000 # kg/m³, water = 1000
print(f"bulk density: 5th {np.percentile(density, 5):.0f}, median {density.median():.0f}, 95th {np.percentile(density, 95):.0f} kg/m³")
peak_swe, peak_depth = d.groupby("wy").swe_mm.idxmax(), d.groupby("wy").depth_mm.idxmax()
lag = (peak_swe - peak_depth).dt.days
print(f"peak SWE came after peak depth in {(lag > 0).sum()} of {len(lag)} water years, by a median of {lag.median():.1f} days")
bulk density: 5th 182, median 260, 95th 425 kg/m³
peak SWE came after peak depth in 20 of 20 water years, by a median of 16.5 days
Units, light new snow, densification
1. Units
SWE is a depth of water, so it is quoted in millimetres or inches, like rainfall. 100 mm of SWE over a square kilometre is 100,000 m³ of water. Snow depth is in the same units but means something else entirely:
y24 = d[d.wy == 2024]
print(f"2024 depth peak: {y24.depth_mm.max():.0f} mm on {y24.depth_mm.idxmax():%d %b}, holding {y24.swe_mm[y24.depth_mm.idxmax()]:.0f} mm of water")
print(f"2024 SWE peak: {y24.swe_mm.max():.0f} mm on {y24.swe_mm.idxmax():%d %b}, under {y24.depth_mm[y24.swe_mm.idxmax()]:.0f} mm of snow")
2024 depth peak: 1930 mm on 14 Mar, holding 353 mm of water
2024 SWE peak: 381 mm on 29 Mar, under 1295 mm of snow
Two weeks after the deepest snow of 2024, the pack was a third shallower and held more water.
2. New snow is light
On days when depth jumped by at least 250 mm, the SWE gain gives the density of the snow that fell:
dd, ds = d.depth_mm.diff(), d.swe_mm.diff()
storm = dd >= 250
print(f"{storm.sum()} storm days: median new-snow density {(ds[storm] / dd[storm]).median() * 1000:.0f} kg/m³")
40 storm days: median new-snow density 79 kg/m³
Cold Rocky Mountain powder arrives at well under a tenth of the density of water.
3. The pack densifies
Once on the ground, snow settles under its own weight, its crystals round, and in spring meltwater refreezes inside it. Density rises through the season, which is why depth falls while SWE holds or grows:
print(density.groupby(density.index.month).median().round().loc[[11, 1, 3, 4, 5]].to_string())
date
11 221.0
1 238.0
3 280.0
4 350.0
5 400.0
4. A constant density is a poor substitute
Where only depth is measured, SWE is often estimated with a fixed density. At Niwot, 250 kg/m³ — close to the overall median — is wrong by tens of millimetres on a typical day and by more when it matters most:
est = d.depth_mm * 0.25
print(f"median absolute error: {np.median(np.abs((est - d.swe_mm)[m])):.0f} mm on all snow days, "
f"{np.median(np.abs((est - d.swe_mm).loc[peak_swe.values])):.0f} mm on the day of peak SWE")
median absolute error: 23 mm on all snow days, 72 mm on the day of peak SWE
5. Measure SWE where water matters
A SNOTEL snow pillow measures SWE directly, as weight. That is why water-supply forecasting rests on SWE networks rather than on depth, and why satellite snow maps — which see snow-covered area, not water — have to be combined with models or stations to say anything about volume.
The same depth with different water
The data used on this page
NRCS SNOTEL station Niwot (663:CO:SNTL), daily snow water equivalent (WTEQ) and snow depth (SNWD), water years 2006–2025, from the NRCS AWDB REST API.
import numpy as np
import pandas as pd
import requests
URL = ("https://wcc.sc.egov.usda.gov/awdbRestApi/services/v1/data?stationTriplets=663:CO:SNTL"
"&elements=WTEQ,SNWD&duration=DAILY&beginDate=2005-10-01&endDate=2025-09-30")
payload = requests.get(URL, timeout=120).json()
cols = {}
for el in payload[0]["data"]:
v = pd.DataFrame(el["values"])
cols[el["stationElement"]["elementCode"]] = v.set_index(pd.to_datetime(v["date"]))["value"] * 25.4 # inches -> mm
d = pd.DataFrame(cols).rename(columns={"WTEQ": "swe_mm", "SNWD": "depth_mm"})
d["wy"] = (d.index + pd.DateOffset(months=3)).year
print(len(d), "days;", d.notna().sum().to_dict())
7305 days; {'depth_mm': 7246, 'swe_mm': 7305, 'wy': 7305}
Example 1: the same depth, different water
Two days with the same snow depth can hold very different amounts of water:
near = d[(d.depth_mm >= 1000) & (d.depth_mm <= 1050)]
print(f"{len(near)} days with 1.00-1.05 m of snow: SWE from {near.swe_mm.min():.0f} to {near.swe_mm.max():.0f} mm")
print(near.loc[[near.swe_mm.idxmin(), near.swe_mm.idxmax()], ["depth_mm", "swe_mm"]].round().to_string())
182 days with 1.00-1.05 m of snow: SWE from 180 to 434 mm
depth_mm swe_mm
date
2006-12-22 1016.0 180.0
2007-04-19 1016.0 434.0
Example 2: water volume over a basin
SWE times area is volume. For a hypothetical 100 km² of terrain holding Niwot's median peak SWE:
peak = d.groupby("wy").swe_mm.max()
volume_m3 = peak.median() / 1000 * 100e6
print(f"median peak SWE {peak.median():.0f} mm over 100 km² = {volume_m3 / 1e6:.0f} million m³ of water")
median peak SWE 380 mm over 100 km² = 38 million m³ of water
A single station does not represent a basin — snow varies with elevation, aspect and wind — but the arithmetic is the reason SWE, not depth, is the quantity forecasters need.
Snow is mostly air
Snow is mostly air. Fresh snow can be ninety per cent or more air by volume; old spring snow perhaps sixty per cent. Depth measures the whole column, air included. SWE measures only the ice, as the depth of water it would melt into, and is therefore the physically meaningful quantity for anything that involves water.
The two are linked by density, and density is not a constant. It starts low as snow falls, rises as the pack settles and ages, and climbs steeply in spring as meltwater percolates and refreezes. That is why the deepest day of a winter comes before the wettest one — every year at Niwot in this record, by a median of more than two weeks — and why a depth measurement alone, multiplied by a fixed density, misses most at the moment of peak water storage.
Peak depth before peak SWE, and bridging pillows
- SWE is a water depth: mm × area = volume.
- Density changes: about 80 kg/m³ for new powder here, over 400 in late spring.
- Peak depth precedes peak SWE; report which peak.
- Constant-density estimates are weakest in spring, exactly when water matters.
- Snow pillows can bridge under ice layers and under-read; compare with depth for sudden steps.
- Satellites measure area, not SWE, except experimental microwave and lidar methods.
Internal links
- How to analyse SNOTEL snow water equivalent — 45 years at Niwot
- How to analyse snow depth from GHCN-Daily — depth-only records
- How to make a MODIS snow cover time series — snow area from space
- How to find snowmelt timing — when the water leaves
- Snow depth has gaps and zeros — cleaning station snow data
FAQ
What is snow water equivalent?
The depth of water the snowpack would produce if melted, usually in millimetres or inches. It equals snow depth times density relative to water.
How do I convert snow depth to SWE?
Multiply by the snow's density relative to water — but density varies from about 0.08 for new snow to over 0.4 in spring, so a fixed value gives large errors.
Why does snow get shallower but hold more water?
The pack settles and densifies, and in spring absorbs meltwater and rain. At Niwot, peak SWE came after peak depth every year from 2006 to 2025.
How is SWE measured?
Directly with snow pillows (as at SNOTEL stations) or snow tubes that weigh a core of snow; indirectly from depth and an assumed or measured density.