Lake Michigan's Premier Wind Destination
Reliable westerly winds, warm water, and a surf scene that punches above its weight.
Most forecast apps dump data and leave you to figure it out. WindStoke analyzes wind, waves, and direction against your personal thresholds — and just tells you: go or don't go.
Every day gets a clear verdict. No interpretation needed — just show up when WindStoke says go.
Set your wind thresholds and get a push notification or text the moment Muskegon turns on.
Lake Michigan wave height and period from the MKGM4 buoy. Know what the surf looks like before you leave.
Plan your sessions and road trips a week or two out. See the whole picture before you commit.
Muskegon sits on the eastern shore of Lake Michigan, directly in the path of westerly winds that build across 80+ miles of open water before hitting Pere Marquette Beach. That fetch turns moderate winds into legitimate surf — Lake Michigan has produced 10-foot-plus swell during strong fall storms.
Kiteboarding at Muskegon State Park offers a wide, sandy beach with good deep-water access. SW to W winds are gold — cross-onshore angle, clean face, and enough power to pull you upwind. N winds can fire in fall and create the best surf days, often 4–6 feet with good shape.
The challenge is that Lake Michigan conditions change fast. A morning glassoff can become a 20-knot blow by noon, or vice versa. WindStoke's realtime alerts via MKGM4 buoy data mean you're notified the moment conditions cross your threshold — not after you've already made the drive.
LAKE-BREEZE CALLS · MUSKEGON
A lake breeze (thermal wind) is the onshore wind that fills in on a hot afternoon. No forecast model predicts it. WindStoke tells you the morning it’s coming, so you get more days on the water.
Since June 6 we’ve called it 40 mornings at Muskegon and it showed 23 times. The forecast had those afternoons at 9 kt. They blew 14.
Called: our morning lake-breeze watch flagged that afternoon at Muskegon. Came in: the wind at the meter (MKGM4) turned onshore and built. Forecast: the model forecast’s afternoon peak for the spot as of that morning (HRRR). Blew: the afternoon’s peak sustained wind at the meter. 10 kt is about the least you can ride, on a big kite or a foil. The 9 and 14 kt above are averages over the called days it showed with a forecast on file (15). The last 5 calls are listed, misses included; 9 calls when the meter was down are left out. On the 59 mornings we stayed quiet, a lake breeze showed 9 times (every other graded morning, including the ones the watch saw primed but held back). Only spots where the call has beaten the quiet mornings get this card, and those are the spots it goes out from, by push or email.
Every night we lock in tomorrow's call for this spot. Every morning we score yesterday's against the MKGM4 meter. Both halves, last 90 days.
Scored on 204 rider-days: the call made the night before, against the meter 6am–6pm, wind-criterion alerts only, rideable meaning two or more hours at the rider's own floor with gust and direction as they set them. Nothing here is written by hand.
MKGM4, the morning after, Wed 7 Oct
Yesterday the Muskegon CG Station meter topped out at 15.9 kt at 6 am. The night before, NWS said 10 kt, Forecast Lab — what Premium is served — 11.5, the other 4 models 11.3–13.9 kt. We called it Solid against a 15 kt floor, and the day never got there. That morning’s lake-breeze watch found the day not primed for a lake breeze, and none came.
One day is an illustration, not a record — a model that reads low every day will still land one. The number that means anything is the scored one over 90 days, in how our calls are graded. Over the 14 days in this card the call was right on 11 of the 14 that could be scored.
Each model row is the highest wind it forecast for the 6am–6pm window at this meter, taken from the freshest run that existed before midnight the night before — between 10 and 23 hours ahead, depending on the hour. A model with no run in that window shows no call; it is never filled in from a closer-range forecast. Raw rows are the provider's own numbers; NWS + this meter's bias is that forecast shaded by this station's own measured error. That correction is Premium: a Premium rider is served the corrected row, and a free or signed-out rider is served the raw NWS row above it. The meter's figure is the strongest reading of each hour from this station's stored observations. Hours over your floor are counted from those readings alone; rideable is the nightly scorer's verdict and also weighs gust, direction and waves, so the two numbers are not the same measurement and are never added. Knots throughout.